• 笔记本和台式机显卡驱动和安装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-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
    
  • 相关阅读:
    IOS8修改状态栏颜色
    iOS文件存储路径规定
    iOS+HTML5
    调用电话/获取通讯录
    iOS高级必备
    CoreData
    IOS 中的CoreImage框架
    CoreText
    CoreGpaphics
    iOS多线程 NSThread/GCD/NSOperationQueue
  • 原文地址:https://www.cnblogs.com/stacso/p/16010637.html
Copyright © 2020-2023  润新知