一臺服務器上常有多個用戶,不同項目可能會使用不同版本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