场景描述

搞深度学习时需要先搭建环境,需要折腾显卡驱动、cuda、cudnn、以及各种深度学习框架(TensorFlow、Pytorch等)。光听这些名词有好些人都迷糊了,更不要提解决他们之间的不兼容,完成环境搭建了。这里先简单解释上述名词,不求高深与专业,理解他们处于什么位置就行。


通俗解释

  • 显卡:一块焊了GPU 芯片的电路板,上面还有电容电阻以及其他辅助芯片。 因为有些复杂计算 CPU 效率太低了,所以放在 GPU 中执行运算。类比的, cpu主板也就是一块焊了 CPU 、辅助芯片、电容电阻的电路板。至于独立显卡与集成显卡的概念,自己查吧。

  • 显卡驱动 :GPU 是硬件,操作系统怎么识别并与它传输数据呢?这就需要在操作系统上装显卡驱动了。目前 GPU 厂商国外有 inter、nvidia、amd三家巨头,国内有景嘉微、中船重工等厂商。不同厂商的 GPU 都有各自的显卡驱动,因为还要适配操作系统,所以每个型号的 GPU 都有 windows 和 linux 两套版本的显卡驱动。

  • CUDA:GPU 的运算能力很强大,如果只用在做简单的、特定的计算任务那就有点亏。但是直接操作 GPU 难度又有点高,英伟达就设计了一个 GPU 的通用计算框架构(框架):cuda,并且开发实现 cuda 意图的完整的工具:CUDA Toolkit。这个 CUDA Toolkit 中包含了英伟达 GPU 的驱动程序、cuda库函数、编译器等等等等。那它能做什么呢?1:调用CUDA Toolkit 里面的cuda api 就能直接操作 GPU;2:CUDA Toolkit 里面的一些工具能将 pytorch 语法编译成 GPU 可识别的指令,pytorch 底层是 C++ 实现的。英伟达设计的 cuda 的目的就是做 GPU 的通用计算平台,开发者只需要使用 cuda api 或者 cuda可翻译的语言写程序,就能实现操作 GPU,这大大降低了使用门槛。正如不是所有的奶都叫特仑苏,也不是所有的 GPU 都支持 cuda 。 cuda 是英伟达设计并实现的,所以只支持 NVIDIA GPU。

  • CUDNN:这是一个专门针对深度学习领域的软件库,它里面提供了一些函数能够加速卷积神经网络的运算。它也只支持 NVIDIA GPU,这么做的原因很简单,cuda+cudnn,想搞深度学习大概率只能买 NVIDIA GPU。

  • 深度学习框架:各种互联网大厂在 cuda + cudnn 的基础上设计的框架。二十多层的网络架构,调用 pytorch 只需要配置入口参数一行代码就搞定了,自己使用底层语言搭模型,难度大,费时间不说,关键还不一定能 work。TensorFlow、Ptorch 的只需要会 python 就行,至于搭网络,一行代码搞定。框架的出现更是降低了开发者的使用门槛,一批一批的人前赴后继地入坑。

上述解释是自己根据自己理解写出来的,若有错误,李姐万岁!


环境搭建

好多人都折在版本不兼容以及安装时出现的各种奇奇怪怪的异常,这块需要胆大心细,大不了全掀了重来。以 NVIDIA GPU 为硬件搭建环境。

  1. 查看GPU 型号以及操作系统版本

    # lspci | grep -i vga
    01:00.0 VGA compatible controller: NVIDIA Corporation GM200 [GeForce GTX TITAN X] (rev a1)
    
    # uname -a
    Linux deployer-All-Series 5.15.0-50-generic #56~20.04.1-Ubuntu SMP Tue Sep 27 15:51:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
    

    CPU:x86_64

    GPU:GeForce GTX TITAN X

    OS:20.04.1-Ubuntu

  2. 安装显卡驱动

    这里有两种方式安装(1)先装显卡驱动,在安装cuda;(2)安装cuda时一并将显卡驱动安装了。

    第(2)种方式:

    在官网下载cuda,需要先注册才能下载。我安装的是 CUDA Toolkit 11.6.2。不推荐使用 deb(local) 方式安装,因为该方式即便选定了指定版本,依旧会安装最新版本,可能软件仓库里面保存的就只最新版本吧。选择 runfile(local) 一次性将 显卡驱动和 cuda 都安装。

# 下载安装文件到本地
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
# 必须以 sudo 权限安装。
sudo sh cuda_11.6.2_510.47.03_linux.run

安装文件中包含有显卡驱动和 cuda 工具包,可以选择是否安装,这里全选。

如果安装失败,可以查看日志文件寻找失败原因:

  • 显卡驱动安装日志:/var/log/nvidia-installer.log
  • cuda 安装日志:/var/log/cuda-installer.log

安装成功会显示信息:

===========
= Summary =
===========

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-11.6/

Please make sure that
 -   PATH includes /usr/local/cuda-11.6/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.6/lib64, or, add /usr/local/cuda-11.6/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.6/bin
To uninstall the NVIDIA Driver, run nvidia-uninstall
Logfile is /var/log/cuda-installer.log

这里一定要配置 PATH 和 LD_LIBRARY_PATH ,否则上层的框架总还是找不见 cuda 在哪里!!!

# vi ~/.bashrc
export PATH="$PATH:/usr/local/cuda-11.6/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64"
# 退出
source ~/.bashrc

至此,显卡驱动和 cuda一次性安装成功。

第(1)种方式:先安装显卡驱动,在安装cuda

显卡驱动安装:https://www.cnblogs.com/chua-n/p/13208398.html

cuda安装:按照(2)中方式选择,下载cuda,在安装时选择不安装 Driver

cuda 安装完成后就可以使用 nvidia-smi 查看 GPU 信息了。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| 22%   45C    P8    30W / 250W |   5343MiB / 12288MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A   2898247      C   python                           2960MiB |
|    0   N/A  N/A   3553478      C   /usr/local/bin/python3.7         2377MiB |
+-----------------------------------------------------------------------------+
  1. 安装 cudnn

    官方安装说明:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

​ 推荐使用 tar 包的形式安装,因为自己心里清楚到底装的是什么版本的。

  1. 安装上层框架

    这个自己装啦。

11-10 10:38