一台服务器上常有多个用户,不同项目可能会使用不同版本python(包),用户可以使用anaconda/virtualenv安装个人的python环境。这样用户用个人账号就可以管理自己所需的环境,不需要root权限,也可以避免不同环境糅杂在一起。
同理,不同项目可能会依赖不同版本的CUDA,用户可以根据需要修改环境变量,指定自己需要使用的CUDA版本。管理员只需确保nVidia驱动版本高于用户所需的最高版本即可,不需要频繁修改系统默认的CUDA版本。
以anaconda安装python3.7,使用cuda10.1版本的pytorch为例:
0、从清华镜像下载Anaconda
$curl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.10-Linux-x86_64.sh
下载好后进入文件夹,在命令行中输入:
$ bash Anaconda3-2019.10-Linux-x86_64.sh
按提示安装,安装过程中需要允许conda 在 ~/.bashrc中添加路径
安装好后,由于在~/.bashrc中新加了东西,需要source ~/.bashrc一下
$ source ~/.bashrc
1、修改conda镜像
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
2、创建conda python虚拟环境
conda create -n py3.7-torch1.3-cuda10.1 python=3.7
3、查看/激活虚拟环境
conda env list
conda activate py3.7-torch1.3-cuda10.1
4、安装pytorch
conda install pytorch torchvision cudatoolkit=10.1
(注意安装pytorch去掉-c pytorch,这个是指定channel (-c), 加了相当于是从官网拿,清华源没用了就----Haowen Qiu)
如果在配置的过程中发生了什么问题,可以先退出虚拟环境然后移除该虚拟环境,再重新配置
conda remove -n pytorch --all
4、创建环境启动时的脚本
我的cuda-10.1放在~/tools/cuda-10.1,启动虚拟环境时,可以把相关路径导入环境变量LD_LIBRARY_PATH
mkdir -p ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/activate.d
vim ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/activate.d/activate.sh
添加内容
#!/bin/sh
ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/storage04/zhuangweiji/tools/cuda-10.1/lib64:/home/storage04/zhuangweiji/tools/cuda-10.1/extras/CUPTI/lib64:/home/storage04/zhuangweiji/tools/cuda-10.1:$LD_LIBRARY_PATH
添加执行权限
chmod +x ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/activate.d/activate.sh
5、创建环境关闭时的脚本
mkdir -p ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/deactivate.d
vim ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/deactivate.d/deactivate.sh
添加内容
#!/bin/sh
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH
unset ORIGINAL_LD_LIBRARY_PATH
添加执行权限
chmod +x ~/tools/anaconda3/envs/py3.7-torch1.3-cuda10.1/etc/conda/deactivate.d/deactivate.sh
6、验证
$ echo $LD_LIBRARY_PATH
/home/storage04/zhuangweiji/tools/cuda-10.1/lib64 .....
$ source activate py3.7-torch1.3-cuda10.1
(py3.7-torch1.3-cuda10.1) $ python
>>> import torch
>>> x = torch.rand(1, 3)
>>> print(x)
tensor([[0.9539, 0.2325, 0.5243]])
>>> torch.cuda.is_available()
True
$ conda deactivate