3、GPU 驱动与 CUDA 生态安装:NVIDIA 驱动安装与验证、CUDA Toolkit 安装与版本选择、cuDNN 安装与配置、环境变量设置与验证。

好,咱们正式开始动手了。这一章,说白了就是给机器装上「心脏」和「大脑」——GPU 驱动和 CUDA 生态。我见过太多人在这步栽跟头,装完驱动发现 CUDA 版本对不上,或者环境变量配错了,折腾一整天。别急,跟着我的节奏来,稳得很。

3.1 NVIDIA 驱动安装与验证

驱动是 GPU 和操作系统之间的翻译官。没有它,你的显卡就是个摆设。我个人习惯在装驱动前,先确认一下机器上有没有旧驱动残留,免得冲突。

3.1.1 检查当前显卡型号

先看看你手里是什么卡。打开终端,跑这条命令:

lspci | grep -i nvidia

如果输出一堆看不懂的 ID,别慌。再用这个:

nvidia-smi

如果系统提示「command not found」,说明还没装驱动。嗯,正常。

3.1.2 安装驱动(推荐两种方式)

方式一:Ubuntu 官方源(省心)

sudo ubuntu-drivers autoinstall
sudo reboot

这种方式会自动匹配推荐版本。我在项目中遇到过几次,它装的版本可能不是最新的,但胜在稳定。

方式二:NVIDIA 官网下载(追新)

nvidia.com/drivers 选你的显卡型号和操作系统。下载后:

chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run

安装过程中会提示是否安装 32 位兼容库,我建议选「是」,有些老框架会用到。

⚠️ 避坑指南
我曾经在笔记本上装驱动,结果黑屏了。后来发现是没禁用 Nouveau 开源驱动。装之前务必执行:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
然后重启,再装驱动。

3.1.3 验证驱动

重启后,跑:

nvidia-smi

如果看到类似下面的输出,恭喜你,驱动装好了:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08    Driver Version: 545.23.08    CUDA Version: 12.3     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce RTX 4090  Off  | 00000000:01:00.0  Off |                  Off |
| 30%   45C    P0    65W / 450W |      0MiB / 24564MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

注意看右上角的 CUDA Version,它表示当前驱动支持的最高 CUDA 版本。你想想看,这决定了你后面能装什么版本的 CUDA Toolkit。

3.2 CUDA Toolkit 安装与版本选择

驱动搞定了,接下来装 CUDA Toolkit。它包含了编译器、库和开发工具。说白了,你的 PyTorch、TensorFlow 都要靠它来调用 GPU。

3.2.1 版本选择原则

我个人的经验是:不要追新,要追稳。选版本时,先看你常用的框架支持什么。比如:

框架 推荐 CUDA 版本 备注
PyTorch 2.x 11.8 / 12.1 官方预编译包常用这两个
TensorFlow 2.13+ 11.8 太新的 CUDA 可能不兼容
最新框架尝鲜 12.3 需要驱动版本 ≥ 545

怎么查驱动支持的最高版本?刚才 nvidia-smi 右上角已经告诉你了。如果驱动版本太低,先升级驱动,再装 CUDA。

3.2.2 安装 CUDA Toolkit

我推荐用 runfile 方式安装,干净利落。去 NVIDIA 官网下载对应版本的 runfile:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

安装时注意:不要勾选 Driver(因为我们已经装过了),只选 Toolkit 和 Documentation。嗯,这里要仔细看,别手滑。

💡 小技巧
如果你用 Docker 跑模型,其实可以跳过 CUDA Toolkit 安装,直接用 nvidia/cuda:12.1.0-devel 镜像。但本地开发环境还是建议装一下,方便调试。

3.3 cuDNN 安装与配置

cuDNN 是 NVIDIA 针对深度学习优化的加速库。说白了,它让卷积、池化这些操作跑得更快。我刚开始用的时候,觉得不装也能跑,但一装上,训练速度直接提升 30% 以上。

3.3.1 下载 cuDNN

去 NVIDIA 开发者网站下载。注意:cuDNN 版本必须和 CUDA 版本匹配。比如 CUDA 12.1,就下载 cuDNN for CUDA 12.x。

下载后解压:

tar -xzvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz

3.3.2 安装 cuDNN

把解压后的文件复制到 CUDA 目录:

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

我曾经犯过一个错:忘记加 -P 参数,导致软链接没复制过去,编译时一直报找不到库。你想想看,这种小细节多坑人。

3.4 环境变量设置与验证

装完不配环境变量,等于白装。系统不知道去哪找 CUDA 和 cuDNN。

3.4.1 配置环境变量

编辑 ~/.bashrc~/.zshrc,在末尾添加:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

然后生效:

source ~/.bashrc

3.4.2 验证安装

跑几个命令确认一下:

# 检查 CUDA 版本
nvcc --version

# 检查 cuDNN 版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

# 编译一个测试程序
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

如果看到 Result = PASS,说明一切正常。我每次装完新环境,都会跑一遍这个测试,心里才踏实。

✅ 最终验证清单
  • nvidia-smi 能正常显示 GPU 信息
  • nvcc --version 输出正确的 CUDA 版本
  • cat /usr/local/cuda/include/cudnn_version.h 显示 cuDNN 版本号
  • ./deviceQuery 返回 PASS

嗯,到这里,你的本地大模型推理环境的基础就搭好了。驱动、CUDA、cuDNN 三位一体,缺一不可。我见过不少新手,装完驱动就急着跑模型,结果报错「CUDA error: no kernel image is available」,其实就是 CUDA 版本没对上。所以,每一步都验证一下,别偷懒。

GPU 驱动与 CUDA 生态安装流程 NVIDIA 驱动 CUDA Toolkit cuDNN 环境变量配置 验证清单 ✅ nvidia-smi ✅ nvcc --version ✅ cuDNN 版本检查 ✅ deviceQuery PASS ⚠️ 版本匹配原则 ⚠️ 驱动 ≥ CUDA ⚠️ cuDNN 匹配 CUDA 避坑指南 🔹 禁用 Nouveau 🔹 安装时不选 Driver 🔹 cuDNN 加 -P 参数 🔹 环境变量 source 💡 推荐稳定版本 💡 Docker 可跳过 💡 先查框架支持

专注资料整理