安装GPU驱动

内容纲要

一、检查环境

1、检查GPU硬件是否存在

正常情况(硬件已成功挂载)执行后会输出类似这样的信息,能看到你的 T4 显卡设备 ID:
00:07.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
TU104GL [Tesla T4]是显卡硬件的id编号,后续可以凭借此信息,找到合适的驱动版本。
只要有输出,就说明系统已经识别到了 GPU 硬件,后续安装驱动就有基础了。

异常情况(无输出)说明:
实例创建时未成功挂载 GPU
共享 GPU 实例的虚拟化配置异常。这种情况下,再怎么装驱动也没用,必须先检查实例配置或联系阿里云技术支持。

lspci | grep -i nvidia

2、检查是否安装好了GPU驱动

如果能看到包含显卡型号(T4)、显存、驱动版本的表格,就说明驱动安装成功,可以直接使用了。

如果报错:Command ‘nvidia-smi’ not found,就说明:
系统里还没安装 NVIDIA 显卡驱动,所以找不到 nvidia-smi 这个命令。

nvidia-smi

二、安装驱动(共享型实例)

1、环境配置

ecs.sgn7i-vws-m4.2xlarge
共享型GPU实例 sgn7i
8 vCPU
31 GiB
1 NVIDIA A101/6
1 * 4 GB
GPU-GRID虚拟化

2、选镜像

云市场镜像-> Ubuntu 22.04 64位 预装GRID 13.5 SWL驱动镜像 V1.0 -> 启动实例

3、查GPU驱动

nvidia-smi

三、安装驱动(独享型实例)

主机配置:
ecs.gn6i-c8g1.2xlarge
GPU 计算型 gn6i
8 vCPU
31 GiB
1 NVIDIA T4
1
16 GB
GPU-T4加速

1、检查驱动版本

1.1 手动查询 GPU 型号,再找对应驱动
1.1.1、 查找gpu型号
lspci | grep -i nvidia

这里的 TU104GL [Tesla T4] 就是你的 GPU 型号。

1.1.2、根据型号找官方推荐的驱动版本

T4官方推荐的驱动名称与版本
完整名称:NVIDIA Tesla Driver 535.x 系列(长期支持版)
在 Ubuntu 包管理器里的名称:nvidia-driver-535-server
这是数据中心 / 服务器专用的驱动包,专门为 Tesla 系列

1.2 安装推荐的驱动

用 ubuntu-drivers 工具自动推荐(最省事,官方适配)
这是 Ubuntu 自带的驱动适配工具,会根据你的硬件型号,自动推荐兼容的驱动版本。

1.2.1:安装工具并更新源
apt update && apt install ubuntu-drivers-common -y
1.2.2:查看适配的驱动列表

输出解读:
会列出你的 GPU 型号(比如 NVIDIA T4)
下面会标注 recommended: nvidia-driver-535-server-open,这就是系统推荐的、最适配你的硬件的驱动版本。

ubuntu-drivers devices

2、安装推荐的驱动(以 535-server 为例)

2.1、安装推荐版本
apt install -y nvidia-driver-***
2.2、重启生效
reboot

重启后用 nvidia-smi 验证,能看到 GPU 信息就说明适配成功了。

2.3、检查是否已经安装好了

如果有输出(比如 nvidia-driver-595-open),说明驱动包已经装了,只是没加载;如果没有输出,说明安装失败了,需要重新安装。

dpkg -l | grep nvidia-driver
2.4、如果驱动已经安装了,尝试手动加载模块

加载NVIDIA驱动模块

modprobe nvidia

检查模块是否加载成功

lsmod | grep nvidia

如果有输出,说明模块加载成功了

再执行 nvidia-smi 试试。

nvidia-smi

四、安装CUDA(独享型实例)

0、查询GPU驱动能支持的 CUDA 最高版本号

nvidia-smi

1、打开官网,进入指定cuda版本的页面

https://developer.nvidia.com/cuda-toolkit-archive

2、选择以下字段,生成对应的下载和安装命令

2.1. Operating System:linux
uname
2.2. Architecture:X86_64
uname -m
2.3. Distribution:ubuntu
2.4. Version:22.04
2.5. Installer Type:runfile(local)

3. 下载 CUDA 安装包(和驱动兼容)

wget https://developer.download.nvidia.com/compute/cuda/xx.x.x/local_installers/cuda_x.x.x_xxx.xxx.xx_linux.run

静默安装(只装 toolkit,不装驱动,避免覆盖现有 595 驱动)

sudo sh cuda_xx.x.x_xxx.xxx.xx_linux.run --silent --toolkit --override --no-man-page

4. 配置环境变量

4.1、写入环境变量

替换真实cuda版本

echo 'export PATH=/usr/local/cuda-xx.x/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-xx.x/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
4.2、立即生效
source ~/.bashrc
4.3、 验证安装

查看 CUDA 版本

nvcc -V

五、安装CUDA(共享型实例)

1. cuda版本 不适配 操作系统(共享型实例)(意外情况,可选择性执行)(适用情况:最高cuda版本低于当前22.04版本的ubuntu系统)

使用「CUDA Forward Compatibility 向前兼容包」,共享型实例出现支持的cuda版本 < 当前系统版本22.04,(推荐)

1.1. 查询适配当前系统版本22.04的cuda版本是哪一个
https://developer.nvidia.com/cuda-toolkit-archive
1.2. 下载run包
wget https://developer.download.nvidia.com/compute/cuda/xx.x.x/local_installers/cuda_x.x.x_xxx.xxx.xx_linux.run
1.3. 静默安装,在生成命令的后面加上参数 –silent –toolkit –override –no-man-page

(只装 toolkit,不装驱动,避免覆盖现有版本的GPU驱动)

sudo sh cuda_xx.x.x_xxx.xxx.xx_linux.run --silent --toolkit --override --no-man-page --samples
1.4. 安装 CUDA 11.7 向前兼容包

要先装主包,系统才会创建 CUDA 11.7 的目录、文件结构,兼容包才能把文件覆盖 / 补充进去生效。
向前兼容包是补丁 / 补充包:它不是独立安装包,是给已经装好的 CUDA 11.7 打补丁,让它能兼容你低版本的 GPU 驱动。

cuda-compat-11-7 属于 NVIDIA 官方 CUDA 软件源的包,Ubuntu 默认的源和阿里云镜像里都没有收录,所以会提示 Unable to locate package。

1.4.1. 添加 NVIDIA CUDA 官方源

3bf863cc.pub 是什么?
这个公钥是 NVIDIA 为 Ubuntu 22.04 + x86_64 平台的 CUDA 软件仓库 提供的签名公钥。
它不是给某个特定包(比如 cuda-compat-11-7)用的,而是给整个仓库里的所有包签名用的。
只要添加的是 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ 这个仓库,用这个公钥就没问题。

如何更换不同版本的cuda?
安装命令:只改包名
比如要装 CUDA 12.6 的兼容包,命令是:
sudo apt install -y cuda-compat-12-6

导入 GPG 密钥

curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub | sudo gpg --dearmor -o /usr/share/keyrings/cuda-archive-keyring.gpg

添加 CUDA 源

echo "deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda.list
1.4.2. 更新源并安装
sudo apt update
sudo apt install cuda-compat-11-7
1.5. 验证cuda-compat-11-7 是否真的装好了
1.5.1. 查包是否安装(最直接)
dpkg -l | grep cuda-compat

正常输出会长这样:
ii cuda-compat-11-7 11.7.99-1 amd64 CUDA Compatibility Package
ii 表示:已安装、状态正常。
没输出或不是 ii = 没装好。

1.5.2. 看文件到底装到哪里了
dpkg -L cuda-compat-11-7

会看到它把兼容库装在:
/usr/local/cuda-11.7/compat/
libcuda.so
libcuda.so.1
libnvidia-ml.so
libnvidia-ml.so.1

只要有这几个 libcuda*,说明文件层面是到位的。

1.5.3. 检查动态库能否被系统找到
ldconfig -p | grep cuda-compat

或者直接看这个目录:
ls /usr/local/cuda-11.7/compat/
能列出 libcuda.so.1 等文件,就说明库存在。

1.5.4. 实际跑程序验证(终极验证)

进入 CUDA 11.7,让它优先加载这个 compat 目录:

export LD_LIBRARY_PATH=/usr/local/cuda-11.7/compat:$LD_LIBRARY_PATH
nvcc --version

再跑一下 deviceQuery(如果安装了 samples):
bash
运行

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

输出 Result = PASS,且能识别 GPU,说明驱动兼容层完全正常工作。

1.6. 配置环境变量,优先加载兼容库

编辑你的 ~/.bashrc 或 ~/.zshrc,添加:

echo 'export PATH=/usr/local/cuda-xx.x/bin:$PATH' >> ~/.bashrc

/compat 是什么?
全称是 CUDA Compatibility Package(向前兼容包)。
从 CUDA 10 以后,NVIDIA 提供了一个机制:
可以在 “旧驱动” 上跑 “新一点的 CUDA”,不用升级驱动、不用重启机器。
compat 目录里放的就是:
适配旧驱动的 libcuda.so、libnvidia-ml.so 等驱动侧库
专门用来 “桥接” 新 CUDA Toolkit 和 旧 Driver

echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.7/compat:/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
1.7. 生效
source ~/.bashrc
1.8. 验证
nvcc -V

2. 降低 GCC 版本(不推荐,可跳过)apt update之后可能会导致代码运行报错

共享型实例的GPU驱动适配的CUDA最高版本没有当前ubuntu系统的版本,假设文件系统是22.04,但是只有20或者18的情况下

现在的情况是:
GPU驱动版本:470.161.03,它最高只能支持 CUDA 11.4,再高的版本(如 11.7)装了也用不了;
CUDA 11.4 官网列表:只提供了 Ubuntu 18.04/20.04 的安装包,没有 22.04,这是因为 11.4 发布时(2021 年),Ubuntu 22.04 还没推出;
系统版本:Ubuntu 22.04,自带的 GCC 版本是 11,而 CUDA 11.4 官方只支持 GCC 9/10,直接安装会报错。

解决方案:强制兼容安装
虽然官网列表没写,但 CUDA 11.4 是可以在 Ubuntu 22.04 上安装的,核心是绕开两个不兼容点:
绕开 GCC 版本检查
绕开 Ubuntu 版本检查

2.1. 安装 GCC 9 和 G++ 9
sudo apt update

GCC 是什么?
GCC = 编译器 = 代码翻译官
你可以这么理解:
电脑只认识 0 和 1,不认识代码(C/C++/CUDA)
GCC 负责把人类写的代码 → 翻译成电脑能跑的程序
CUDA 必须靠 GCC 才能编译、安装、正常工作
它就是一个系统底层工具,你看不见、不用操作,但必须有。

总结:
GCC 是编译工具,装 CUDA 必须用
Ubuntu 22.04 默认 GCC 11,CUDA 11.4 不认识
装上 GCC 9,CUDA 就能正常安装

sudo apt install -y gcc-9 g++-9
2.2. 设置 GCC 9 为默认版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
2.3. 验证版本
gcc -v

输出应显示 gcc version 9.4.0 (Ubuntu 9.4.0-5ubuntu1~22.04)

六、如果需要安装 cuDNN(深度学习场景)

如果后续要跑 PyTorch/TensorFlow,需要搭配 cuDNN。适配 CUDA 12.2 的 cuDNN 安装命令:

cuDNN 到底是什么?
cuDNN 的全称是 NVIDIA CUDA Deep Neural Network library,中文名叫 CUDA 深度神经网络库。
可以把它理解成:
给你的 NVIDIA 显卡装的一套 “深度学习专用加速驱动包”,专门为卷积神经网络(CNN)、循环神经网络(RNN)这类模型的计算做了极致优化。

它和 CUDA、驱动是 “黄金搭档”。三者的关系是:
驱动(Driver):让系统能识别并调用显卡。
CUDA:提供了一套通用的 GPU 编程接口,让你能写代码在 GPU 上跑。
cuDNN:在 CUDA 的基础上,给深度学习提供了一套现成的、经过极致优化的算法库。

它是 PyTorch / TensorFlow 的 “加速引擎”
你的 PyTorch 代码,在调用 torch.cuda.is_available() 时,不仅需要 CUDA,还需要 cuDNN 来完成底层的高性能计算。
没有 cuDNN:模型能跑,但速度会慢几十倍,而且很多高级算子(比如优化的卷积层)会直接报错。
有了 cuDNN:GPU 能把深度学习模型的训练 / 推理速度拉到满速,尤其是卷积、池化、矩阵乘法这些高频操作。

1、查找正确的cdDNN版本号

1.0、修改命令查找nvidia支持的下载命令(必选)根据cuda的支持版本
curl -s https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/ | grep -E 'cudnn-linux-x86_64-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+_cuda[0-9]+\.[0-9]+-archive\.tar\.xz' -o | sort -V
1.1、查询关键参数的命令(可选)

1.1.1、查询系统类型和架构

linux-x86_64

uname
uname -m

1.1.2、查询cuda的版本号

nvidia-smi

1.1.3、cudnn的版本号(主版本.次版本.补丁号.构建号)

1.1.3.1、按照cuda版本找

通过cuda(比如11.7)的版本号,查到前面的cudnn的版本号主版本.次版本.补丁号)

https://developer.nvidia.com/rdp/cudnn-archive

点击下载:cuDNN Library for Linux (x86_64),不用等待下载完,在下载列表看到最后一个构建号即可

1.1.3.1、顺着最挨得近的明确的版本去找模糊的版本

假设,11.7这个版本没出现,被埋在11.x这种形式里面,就可以找最近的,但是很明确的版本,比如11.6,然后往上找一到两个11.x就是了

就能知道它的完整的版本号了

1.2、修改命令(这里的cuda只需要写大版本号即可)
wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-x.x.x.xx_cudaxx-archive.tar.xz

2、解压并复制文件

xxx = cudnn-linux-x86_64-x.x.x.xx_cuda12-archive, 等于上面的执行命令后返回的结果

2.1、解压
tar -xvf xxx.tar.xz
2.2、确认解压后的目录结构
ls -lh cudnn-linux-x86_64-8.5.0.96_cuda11-archive/

正常输出应该有 include 和 lib64 两个文件夹,如果不是,要把下面的命令同步更改,跟这里的返回结果一致

2.3、将解压的include 和 lib64两个路径,copy到指定目录下
sudo cp xxx/include/* /usr/local/cuda-xx.x/include/
sudo cp xxx/lib/* /usr/local/cuda-xx.x/lib64/
sudo chmod a+r /usr/local/cuda-xx.x/include/* /usr/local/cuda-xx.x/lib64/*

3、检查是否安装成功

输出以下信息,代表安装成功
define CUDNN_MAJOR 8
define CUDNN_MINOR 9
define CUDNN_PATCHLEVEL 7

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

七、安装 PyTorch(GPU 版)

1、安装torch torchvision torchaudio(根据服务器所在地决定用哪一个源)

1.1 清华源(下载适合11.7版本cuda的pytorch)
pip3 install torch torchvision torchaudio -f https://mirrors.tuna.tsinghua.edu.cn/pytorch/whl/cu117/torch_stable.html
1.2 美国pytorch官方源(下载适合11.7版本cuda的pytorch)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

2、安装完后测试:

输出 True 就代表 GPU 环境 100% 就绪。

python3 -c "import torch; print(torch.cuda.is_available())"

安装完成后,用这条命令一次性验证所有环境

python3 -c "
import torch
print('====================')
print('PyTorch 版本:', torch.__version__)
print('GPU 可用:', torch.cuda.is_available())
print('GPU 型号:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else '无')
print('cuDNN 版本:', torch.backends.cudnn.version())
print('====================')
"

只要输出里出现 GPU 可用: True,就说明你的 PyTorch + GPU 环境已经完全就绪了。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部