中华视窗是诚信为本,市场在变,我们的诚信永远不变...
引言
由于官方给出的whl包安装教程太过简单,而且涉及到多卡多机并行需要安装的依赖库部分需要自己编译安装,对于大多数使用者而言有一定的环境配置成本(容易装崩)。
Conda作为一个相当友好的虚拟环境管理工具,不但能够帮助创建管理虚拟环境,避免对物理环境的污染(多少人自己或被别人搞崩过环境最后只能重装),同时Conda本身整合了大量做深度学习所需的基本库,如、cudnn等等。因此这里给出一个简单可行的Conda配置环境教程,减少使用者的环境配置学习门槛,同时保证不对操作系统的环境造成影响。
安装Conda
# miniconda python 3.9 version
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh
# use any version of miniconda,
# do not use anaconda
这里强烈建议使用而不是,后者虽然集成了很多常用库(大多数你都用不到),但庞大又冗杂。相较之下只有conda基础组建,需要的依赖库可以通过源直接下载。如果无法翻墙可修改为清华源:清华源帮助文档
sh Miniconda3-py39_4.9.2-Linux-x86_64.sh
# notice the installed path,
# normally the default path is /home/{your_user_name}/miniconda3 (~/miniconda3),
# like /home/test/miniconda3
# you can modify the path as you like
创建虚拟环境
conda create -n mindspore python=3.7.5 cudatoolkit=10.1 cudnn=7.6.5 gmp=6.1.2 nccl openmpi
# conda create -n {your_virtual_env_name} lib_1=version lib2=version lib3 ...
也可先创建环境后安装:
conda create -n mindspore
# conda create -n {your_virtual_env_name}
conda activate mindspore
# install library you need
conda install python=3.7.5 cudatoolkit=10.1 cudnn=7.6.5 gmp=6.1.2 nccl openmpi
这里简单说明:
只是部分cuda的编译链接库,仍然需要安装完整版cuda。但是不管你的操作系统安装的cuda版本是多少(假设为11.0),动态链接库会安装你需要的版本(10.1),这样可以保证你随意更换深度学习框架的低版本(如TF 1.2, 0.4)nccl保持最新版,理论上向下兼容目前只有4.0.2版本配置进入Conda虚拟环境时的环境变量
很多人在虚拟环境安装好了依赖的库之后,发现进入虚拟环境还是显示没有装,因为没有设置进入虚拟环境后环境变量的改动,所以会以为装了没用。这里给出修改步骤:
这里给出的
cd /data/miniconda3/envs/mindspore
# cd {your_path_to_install_conda}/envs/{your_virtual_env_name}
mkdir etc
mkdir etc/conda
# make the folder to set env vars,
# when you enter virutal env
# and quit virtual env
mkdir etc/conda/activate.d
mkdir etc/conda/deactivate.d
配置进入虚拟环境后加入的环境变量:
nano /data/miniconda3/envs/mindspore/etc/conda/activate.d/env_vars.sh
# nano /{your_path_to_install_conda}/envs/{your_virtual_env_name}/etc/conda/activate.d/env_vars.sh
.sh文件中加入环境变量:
# add library path
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/miniconda3/envs/mindspore/lib
# you should modify the code as:
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/{your_path_to_install_conda}/envs/{your_virtual_env_name}/lib
# then, add system path
export PATH=$PATH:/data/miniconda3/envs/mindspore/bin
# same as library path
# export PATH=$PATH:/{your_path_to_install_conda}/envs/{your_virtual_env_name}/bin
配置退出Conda虚拟环境时的环境变量
nano /data/miniconda3/envs/mindspore/etc/conda/deactivate.d/env_vars.sh
# nano /{your_path_to_install_conda}/envs/{your_virtual_env_name}/etc/conda/deactivate.d/env_vars.sh
.sh文件中定义目录和删除环境变量:
# set LD_LIBRARY_PATH you add when you enter virtual env
export MY_LD_PATH=/data/miniconda3/envs/mindspore/lib
# export MY_LD_PATH=/{your_path_to_install_conda}/envs/{your_virtual_env_name}/lib
# remove the path
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH/:${MY_LD_PATH}/}"
# set PATH you add when you enter virtual env
export MY_PATH=/data/miniconda3/envs/mindspore/bin
# export MY_PATH=/{your_path_to_install_conda}/envs/{your_virtual_env_name}/bin
# remove the path
export PATH="${PATH/:${MY_PATH}/}"
完成配置使用环境:
conda deactivate
conda activate mindspore
一些差异
直接使用Conda安装的依赖库与官网给出的版本有一定差异,见下表:
官网要求版本Conda版本
4.0.3
4.0.2
NCCL
2.7.6
2.8.3.1
由于根据官网提供的链接自行编译后加入环境变量,反而无法正确运行分布式并行训练教程(GPU)提供的测试代码,因此不选择官方给出的版本(也许在某些地方会有错,但目前使用无问题)。
本文在16卡V100的环境下进行测试,操作系统为.04,系统安装驱动版本418.152,Cuda版本10.2。测试分布式并行训练无问题。
若在其他环境下出现问题,欢迎留言反馈。