• Ubuntu18.04 安装 CUDA 配置 Pytorch 踩坑过程


    最近由于项目原因,需要使用 Pytorch 进行深度学习的算法开发,于是采购了 Dell T640 服务器并搭载两张 Nvidia 的 GeForce RTX3090 GPU,服务器本身已安装好 Ubuntu18.04 系统和 Nvidia 显卡驱动,要想正常使用 GPU 版的 Pytorch,后续还需要手动安装 CUDA,Nvidia APEX 等。以下详细介绍踩坑全过程,很多地方理解不深,恳请通过留言补充。


    1. 关于 CUDA 版本:

    配置深度学习 Pytorch 环境的大致步骤一般为:安装 Nvidia 驱动 -> 安装 CUDA -> 安装 Pytorch,但在安装好显卡驱动后,可以通过 nvidia-smi 查询显卡信息,这时候如下图所示在右上角也可以看到一个 CUDA 版本的信息 CUDA Version: 11.1

    但是这时通过 nvcc --version 我查不到 CUDA 信息,也就是 nvcc --version 和 nvidia-smi 显示的 CUDA 版本不同,这是因为 CUDA 有两类主要的 API,一种是 Driver API,一种是 Runtime API。而这两种 API 都有对应的 CUDA 版本,Driver API 依赖于 Nvidia Driver,由 nvidia-smi 可以查看,Runtime API 可通过 nvcc --version 查看,一般 Driver API version >= Runtime API version 即可。

      

    用于支持 Driver API 的必要文件(如 libcuda.so 和 nvidia-smi)是由 GPU Driver Installer 安装的。而用于支持 Runtime API 的必要文件(如 libcudart.so 和 nvcc)则是由 CUDA Toolkit Installer 安装的,CUDA Toolkit Installer 有时可能会集成了 GPU Driver Installer。nvcc 是与 CUDA Toolkit 一起安装的 CUDA compiler-driver tool,它只知道它自身构建时的 CUDA Runtime 版本,不知道安装了什么版本的 GPU Driver,甚至不知道是否安装了 GPU Driver。综上,Driver API 和 Runtime API 的 CUDA 版本不一致是因为我使用的是单独的 GPU Driver Installer,而不是 CUDA Toolkit Installer 里的 GPU Driver Installer。因此还需要单独安装 CUDA Toolkit 的 11.1 以下版本。

     

    GPU Driver 版本、CUDA 版本和 cuDNN 版本应该相对应,一般安装顺序为:GPU Driver -> CUDA Toolkit -> cuDNN


      

    2. 禁用 Nouveau 驱动:

    在安装 CUDA 前,需要通过以下命令禁用 Nouveau:

    # lsmod | grep nouveau

    若无内容输出,则禁用成功,否则可通过以下操作来禁用 Nouveau:

    # sudo vim /etc/modprobe.d/blacklist.conf    //打开blacklist.conf

    然后插入以下语句:

    blacklist nouveau
    options nouveau modeset=0

    然后 :wq! 保存退出,再禁用 Nouveau:

    # echo options nouveau modeset=0
    # sudo update-initramfs -u

      

    3. 下载和安装 CUDA Toolkit:

    CUDA Toolkit 的安装,在下载 CUDA Toolkit 的时候要注意版本应和之前安装的显卡驱动版本相兼容匹配,可通过官方文档查看

    由于之前已安装的 GPU Driver 版本为 455.23,而 CUDA Driver API 的版本为 11.1,需要满足 GPU Driver -> CUDA Toolkit,结合上图显卡版本要求,最终选定安装 CUDA Toolkit 11.0。

    安装方式有 runfile 和 deb 两种,这里我尝试的是 runfile 方法,前往官网一步步选择,如下图所示:

    选择好之后在下面官方推荐可以直接在命令行用 wget 进行下载,然后安装:

    $ wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run
    $ sudo sh cuda_11.0.2_450.51.05_linux.run

    但如果 wget 相对浏览器直接下载慢太多的话也可以直接 copy 这个网址到浏览器直接下载,再传到服务器,然后执行第二句进行安装。安装的时候记得不要再选择安装 GPU Driver 了,其余都选 yes 即可。另外,如果需要卸载 CUDA Toolkit,需要在 /usr/local/cuda-11.0/bin 目录中找到并运行 cuda-uninstaller:

    $ sudo /usr/local/cuda-11.0/bin/cuda-uninstaller
    $ sudo rm -rf /usr/local/cuda-11.0/

    如果需要卸载 GPU Driver 重新安装:

    $ sudo /usr/bin/nvidia-uninstall

    4. 设置环境变量:

    上述安装完成之后还需要添加环境变量,具体操作就是打开 .bashrc 文件插入两行环境变量,首先用 vim 打开 .bashrc 文件,这个文件在 ~ 目录下:

    $ vim ~/.bashrc

    然后按 i 进入 vim 的编辑模式进行插入,在最后插入两行环境变量:

    export PATH="/usr/local/cuda-11.0/bin:$PATH"
    export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"

    然后按 esc 退出编辑模式,在按 :wq! 回车保存退出,然后执行:

    $ source ~/.bashrc

    完成环境变量配置。


    5. 测试:

    至此 CUDA Toolkit 已经完全安装完成,现在可以测试一下:

    $ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
    $ sudo make
    $ ./deviceQuery

    输出以下内容则证明安装成功:


    6. CUDA 多版本管理:

    CUDA Toolkit 默认安装在 /usr/local ,可以使用 ls -l /usr/local | grep cuda 查看该目录下有哪些 CUDA 版本,如下图所示:

    上图输出表示当前系统安装了CUDA Toolkit 10.2 和 11.0 两个版本,这是因为刚开始的时候我安装了 10.2,后面发现与 Pytorch 还有 Nvidia apex 混合精度运算库匹配有问题,所以又直接多装了一个 11.0,而原来的 10.2 并没有卸载。

    其中 cuda -> /usr/local/cuda-11.0 是一个软链接,将 /usr/local/cuda 链接到了 /usr/local/cuda-11.0 目录,表示当前系统使用的是 cuda-11.0 版本,如果想在已安装的 cuda 中进行版本更改,则删除当前软链接,然后重新建立软链接指向想要的版本,最后修改环境变量与想要修改的版本一致即可,例如想改用 10.2:

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

    记得修改环境变量,或者,可以将 ~/.bashrc 中环境变量的 /usr/local/cuda-11.0/ 全都改成 /usr/local/cuda/ ,之后再切换 CUDA 版本的时候就不再需要修改环境变量了。


    7. Pytorch 安装:

    CUDA Toolkit 安装好之后,就可以安装 Pytorch 的 GPU 版本了:

    直接用 pip 安装非常慢,可以更换 pip 源为国内的阿里云源:

    $ mkdir -p ~/.pip
    $ touch ~/.pip/pip.conf
    $ vim ~/.pip/pip.conf

    插入如下语句:

    [global]
    timeout = 6000
    index-url = https://mirrors.aliyun.com/pypi/simple/
    trusted-host = mirrors.aliyun.com

    以上为 Ubuntu 系统,如果是 win10:

    先打开文件资源管理器,然后在路径那里输入:%APPDATA%,如下图所示:

    然后新建一个 pip 目录并新建一个文件 pip.ini,然后输入以下内容:

    [global]
    trusted-host=mirrors.aliyun.com
    index-url=http://mirrors.aliyun.com/pypi/simple/

    注意,无论是用 pip 还是 pip3,都是按上述流程,创建的都是 pip 文件夹。安装完成之后可以通过以下方式查看当前 Pytorch 使用的 CUDA 版本:

    import torch
    print(torch.version.cuda)

  • 相关阅读:
    TCP和UDP协议的区别以及原理
    MySql字段增删改语句
    Go RabbitMQ
    参考
    RabbitMQ Go—RPC
    RabbitMQ——发布/订阅
    RabbitMQ——路由
    RabbitMQ——工作队列
    RabbitMQ—HelloWorld
    Rabbitmq安装
  • 原文地址:https://www.cnblogs.com/hmlovetech/p/14346202.html
Copyright © 2020-2023  润新知