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 版本没对上。所以,每一步都验证一下,别偷懒。