运维系列&AI系列&Lenovo-G双系统系列(前传-装之前搜索的):Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
- Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
- 一、安装显卡驱动
- 二、安装 CUDA
- 三、配置 CUDA 的环境变量
- 然后打开 `.bashrc 文件`,准备添加环境变量。
- 注:
- `~/.bashrc`是一个在`bash shell`中运行时自动加载的`Shell脚本文件`。它通常位于用户主目录下,并且是一个隐藏文件(因为文件名`以'.'开头`)。在`Unix/Linux系统`中,用户的主目录通常是`/home/username`或者`/Users/username`。
- `/.bashrc文件`包含了一些环境变量、别名和其他自定义设置,这些设置将在每次启动`bash shell`时自动加载。它的作用包括但不限于:
- `~/.bashrc文件`的内容和格式:`~/.bashrc文件`可以使用任何文本编辑器进行编辑,其内容可以根据您的需要进行修改。以下是一些可能会出现在.bashrc文件中的代码段:
- `.bashrc文件`中的语法采用`bash shell`的语法,因此您可以使用任何`bash shell`支持的命令和语法。需要注意的是,如果您不小心编写了有误的代码,可能会导致`bash shell`出现错误或无法启动。
- 进入 `vim 编辑器`后,默认处于命令模式。
- 四、安装 cuDNN
- 五、检查 CUDA、cuDNN 是否安装成功
- 六、卸载 CUDA
- 七、 问题
Ubuntu 安装 GPU 驱动、CUDA、cuDNN,以及是否安装成功的检测
首先确认电脑上安装了 NVIDIA 显卡
lspci | grep -i nvidia
一、安装显卡驱动
确认有显卡以后输入下面命令,以检查之前是否安装了驱动。
nvidia-smi
如果返回类似于下面的界面,说明已经安装了显卡驱动:
如果返回类似于下面的界面,则表示显卡驱动还没有安装。
如果发现没有安装过驱动,则可再输入下面命令,以查看显卡型号以及推荐的驱动版本。
ubuntu-drivers devices
如下图,这里推荐我们安装的是 nvidia-driver-530 - distro
。
如果我们愿意安装这个版本的驱动,则输入即可安装该驱动:
sudo ubuntu-drivers autoinstall
安装过程中按照提示操作,除非你知道每个提示的真实含义,否则所有的提示都选择默认就可以了,安装完成后重启系统,NVIDIA 显卡
就可以正常工作了。
此时,再次输入
nvidia-smi
就可以看到 GPU
的信息了。下面的界面说明已经安装显卡驱动了。
注意,上图中的 CUDA Version
后面写了一个版本号。该版本号并不是你已经安装了该版本的 CUDA
的意思,而是说此显卡最大支持的CUDA版本号
。因此我们仍然需要手动从官网下载CUDA
,且版本号不能高于这个。
二、安装 CUDA
这一步有大坑!!!即:下载 CUDA 的时候,到底应该选择什么版本的?
安装教程的 NVIDA 官方文档见:NVIDIA CUDA Installation Guide for Linux
下面安装 CUDA
。
首先确认你需要安装的 CUDA 版本
。
以我要使用的 pytorch
为例。我打开 pytorch 官网
:PyTorch 查看其支持哪些版本的 CUDA
。
如上图所示,目前最高只支持 11.8 版本
的 CUDA
,那我就最高安装 11.8 版本的 CUDA
,不能安装 12.1 版本
的。
为什么我要强调不能安装 12.1 版本
呢?
因为当你打开 NVIDIA 官方网站
下载 CUDA
的时候,默认就是最新版本,在本文成文时是 12.1 版本
。如下图,在最最直接的、没有强调任何版本的情况的网址下面,就是 12.1 版本
。
也就是说,在本文成文的时间节点,默认情况下,你就是会下载错版本的。(没错,我第一次就下载错了)
如果想要下载 11.8 版本
的 CUDA
,需要专门点击右上角的放大镜进行搜索才能找到,而且网址也是特别长的一大串。
CUDA
(Compute Unified Device Architecture
)是由NVIDIA
提供的一种用于GPU
并行计算的平台和编程模型。它通过为开发人员提供一套工具、API和库,使得使用GPU进行高性能计算变得更加容易。CUDA
支持C/C++
、Python
、Fortran
等多种编程语言,并且可以在Linux
、Windows
和macOS
等操作系统上运行。
访问CUDA Toolkit 11.8 Downloads(一定要注意确认CUDA版本
),在页面上选择适合系统的CUDA版本
,并下载对应的运行文件(.deb文件
)。
另外,NVIDA
在下载页面非常贴心的提供了下载+安装需要的所有代码。
以我的计算机环境为例,我需要依次运行下面命令:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
# 安装公共 cuda-repo-ubuntu2204-12-1-local GPG key
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
三、配置 CUDA 的环境变量
安装成功后需要配置一下环境变量。这步很关键,如果不配置环境变量,则运行机器学习运算的时候会找不到GPU
。
首先跳转到 /usr/local 目录
下面,记录自己 CUDA
的文件夹名称
然后打开 .bashrc 文件
,准备添加环境变量。
sudo vim ~/.bashrc
注:
~/.bashrc
是一个在bash shell
中运行时自动加载的Shell脚本文件
。它通常位于用户主目录下,并且是一个隐藏文件(因为文件名以'.'开头
)。在Unix/Linux系统
中,用户的主目录通常是/home/username
或者/Users/username
。
/.bashrc文件
包含了一些环境变量、别名和其他自定义设置,这些设置将在每次启动bash shell
时自动加载。它的作用包括但不限于:
-
定义环境变量:例如
PATH
、LD_LIBRARY_PATH
等,它们指定了系统在何处查找可执行文件和共享库。 -
创建自定义别名:例如将
ls -l
别名为ll
,可以避免每次都输入完整命令。 -
设定默认的文本编辑器、历史记录长度、提示符等
bash shell参数
。 -
运行其他的
Shell脚本
,从而自动化一些操作。
~/.bashrc文件
的内容和格式:~/.bashrc文件
可以使用任何文本编辑器进行编辑,其内容可以根据您的需要进行修改。以下是一些可能会出现在.bashrc文件中的代码段:
bash
# 设置PATH环境变量
export PATH=$PATH:/usr/local/bin
# 创建别名
alias ll='ls -l'
# 自定义提示符
PS1='\u@\h:\w\$ '
# 运行其他Shell脚本
if [ -f ~/custom_scripts.sh ]; then
. ~/custom_scripts.sh
fi
.bashrc文件
中的语法采用bash shell
的语法,因此您可以使用任何bash shell
支持的命令和语法。需要注意的是,如果您不小心编写了有误的代码,可能会导致bash shell
出现错误或无法启动。
进入 vim 编辑器
后,默认处于命令模式。
此时按 j
向下跳行,跳到最后一行。
然后按 o
(小写哦)进入插入(编辑)模式,并且向下新开一行,在行首插入
复制下面两行代码,在该行(即最后一行)粘贴或者输入下面代码。
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
这里解释一下代码的含义:
代码一:
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
这是一个设置环境变量的命令,将CUDA 12.1
的二进制文件目录添加到系统的PATH环境变量中。
其中:
-
export
: 这个命令用于设置环境变量,将一个值分配给一个环境变量。 -
PATH
: 这是一个系统环境变量,包含了一系列用冒号分隔的目录路径。当在终端中输入一个命令时,系统会按照PATH
中的顺序在这些目录中查找可执行文件。 -
/usr/local/cuda-12.1/bin
: 这是CUDA 12.1
的二进制文件目录所在的路径。 -
${PATH:+:${PATH}}
: 这个语法用于将当前的PATH变量
内容添加到新的PATH变量值
中。如果PATH
已经存在,那么就在它的末尾添加一个冒号
和原始PATH变量值
。如果PATH
不存在,那么就只设置为CUDA 12.1
的二进制文件目录。 -
通过运行上述命令,可以将
CUDA 12.1
的二进制文件目录添加到PATH环境变量
中,使得系统能够找到相关的可执行文件。
代码二:
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
这个命令是用来设置环境变量LD_LIBRARY_PATH
,以便让系统能够正确地找到CUDA库文件
的路径。
其中:
export
: 这个指令告诉bash shell
将变量导出到子进程中,并在整个会话期间都有效。
-
LD_LIBRARY_PATH
: 这是一个环境变量,用于指定共享库文件的搜索路径。当程序需要使用共享库时,系统会根据该变量的值在指定的路径下查找所需的共享库文件。 -
/usr/local/cuda/lib64
: 这是CUDA库文件
的默认安装路径。 -
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
: 这段语法表示如果LD_LIBRARY_PATH
变量已经定义,则在原有的路径后面添加CUDA库文件
的路径;否则,就创建一个新的LD_LIBRARY_PATH变量
并将其设置为CUDA库文件
的路径。 -
通过运行该命令,将
CUDA库
文件路径添加到LD_LIBRARY_PATH环境变量
中,可以确保CUDA库文件
被正确加载,并且可以被程序访问和使用。 需要注意的是,此命令中${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
的语法可能不是所有shell
都支持,通常只能在bash
和zsh
等主流的Unix shell
中使用。
然后按下 Esc 键
,从编辑模式返回命令模式。
然后输入英文冒号进入末行模式。
然后输入 wq
并回车,表示保存并退出。
最后,
source ~/.bashrc
四、安装 cuDNN
cuDNN
(CUDA Deep Neural Network Library
)是一个针对深度学习应用优化的加速库,它使用CUDA技术加速深度神经网络
的训练和推断。这个库提供了一些高效的原语,例如卷积、池化、归一化等,可以帮助开发人员快速实现深度神经网络,并且提升训练和推断的速度。
CUDA
和cuDNN
是两个相互依赖的软件包,它们之间有以下关系:
-
CUDA
是必需的:cuDNN
需要依赖于CUDA
才能够工作。因为cuDNN
是使用CUDA技术
实现的,所以只有支持CUDA
的硬件和系统才能够运行它。在安装cuDNN
之前,必须先安装CUDA
,并且在环境变量中设置CUDA
的路径。 -
cuDNN
是可选的:尽管cuDNN
可以提升深度学习应用的性能和效率,但它并不是必需的。如果不使用cuDNN
,仍然可以使用CUDA
进行深度学习计算。cuDNN
只是一个可选的加速库,可以根据需要选择是否使用它。 -
cuDNN
提供了深度学习相关的API和方法:为了使开发人员更容易地使用cuDNN
,这个库提供了一些专门针对深度学习的API
和方法,例如卷积、池化、归一化等。这些方法已经被高度优化,可以在支持CUDA
的硬件上快速执行。 -
总的来说,
CUDA
提供了基础的GPU并行计算能力
,而cuDNN
则是在这个基础上为深度学习应用提供的高级的计算加速库。两者结合起来可以大幅提升深度学习应用的性能和效率。
首先在https://developer.nvidia.com/cudnn下载相应版本的cudnn
。这一步需要注册或者拥有英伟达账号。
然后,参考 cuDNN
的安装官方文档进行安装:NVIDIA cuDNN Documentation
虽然我是 Ubuntu
,但是也按照 「1.3.1. Tar File Installation」
部分的讲解进行操作,而不按照「1.3.2. Debian Local Installation」
的部分进行操作。
五、检查 CUDA、cuDNN 是否安装成功
我们在终端里面依次输入下面代码:
import torch
然后
print(torch.version.cuda)
如上图,可以正确返回 cuda 版本号
,说明 cuda
安装成功。
print(torch.backends.cudnn.version())
如上图所示,可以正确返回 cuDNN
的 版本号,说明 cuDNN
安装成功。
最后输入:
torch.cuda.is_available()
返回是 True
,说明 CUDA
和 GPU驱动
的搭配是正确的。
到此,说明 GPU 驱动
、CUDA
、cuDNN
已经完全安装完成。
六、卸载 CUDA
看这个官方文档:
NVIDIA CUDA Installation Guide for Linux
七、 问题
问题一:我想问一下题主,跑模型时使用GPU只使用了专用GPU部分,剩下的部分几乎没有调用,这是什么原因造成的,本人是 10.2和7.6.5,训练模型时出现的问题
那肯定的呀,专用就是显存,其他的就是内存,本来就是用不了的
问题二:为啥上面说安装11.8的 下面path设置的又都是12的
问题三:请问一下ubuntu-drivers devices执行以后终端没有返回结果是什么原因啊?
问题四:太感谢了,原来这么简单,我用官网下载的显卡驱动怎么都装不成功[大哭]
问题五:用软链接换了cuda版本,torch.cuda.is_available() false怎么办