Conda 复制已有环境

由于服务器上本身已经有使用CUDA平台的ToD-BERT运行环境,仅需将此环境中所有使用GPU的库换为使用CPU的库即可:pytorch

查看已有环境

(base) dialogue@amax-13:/$ conda info --env
# conda environments:
#
base                  *  /media/HD1/dche/miniconda3
sum_env                  /media/HD1/dche/miniconda3/envs/sum_env
tod_bert                 /media/HD1/dche/miniconda3/envs/tod_bert
                         /media/HD1/miniconda3

创建新环境,并将原有环境中的所有包复制,并激活新建立的环境。

(base) dialogue@amax-13:/$ conda create -n tod_bert_cpu --clone tod_bert
Source:      /media/HD1/dche/miniconda3/envs/tod_bert
Destination: /media/HD1/dche/miniconda3/envs/tod_bert_cpu
Packages: 20
Files: 12683
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate tod_bert_cpu
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) dialogue@amax-13:/$ conda activate tod_bert_cpu
(tod_bert_cpu) dialogue@amax-13:/$ 

Conda配置环境中的包(卸载GPU版本、安装CPU版本)

Conda 查看环境中所有包的信息

(tod_bert_cpu) dialogue@amax-13:/$ conda list
# packages in environment at /media/HD1/dche/miniconda3/envs/tod_bert_cpu:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             4.5                       1_gnu  
anykeystore               0.2                      pypi_0    pypi
apex                      0.9.8.dev0               pypi_0    pypi
blessings                 1.7                      pypi_0    pypi
ca-certificates           2021.10.26           h06a4308_2  
certifi                   2021.10.8        py37h06a4308_0  
charset-normalizer        2.0.7                    pypi_0    pypi
click                     8.0.3                    pypi_0    pypi
cryptacular               1.6.2                    pypi_0    pypi
defusedxml                0.7.1                    pypi_0    pypi
filelock                  3.4.0                    pypi_0    pypi
future                    0.18.2                   pypi_0    pypi
gpustat                   0.6.0                    pypi_0    pypi
greenlet                  1.1.2                    pypi_0    pypi
hupper                    1.10.3                   pypi_0    pypi
idna                      3.3                      pypi_0    pypi
importlib-metadata        4.8.2                    pypi_0    pypi
joblib                    1.1.0                    pypi_0    pypi
libedit                   3.1.20210910         h7f8727e_0  
libffi                    3.2.1             hf484d3e_1007  
libgcc-ng                 9.3.0               h5101ec6_17  
libgomp                   9.3.0               h5101ec6_17  
libstdcxx-ng              9.3.0               hd4cf53a_17  
markupsafe                2.0.1                    pypi_0    pypi
ncurses                   6.3                  h7f8727e_2  
nltk                      3.5                      pypi_0    pypi
numpy                     1.18.1                   pypi_0    pypi
nvidia-ml-py3             7.352.0                  pypi_0    pypi
oauthlib                  3.1.1                    pypi_0    pypi
openssl                   1.0.2u               h7b6447c_0  
packaging                 21.3                     pypi_0    pypi
pastedeploy               2.1.1                    pypi_0    pypi
pbkdf2                    1.3                      pypi_0    pypi
pip                       21.2.2           py37h06a4308_0  
plaster                   1.0                      pypi_0    pypi
plaster-pastedeploy       0.7                      pypi_0    pypi
protobuf                  3.19.1                   pypi_0    pypi
psutil                    5.8.0                    pypi_0    pypi
ptvsd                     4.3.2                    pypi_0    pypi
pyparsing                 3.0.6                    pypi_0    pypi
pyramid                   2.0                      pypi_0    pypi
pyramid-mailer            0.15.1                   pypi_0    pypi
python                    3.7.0                h6e4f718_3  
python3-openid            3.2.0                    pypi_0    pypi
readline                  7.0                  h7b6447c_5  
regex                     2021.11.10               pypi_0    pypi
repoze-sendmail           4.4.1                    pypi_0    pypi
requests                  2.26.0                   pypi_0    pypi
requests-oauthlib         1.3.0                    pypi_0    pypi
sacremoses                0.0.46                   pypi_0    pypi
scikit-learn              0.23.2                   pypi_0    pypi
scipy                     1.7.2                    pypi_0    pypi
sentencepiece             0.1.96                   pypi_0    pypi
setuptools                58.0.4           py37h06a4308_0  
simplejson                3.17.2                   pypi_0    pypi
six                       1.15.0                   pypi_0    pypi
sqlalchemy                1.4.27                   pypi_0    pypi
sqlite                    3.33.0               h62c20be_0  
tensorboardx              2.1                      pypi_0    pypi
threadpoolctl             3.0.0                    pypi_0    pypi
tk                        8.6.11               h1ccaba5_0  
tokenizers                0.8.1rc1                 pypi_0    pypi
torch                     1.6.0                    pypi_0    pypi
tqdm                      4.31.1                   pypi_0    pypi
transaction               3.0.1                    pypi_0    pypi
transformers              3.0.2                    pypi_0    pypi
translationstring         1.4                      pypi_0    pypi
typing-extensions         4.0.0                    pypi_0    pypi
urllib3                   1.26.7                   pypi_0    pypi
velruse                   1.1.1                    pypi_0    pypi
venusian                  3.0.0                    pypi_0    pypi
webob                     1.8.7                    pypi_0    pypi
wheel                     0.37.0             pyhd3eb1b0_1  
wtforms                   3.0.0                    pypi_0    pypi
wtforms-recaptcha         0.3.2                    pypi_0    pypi
xz                        5.2.5                h7b6447c_0  
zipp                      3.6.0                    pypi_0    pypi
zlib                      1.2.11               h7b6447c_3  
zope-deprecation          4.4.0                    pypi_0    pypi
zope-interface            5.4.0                    pypi_0    pypi
zope-sqlalchemy           1.6                      pypi_0    pypi

卸载原有的GPU版本torch,貌似原先是使用pip安装的,在尝试conda卸载无果后使用pip卸载成功。

(tod_bert_cpu) dialogue@amax-13:/$ conda remove pytorch
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are missing from the target environment:
  - pytorch


(tod_bert_cpu) dialogue@amax-13:/$ pip uninstall torch
Found existing installation: torch 1.6.0
Uninstalling torch-1.6.0:
  Would remove:
    /media/HD1/dche/miniconda3/envs/tod_bert_cpu/bin/convert-caffe2-to-onnx
    /media/HD1/dche/miniconda3/envs/tod_bert_cpu/bin/convert-onnx-to-caffe2
    /media/HD1/dche/miniconda3/envs/tod_bert_cpu/lib/python3.7/site-packages/caffe2/*
    /media/HD1/dche/miniconda3/envs/tod_bert_cpu/lib/python3.7/site-packages/torch-1.6.0.dist-info/*
    /media/HD1/dche/miniconda3/envs/tod_bert_cpu/lib/python3.7/site-packages/torch/*
Proceed (Y/n)? y
  Successfully uninstalled torch-1.6.0

安装cpu版本torch

(tod_bert_cpu) dialogue@amax-13:/$ conda install pytorch==1.6.0 torchvision==0.7.0 cpuonly -c pytorch
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /media/HD1/dche/miniconda3/envs/tod_bert_cpu

  added / updated specs:
    - cpuonly
    - pytorch==1.6.0
    - torchvision==0.7.0


The following packages will be downloaded:

    | package               | build                               |
    | --------------------- | ----------------------------------- |
    | blas-1.0              | mkl           6 KB                  |
    | cpuonly-2.0           | 0           2 KB  pytorch           |
    | freetype-2.11.0       | h70c0345_0         618 KB           |
    | giflib-5.2.1          | h7b6447c_0          78 KB           |
    | intel-openmp-2021.4.0 | h06a4308_3561         4.2 MB        |
    | jpeg-9d               | h7f8727e_0         232 KB           |
    | lcms2-2.12            | h3be6417_0         312 KB           |
    | libpng-1.6.37         | hbc83047_0         278 KB           |
    | libtiff-4.2.0         | h85742a9_0         502 KB           |
    | libwebp-1.2.0         | h89dd481_0         493 KB           |
    | libwebp-base-1.2.0    | h27cfd23_0         437 KB           |
    | lz4-c-1.9.3           | h295c915_1         185 KB           |
    | mkl-2021.4.0          | h06a4308_640       142.6 MB         |
    | mkl-service-2.4.0     | py37h7f8727e_0          56 KB       |
    | mkl_fft-1.3.1         | py37hd3c417c_0         172 KB       |
    | mkl_random-1.2.2      | py37h51133e4_0         287 KB       |
    | ninja-1.10.2          | py37hd09550d_3         1.5 MB       |
    | numpy-1.21.2          | py37h20f2e39_0          23 KB       |
    | numpy-base-1.21.2     | py37h79a1101_0         4.8 MB       |
    | olefile-0.46          | py37_0          50 KB               |
    | pillow-8.4.0          | py37h5aabda8_0         644 KB       |
    | pytorch-1.6.0         | py3.7_cpu_0        59.4 MB  pytorch |
    | pytorch-mutex-1.0     | cpu           3 KB  pytorch         |
    | torchvision-0.7.0     | py37_cpu        10.3 MB  pytorch    |
    | zstd-1.4.9            | haebb681_0         480 KB           |
    ------------------------------------------------------------
                                           Total:       227.4 MB

The following NEW packages will be INSTALLED:

  blas               pkgs/main/linux-64::blas-1.0-mkl
  cpuonly            pytorch/noarch::cpuonly-2.0-0
  freetype           pkgs/main/linux-64::freetype-2.11.0-h70c0345_0
  giflib             pkgs/main/linux-64::giflib-5.2.1-h7b6447c_0
  intel-openmp       pkgs/main/linux-64::intel-openmp-2021.4.0-h06a4308_3561
  jpeg               pkgs/main/linux-64::jpeg-9d-h7f8727e_0
  lcms2              pkgs/main/linux-64::lcms2-2.12-h3be6417_0
  libpng             pkgs/main/linux-64::libpng-1.6.37-hbc83047_0
  libtiff            pkgs/main/linux-64::libtiff-4.2.0-h85742a9_0
  libwebp            pkgs/main/linux-64::libwebp-1.2.0-h89dd481_0
  libwebp-base       pkgs/main/linux-64::libwebp-base-1.2.0-h27cfd23_0
  lz4-c              pkgs/main/linux-64::lz4-c-1.9.3-h295c915_1
  mkl                pkgs/main/linux-64::mkl-2021.4.0-h06a4308_640
  mkl-service        pkgs/main/linux-64::mkl-service-2.4.0-py37h7f8727e_0
  mkl_fft            pkgs/main/linux-64::mkl_fft-1.3.1-py37hd3c417c_0
  mkl_random         pkgs/main/linux-64::mkl_random-1.2.2-py37h51133e4_0
  ninja              pkgs/main/linux-64::ninja-1.10.2-py37hd09550d_3
  numpy              pkgs/main/linux-64::numpy-1.21.2-py37h20f2e39_0
  numpy-base         pkgs/main/linux-64::numpy-base-1.21.2-py37h79a1101_0
  olefile            pkgs/main/linux-64::olefile-0.46-py37_0
  pillow             pkgs/main/linux-64::pillow-8.4.0-py37h5aabda8_0
  pytorch            pytorch/linux-64::pytorch-1.6.0-py3.7_cpu_0
  pytorch-mutex      pytorch/noarch::pytorch-mutex-1.0-cpu
  six                pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
  torchvision        pytorch/linux-64::torchvision-0.7.0-py37_cpu
  zstd               pkgs/main/linux-64::zstd-1.4.9-haebb681_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
olefile-0.46         | 50 KB     | ############################################################################################# | 100% 
numpy-base-1.21.2    | 4.8 MB    | ############################################################################################# | 100% 
libpng-1.6.37        | 278 KB    | ############################################################################################# | 100% 
freetype-2.11.0      | 618 KB    | ############################################################################################# | 100% 
libwebp-base-1.2.0   | 437 KB    | ############################################################################################# | 100% 
blas-1.0             | 6 KB      | ############################################################################################# | 100% 
libtiff-4.2.0        | 502 KB    | ############################################################################################# | 100% 
torchvision-0.7.0    | 10.3 MB   | ############################################################################################# | 100% 
zstd-1.4.9           | 480 KB    | ############################################################################################# | 100% 
pytorch-1.6.0        | 59.4 MB   | ############################################################################################# | 100% 
libwebp-1.2.0        | 493 KB    | ############################################################################################# | 100% 
jpeg-9d              | 232 KB    | ############################################################################################# | 100% 
intel-openmp-2021.4. | 4.2 MB    | ############################################################################################# | 100% 
lcms2-2.12           | 312 KB    | ############################################################################################# | 100% 
mkl-service-2.4.0    | 56 KB     | ############################################################################################# | 100% 
pytorch-mutex-1.0    | 3 KB      | ############################################################################################# | 100% 
giflib-5.2.1         | 78 KB     | ############################################################################################# | 100% 
mkl_random-1.2.2     | 287 KB    | ############################################################################################# | 100% 
cpuonly-2.0          | 2 KB      | ############################################################################################# | 100% 
mkl-2021.4.0         | 142.6 MB  | ############################################################################################# | 100% 
ninja-1.10.2         | 1.5 MB    | ############################################################################################# | 100% 
mkl_fft-1.3.1        | 172 KB    | ############################################################################################# | 100% 
pillow-8.4.0         | 644 KB    | ############################################################################################# | 100% 
lz4-c-1.9.3          | 185 KB    | ############################################################################################# | 100% 
numpy-1.21.2         | 23 KB     | ############################################################################################# | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

配置并运行BERT

直接使用同CPU的命令CUDA_VISIBLE_DEVICES=0 ./run_tod_lm_pretraining.sh 0 bert bert-base-uncased save/pretrain/ToD-BERT-MLM --only_last_turn --data_path ./../dialog_datasets,貌似没有任何问题地跑起来了?

由于项目要求,需要限制模型使用cpu的核数。

使用命令top -d 1查看目前cpu占用情况,顺便查看跑BERT模型的python进程PID

使用命令taskset -cp <cpu list> <pid>进行绑核操作,ep.taskset -cp 0,1,2,3 94434

Reference

Anaconda-用conda创建python虚拟环境