一、检查环境
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 环境已经完全就绪了。