Debian系列操作系统安装CUDA+CUDNN+TensorFlow+Pytorch深度学习环境
1. 简介
在实验室中,很多同学出现了设备环境中各式各样的NVIDIA显卡加速环境的问题,在最近笔者也正在做一些项目,但是都不同程度遇到了一些比较棘手的环境问题,所以以这篇文章来说明一下较为合理的环境配置方案。这里笔者选择的操作系统是国产操作系统Deepin,至于其他Debian系列的操作系统,安装过程是类似的。
2. 安装显卡驱动
软件源驱动程序安装方法
这里强烈建议安装操作系统源上的驱动程序,因为每当系统更新的时候,源上的显卡驱动是按照本身发型版本的依赖关系来进行安装的,所以有比较好的兼容性。输入以下的命令就可以查看源上的闭源NVIDIA显卡驱动的版本号是什么样的:
apt-cache madison nvidia-driver
这里会显示出显卡驱动版本号。
对于上述的深度学习环境,我们选择不必要太新的,一般情况下选择显卡驱动版本在440.x
∼
\sim
∼ 470.x版本较为恰当,有些操作系统(例如Deepin)在安装的时候就会提示是否安装Deepin闭源显卡驱动程序,但是这些预安装显卡驱动程序并不能达到我们的要求,因保证系统的稳定性,一般选择较为老旧的显卡驱动作为操作系统的显卡驱动程序(390.x),这样并不能更好地配置深度学习环境。
下一步则是安装源上的驱动程序(以deepin V20.5为例)
sudo apt install nvidia-driver-bin # for deepin
对于ubuntu系统可以用以下的命令对源上的程序进行查询处理
ubuntu-drivers device
这样就可以列举出对应的驱动程序,安装对应的驱动程序即可
sudo apt install nvidia-drivers-470
官网下载程序安装方法
另外,当然也可以选择从官网下载对应的驱动程序进行安装。这里需要注意的是,有些电脑设置有secure boot,所以在设置启动文件的时候注意这个的设置。
在安装之前,注意要将nouveau驱动禁用,也就是在文件/etc/modprob.d/blacklist.conf
填写以下的内容禁用nouveau驱动
blacklist nouveau
options nouveau modeset=0
然后生成内核文件,注意对原来的内核文件进行备份处理
sudo cp /boot/initrd.img-XXX /boot/initrd.img-XXX.back
sudo cp /boot/vmlinuz-XXX /boot/vmlinuz-XXX.back
sudo update-initramfs -u
从官网下载好驱动程序之后,在安装驱动之前
首先安装gcc,make等一系列编译环境以及工具。
sudo apt install gcc-7 make
由于编译显卡需要一些内核编译的dev包还有一些headers,所以还需要安装以下的内核源码文件,这具体需要看显卡驱动需要什么样的内核,用以下的命令进行查询即可
apt search kernel
apt search headers
查找到对应的软件源文件之后,进行安装即可。(以Deepin V20.5为例)
sudo apt install linux-headers-5.10.101-amd64-desktop
3. 安装CUDA+CUDNN 环境
为了兼容TensorFlow 和Pytorch环境,通过TensorFlow官网和Pytorch官网查询,我们最终推荐选择以下的两种方案参考:
- CUDA11.2+CUDNN8.1
- CUDA10.2+CUDNN7.6.5
当然也可以选择以上两种环境同时安装,但是这里要注意的是,两种环境的安装注意在/usr/local/cuda/
文件夹当中出现的一些软链接错误的一些问题。
两种环境的安装方法是类似的,首先需要安装一些必要的安装包
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libgles2-mesa-dev
对于Debian系列的操作系统,可以选择Ubuntu18.04版本的(CUDA10.2+CUDNN7.6.5),以及Ubuntu20.04版本或者是Debian10版本的(CUDA11.2+CUDNN8.1)。为了保持软件的依赖关系稳定性,我们这里建议选择*.run
文件进行安装,下载完成之后,安装的命令如下所示:
- 对于CUDA10.2版本
sudo bash cuda_XX.XX.XX_XX.XX.XX --toolkit --toolkitpath=/usr/local/cuda-10.2 --librarypath=/usr/local/cuda-10.2 --samples --samplespath=$HOME/
CUDNN选择Linux x86-64版本进行安装。下载完成安装包之后,安装CUDNN7.6.5如下所示
tar -xvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
sudo mv cuda/include/* /usr/local/cuda-10.2/include/
sudo mv cuda/lib64/* /usr/local/cuda-10.2/lib64/
sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*
- 对于CUDA11.2版本
sudo bash cuda_XX.XX.XX_XX.XX.XX --toolkit --toolkitpath=/usr/local/cuda-10.2 --librarypath=/usr/local/cuda-10.2 --samples --samplespath=$HOME/
CUDNN依然选择Linux x86-64版本进行安装。下载完成安装包之后,安装CUDNN8.1如下所示
tar -xvf cudnn-11.2-linux-x64-v8.1.1.33.tgz
sudo mv cuda/include/* /usr/local/cuda-10.2/include/
sudo mv cuda/lib64/* /usr/local/cuda-10.2/lib64/
sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*
这样就可以将对应的CUDA包安装到/usr/local/cuda
,/usr/local/cuda-10.2
,/usr/local/cuda-11.2
文件夹当中,但是安装过程当中注意对cuda链接工具的更新操作,选择适合于自己的开发环境进行安装处理。
4. 安装TensorFlow 和Pytorch环境
首先可以建立一个虚拟环境
conda create -n tensorflowv15 python=3.7
conda create -n pytorchv16 python=3.7
conda create -n tensorflowv2 python=3.7
conda create -n pytorchv19 python=3.7
我们这里建立四个环境对应于不同的环境进行模型的训练,然后安装对应的安装包即可
Tensorflow1.15.0环境
pip install tensorflow-gpu==1.15.0
Tensorflow2.2.0环境
pip install tensorflow==2.2.0
Pytorch 环境
pip install pytorch==1.x
安装TensorFlow环境之后经常会出现以下的一些问题,我们这里以CUDA11.2+CUDNN8.1+Tensorflow2.7.0为例,经常会出现以下的一些库文件无法找到
libcudart.so.11.0,libcublas.so.11,libcublasLt.so.11,libcufft.so.10,libcurand.so.10,libcusolver.so.10,libcusparse.so.11,libcudnn.so.8
在这样的情形下,只需要将对应的文件做一个软链接即可,例如
sudo ln -s libcublas.so.11.4.1.1043 libcublas.so.11