距离上次搭建环境已经过去了五个月了,在这期间pytorch终于支持了CUDA9.0和9.1,于是升级版本迫在眉睫,这就开始动手吧。
整个升级计划步骤很清晰:卸载原显卡驱动,安装新显卡驱动,卸载CUDA8.0,安装CUDA9.1,卸载cuDNN7.0,安装cuDNN7.1,卸载Pytorch-cuda8.0,安装Pytorch-cuda9.1。
- 准备工作
预先下载好更新的显卡驱动,CUDA9.1以及三个补丁,cuDNN7.1的压缩文件,仍然放在/home/你的用户名/Downloads下
- 更新显卡驱动
由于nouveau上次仍然处于被屏蔽的状态,我们不需要再关它一次,按下Ctrl+Alt+F1,登录账户,然后输入:
sudo service lightdm stop
接下来卸载原有显卡驱动,输入:
sh -s
sh ./NVIDIA.run --unistall
这里要注意,NVIDIA.run实际是你当时安装的文件的名字,希望你没有删了它。然后就和之前安装的步骤一样:
cd /home/你的用户名/Downloads
sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run
sudo ./NVIDIA-Linux-x86_64-390.48.run
具体可以参考上一篇搭建指南,最后别忘了重启电脑。
- 更新CUDA9.1
首先卸载原有的CUDA8.0,仍然是按下Ctrl+Alt+F1,登录账户,然后输入:
sudo service lightdm stop
然后开始卸载:
sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
卸载之后系统会提示你没有卸载干净,回到原来的安装路径下,我们会看到剩下的是原来测试用的deviceQuery和cuDNN文件。(在路径之下我们会看到两个文件夹,一个叫cuda-8.0,一个叫cuda,其实cuda文件夹只是cuda-8.0的镜像,可能是为了在编辑配置文件时不用输入版本号,这样在升级之后也就不用再去修改某些配置文件了,为了防止新版本的cuda发生冲突,我们要将文件夹清理干净。)
这些文件的权限很高,你必须去终端内一个一个的改变权限来删除,包括文件夹,举一个例子:
sudo chmod 777 / usr/local/cuda-8.0/include
sudo rm –r / usr/local/cuda-8.0/include
权限777将使你获得文件的读写权限,就可以执行删除了,rm命令表示remove,-r表示移除整个路径,重复三次这个步骤直至把原文件夹删除干净。
然后的步骤和安装cuda8.0时完全一样,按下Ctrl+Alt+F1,登录账户,然后输入:
sudo service lightdm stop
cd /home/pil/Downloads
sudo sh cuda_9.1.85_387.26_linux.run
具体步骤可以参考上一篇
安装完成后测试例子:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
配置环境变量的过程和上一篇完全一致,把所有的cuda-8.0改成cuda-9.1即可。
- 更新cuDNN
由于在卸载CUDA的时候就已经把cuDNN一起卸载掉了,所以直接安装新的安装文件即可,过程也和早期版本完全相同,只需要注意相应地按照实际文件名修改指令:
tar -zxvf cudnn-9.1-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.1/lib64
sudo chmod a+r /usr/local/cuda-9.1/include/cudnn.h/usr/local/cuda-9.1/lib64/libcudnn*
更新网络连接:
cd /usr/local/cuda-9.1/lib64/
sudo ln -sf libcudnn.so.7.1.2 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
- 更新Pytorch
首先卸载原来的pytorch:
conda uninstall pytorch
conda uninstall libtorch
安装新版的Pytorch:
conda install pytorch torchvision cuda91 –c soumith
如果网络连接不上,试一试:
pip3 install http://download.pytorch.org/whl/cu75/torch-0.3.1 -cp36-cp36m-linux_x86_64.whl
至此升级就算完成了,Anaconda对于更新了torch代码可能会报警,不过不影响使用。想忽略warning可以在代码中加入如下代码:
import warnings
warnings.filterwarnings("ignore")
如果实在终端运行程序,可以再python和文件之间加入-W ignore:
python -W ignore file.py