笔记本和台式机显卡驱动和安装Pytorch,TensorFlow等主流的深度学习框架问题详解

1、区分显卡版本
RTX30系列的显卡只支持cuda11以上的版本,这是一个天坑,在安装的时候一定要区分开来,不然安装半天cuda10版本的,根本不能用,原因是因为算力不同。对于其他版本的cuda,主要通过命令nvidia-smi来查看,只要不高于显示的cuda版本即可。

2、区分Pytorch,TensorFlow版本
Pytorch好像可以向下兼容,不过Pytorch要严格对应Torchvision的版本。对应方式,就按照官网给的命令来安装,保证可以对应成功,不过要根据自己的cuda版本来找到对应的命令。
TensorFlow2.X版本之间是完全不兼容的,所以要安装和自己cuda对应版本的框架
对于上述两个框架都对cuda有一定的要求,根据我的尝试发现,如果期望的cuda版本和本机安装的cuda版本相近,可以conda安装cudatoolkit来调用,这样避免了系统cuda版本不对应重复安装cuda,如果本机cuda版本是cuda11.x,而框架需要的cuda是10.x,cudatoolkit方法是不可行的。安装方法如下:

# 前提是已激活conda的某个环境,然后安装,其中=后面是框架所需对应cuda版本号
$ conda install cudatoolkit=11.2 

3、安装显卡驱动
显卡驱动安装有多种方法,有一种方法是直接命令安装。下面讲述命令安装方法,我的电脑是台式机,系统是Ubuntu18.04,经过实践证明可以正常使用

# 查看推荐安装的驱动
$ ubuntu-drivers devices
# 安装推荐版本的驱动
$ sudo ubuntu-drivers autoinstall
# 也可以选择手动安装其他驱动(有些笔记本不支持高版本的驱动(表现为安装后,不能进入系统界面,一直黑屏,F2可以进grub卸载驱动,重新安装),尝试安装非推荐版本低(查看别人都装什么版本的)的驱动可解决问题)
# 同时也可以安装下面的命令安装,这样就可以安装对应版本的驱动
$ sudo apt install nvidia-driver-470
# 安装完成后,**重启**,输入命令查看是否安装完成和支持最高版本cuda
$ nvidia-smi
# 在这里再次强调关于cuda版本问题,首先去查看,Pytorch现在支持什么版本的cuda,然后查看是否支持超过当前驱动支持的版本(右上角),如果没有就可以安装Pytorch对应的版本,例如我的支持最高版本为11.4,Pytorch稳定版支持cuda11.1,所以要安装cuda11.1才能正常工作。(尝试安装10.2发现算力不匹配,报sm_86的错误)

4、安装cuda和cudnn
4.1、安装cuda

# 各版本下载连接https://developer.nvidia.com/cuda-toolkit-archive
# 本文以cuda11.4举例,来安装cuda和cudnnn,如果是20系列的显卡,建议装10.2版本的cuda,30系列可以装11.3
# 下载11.4版本runfile
$ wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
# 下载好后,运行安装cuda,按照提示安装,到了安装驱动那一步,要**取消安装驱动**,其他默认即可
$ sudo sh cuda_11.4.0_470.42.01_linux.run
# 在~/.bashrc添加环境变量
$ echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc
$ echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH " >> ~/.bashrc
# 更新以下,使其生效
$ source ~/.bashrc
# 查看是否安装完成
$ nvcc -V

4.2、安装cudnn,谨记安装的cudnn和cuda版本对应,本文cuda11.4对应cudnn版本是8.2.2.26

# 下载连接:https://developer.nvidia.com/cudnn
$ cd Downloads/ && tar zxvf cudnn-11.4-linux-x64-v8.2.2.26.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-11.4/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.4/lib64
$ sudo chmod a+r /usr/local/cuda-11.4/include/cudnn.h 
$ sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn*

5、安装多个版本的cuda和cudnn
5.1、安装另一个版本的cuda

# 本文以10.2版本作为例子,官网下载cuda10.2
$ wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
# 安装过程中,最后一个选项,选择是否cuda symbol link,选NO
$ sudo sh cuda_10.2.89_440.33.01_linux.run

5.2、安装cuda10.2对应版本的cudnn

# 下载连接:https://developer.nvidia.com/cudnn
$ cd Downloads/ && tar zxvf cudnn-10.2-linux-x64-v8.3.0.98.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.2/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64
$ sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h 
$ sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*

5.3、查看当前软连接版本

$ cd /usr/local
$ stat cuda

5.4、删除之前软连接,然后添加cuda10.2版本的软连接

$ cd /usr/local
$ sudo rm -rf cuda
$ sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda

5.5、问题说明
30系列显卡安装10.2版本的cuda会出现问题的,问题大概描述是The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 .原因是sm_86表示显卡的算力是8.6,而pytorch的算力最高只有7.0,所以显卡不支持cuda10系列
6、安装Pytorch
安装Pytorch建议在conda虚拟环境中安装,简单说明,显卡驱动已经安装完成,同时cuda和cudnn也配置完毕,然后就可以去官网安装Pytorch,如果自己安装,一定要注意Pytorch的版本和Torchvision的 版本对应,可以通过链接查看安装的版本。下面说明如何检测安装成功:

$ python
>> import torch
>> torch.cuda.is_available() # 返回True表示成功

7、安装Tensorflow
安装Pytorch建议在conda虚拟环境中安装,简单说明,显卡驱动已经安装完成,同时cuda和cudnn也配置完毕。同样也是安装过程不再说明,去官网安装Tensorflow,同样这里贴上测试是否安装成功。

$ python
>> import tensorflow as tf
>> tf.test.is_gpu_available() # 返回True表示成功

8、关闭内核更新
这个步骤一定要做的,不然你会发现,那天开机之后显卡驱动没有了,然后电脑黑屏了,或者cuda没有了。所以建议一定要关闭内核更新。关闭内核更新需要两步:
1、首先打开Software & Updates,然后找到Update把上面的三个对勾都取消掉,然后设置从不更新。
2、输入下面命令,将文件中的"1"全部更改为"0"

$ sudo gedit /etc/apt/apt.conf.d/10periodic
# 如果内核已经更新了,那么可以通过下面命令查看目前安装的内核
$ dpkg --get-selections | grep linux-image
# 使用下面命令查看当前内核版本
$ uname -a
# 当你进入系统的时候,从Advance for ubuntu 进入,然后选择内核进入,多次重启找到你安装显卡版本的内核进入系统,然后输入下面命令,将该内核作为默认启动
$ sudo apt-mark hold linux-image-generic linux-headers-generic
posted @ 2022-04-03 21:10  stacso  阅读(458)  评论(0编辑  收藏  举报