CUDA 与 N 卡驱动安装
系列第 1 篇。刚拿到 N 卡想本地跑 AI,却不知道驱动、CUDA Toolkit、cuDNN 到底要装哪几个?本篇把"CUDA 安装 / N 卡驱动"这件事一次讲透:先
nvidia-smi看家底,再按决策树装驱动,判断 CUDA Toolkit 装与不装,最后用nvcc --version收口。读完你能独立搭好 GPU 底座,并看懂"驱动版本"与"CUDA 版本"那对最容易搞混的关系。
一、为什么需要它
本地 AI 的第一道坎,几乎人人栽在驱动和 CUDA 这一层。后面系列里出现的torch.cuda.is_available()返回False、CUDA driver version is insufficient for CUDA runtime version、CUDA error: no kernel image is available for execution on the device,绝大多数根源都不在框架或模型,而在这篇讲的底座没装对。
我的排错经验是先想清楚一件事:本地 AI 的 GPU 软件栈是三层结构——最底下是 NVIDIA 驱动(让操作系统和显卡对话的接口),中间是 CUDA Toolkit 和 cuDNN(开发工具链,可选),最上面是 PyTorch、Ollama、vLLM 这类框架和应用。三层各管各的事,装之前先分清"哪些必装、哪些可不装",能少走一半弯路。
核心结论先放这儿:驱动必装;CUDA Toolkit 大多数场景可不装——主流框架的预编译包(wheel)已经自带了 CUDA 运行时,纯跑 PyTorch 的人完全可以跳过那 3-5 GB 的安装包;cuDNN 同理,多数时候框架里已经捆绑好了。
所以本篇的路线是:先nvidia-smi查显卡与驱动现状,再装驱动,然后走一遍决策树判断要不要装 Toolkit 和 cuDNN,最后做三步验证。国内用户注意:驱动和 CUDA Toolkit 都是从 NVIDIA 官网直接下载,不走 pip,下载慢的话只能换网络时段,这一点本篇会专门提。
二、环境要求
| 项目 | 要求 | 说明 |
|---|---|---|
| GPU | NVIDIA 显卡,显存 8 GB 以上(12 GB 以上更舒适) | 显存是"能跑多大模型"的硬门槛,估算方法详见《AI-05 显存计算与模型选择》 |
| 系统 | Windows 10/11 或主流 Linux(Ubuntu 22.04 等) | WSL2 走 Windows 侧驱动,详见《AI-04 WSL2 部署 AI 开发环境》 |
| NVIDIA 驱动 | 新版游戏/专业驱动(550 系及以上建议) | 550 系驱动约支持 CUDA 12.4,555 系约支持 12.5,560 系约支持 12.6+,具体以 NVIDIA 官网兼容性表为准 |
| CUDA Toolkit | 纯 PyTorch 场景可不装 | 需要 nvcc 编译自定义代码时才装,约 3-5 GB |
| cuDNN | 多数场景不装 | 框架 wheel 已捆绑对应版本 |
| Python | 3.10 / 3.11 / 3.12(保守选 3.11) | 本篇不装 Python,环境管理详见《AI-03 Python 环境与虚拟环境》 |
先说清一个最容易踩的坑:nvidia-smi输出右上角那个 “CUDA Version” 是驱动支持的最高 CUDA 版本,不是你已经装好的 Toolkit 版本。很多人装完 PyTorch 一看这个数字没变,以为装错了——其实它从装完驱动那一刻起就不会自己变。这个概念贯穿本篇,下面反复出现。
三、安装与部署
3.1 第一步:nvidia-smi 看家底
装任何东西之前,先开终端(Windows 的 cmd 或 PowerShell,Linux 的 terminal)跑一条命令:
nvidia-smi两种结果:
- 提示
'nvidia-smi' 不是内部或外部命令(Linux 上是command not found):说明驱动还没装,直接从 3.2 开始; - 看到一张表:说明驱动已经在。表里重点看三处——驱动版本号(如 550 系)、右上角CUDA Version(驱动支持的上限)、显卡型号与显存大小。把这三个数字记下来,后面装 PyTorch 选版本全靠它。
我一般会在装驱动前先重启一次机器,把浏览器硬件加速、游戏、视频渲染这类后台进程清干净,避免装驱动时被 GPU 占用卡住。
3.2 Windows 装驱动:官网安装包
- 打开 NVIDIA 官网驱动下载页,按实际卡型选 GeForce(游戏卡)或数据中心卡(专业卡),选对系统和架构;
- 下载
.exe安装包并运行,按提示走完全过程;安装方式里选“表达式安装”即可,自定义安装只有想剔除个别组件时才用,我一般不折腾; - 装完重启,这一步别省——显卡驱动的核心组件要重启后才完成替换,跳过它偶尔会出“装上了但时灵时不灵”的问题;
- 再跑
nvidia-smi,看到表格即成功。
我的习惯是:老机器升级驱动时,先在“设备管理器 → 显示适配器 → 卸载设备”里把旧驱动清掉再装新的,省得残留配置在后面出怪问题。装之前顺手把 NVIDIA 控制面板里的实验性选项恢复默认,少一个变量少一类怪问题。
WSL2 用户特别注意:Windows 侧装的是同一套驱动,WSL 内部不需要也不应该再装一遍 NVIDIA 驱动,详见《AI-04 WSL2 部署 AI 开发环境》。
3.3 Linux 装驱动:apt 与 .run 两种方式
方式一,系统仓库(推荐新手,和内核配合更好,升级省心):
sudo apt update sudo apt install nvidia-driver-550仓库版本号会随发行版更新,这里用 550 举例。选 apt 方式的核心理由:驱动和内核是强耦合关系,系统升级内核时仓库版驱动通常有对应的内核模块同步更新,出“装完能用、系统一升级就黑屏”的概率比 .run 低不少;装完执行:
sudo reboot重启后跑nvidia-smi验证。
方式二,NVIDIA 官网.run文件(版本更新更快,但要求手动操作):
- 官网下载对应的
.run文件; - 装驱动前确认没有桌面会话/关闭 X:从图形界面里直接跑很容易中途失败,最稳的做法是先切到纯文本 TTY 登录再执行;
- 赋予执行权限并运行:
sudo chmod +x NVIDIA-Linux-x86_64-xxx.run sudo ./NVIDIA-Linux-x86_64-xxx.run- 按向导选项走,遇到提示禁用内核自带显卡模块时按向导勾选,完成后
sudo reboot。
两种方式装完都是同一个验证动作:nvidia-smi出表。
3.4 判断 CUDA Toolkit 装与不装
先看需求,再决定下不下那 3-5 GB:
可以不装 Toolkit:你只是用 PyTorch、Ollama、vLLM 这些现成框架跑推理、微调或出图。它们的 wheel 包已经捆绑了编译好的 CUDA 运行时,装上框架就能直接用卡。纯 PyTorch 用户跳过本节直接去下一篇,是这条路线里最省硬盘的正确姿势。
需要装 Toolkit:你要用nvcc编译自己的.cu代码、从源码编译框架、或用 TensorRT 这类独立工具链。判断标准很简单——你的工作流里有没有"编译 CUDA 代码"这个动作,有就装,没有就不装。
需要装时的步骤(Windows 为例):
- 到 NVIDIA 官网 CUDA Toolkit 下载页选系统架构,下载本地安装包;
- 运行安装包,安装模式选Local(本地);
- 组件列表里至少保留 nvcc 工具链,安装前确认驱动已是新版;
- 装完重启,跑
nvcc --version验证。
Linux 侧官网同样提供 runfile 方式安装,流程和上面一致。
3.5 cuDNN 何时需要
cuDNN 是卷积类算子的加速库。结论:多数场景不用单独装。PyTorch 的 wheel 里已经捆绑了对应版本的 cuDNN,Ollama、vLLM 这类应用也不依赖你单独装 cuDNN。只有两种情况才动它:从源码编译框架时,或应用明确提示找不到 cuDNN 库文件时。需要装的话,到 NVIDIA 官网下载对应 CUDA 大版本的 cuDNN 包,按说明把库路径配进环境即可,装完不需要重启。
3.6 版本对应关系:驱动 550 支持 CUDA 12.4 是什么意思
把两个版本数字的关系钉死:
- 驱动版本决定系统能跑的 CUDA 上限。常见对应(写"约",以 NVIDIA 官网兼容性表为准):550 系约支持 CUDA 12.4,555 系约支持 12.5,560 系约支持 12.6+;
- PyTorch 的 cuXXX wheel代表它编译时用的 CUDA 版本。原则只有一条:PyTorch 编译所用的 CUDA 版本 ≤ 驱动支持的 CUDA 版本。
所以:nvidia-smi 显示支持 12.4,你却装了 cu126 的 PyTorch,大概率报CUDA driver version is insufficient for CUDA runtime version——解法是升级驱动,而不是去装 12.6 的 Toolkit。反过来,驱动够新但显卡太老,太新的 CUDA 编译在老架构上会报no kernel image,解法是换与显卡架构匹配的 PyTorch wheel,而不是升驱动。两个方向别搞反。
四、验证
三步收口,一步一层:
nvidia-smi驱动层。预期:出一张表,含驱动版本、CUDA Version(支持上限)、显卡与显存。到这一步说明"GPU 认"。
nvcc --version工具链层。预期:打印 Toolkit 版本号。没有 nvcc 命令(提示不是内部或外部命令 / command not found)是正常的——说明你按 3.4 的判断跳过了 Toolkit,对纯 PyTorch 用户完全不影响。
框架层放到下一篇,装完 PyTorch 后跑:
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"预期输出形如2.x.x+cu124 True。三层全绿,GPU 底座就算打完了。
五、进阶技巧
nvidia-smi 看实时占用:开两个终端,一个跑模型,另一个刷nvidia-smi,观察显存和 GPU 利用率是否随任务变化。跑了大模型但显存纹丝不动?基本可以断定模型没上卡,十有八九是 PyTorch 装成了 CPU 版,下一篇的验证环节会专门治这个。
cuXXX 选择口诀:PyTorch 的 cuXXX 不超过 nvidia-smi 显示的 CUDA 上限、且显卡架构被该 CUDA 版本覆盖,两个条件同时满足就稳。具体到每张卡怎么选 wheel,见下一篇的 pytorch.org 选择器用法。
多版本共存靠隔离:不同项目锁不同 torch 版本时,一个项目一个虚拟环境(venv 或 conda),全局环境只放公共工具。混装多版本 CUDA 是 Windows 上Error 126: Unknown error和环境变量污染的高发原因,隔离是最便宜的保险。
国内下载口径:NVIDIA 驱动和 CUDA Toolkit 不走 pip 镜像,只能官网直连,慢就换时段或换网络,别信任何“加速下载站”的驱动包;PyTorch wheel 在官方源(download.pytorch.org),国内直连通常可用但不快,其余依赖配合清华源装会快很多:
pip install <pkg> -i https://pypi.tuna.tsinghua.edu.cn/simple六、故障排查
按分层定位法从下往上排:网络层 → 驱动层 → 框架层 → 显存层 → 应用层。下面每条都标了层,先看层再动手。
| 层 | 症状 / 报错原文 | 原因 | 解决 |
|---|---|---|---|
| 【驱动】 | Linux 下nvidia-smi提示command not found(Windows 提示"不是内部或外部命令") | 驱动未装,或命令不在 PATH | 按 3.2/3.3 装驱动;已装则export PATH=$PATH:/usr/bin(nvidia-smi 在 /usr/bin) |
| 【驱动】 | CUDA driver version is insufficient for CUDA runtime version | 驱动低于框架所需的 CUDA 版本 | 升级 NVIDIA 驱动(注意:是升驱动,别只升 Toolkit) |
| 【框架】 | torch.cuda.is_available()返回False | PyTorch 装了 CPU 版,或驱动过老 | 重装对应 cuXXX 版 wheel;或升级驱动 |
| 【框架】 | CUDA error: no kernel image is available for execution on the device | PyTorch 编译的 CUDA 版本高于显卡架构支持,wheel 与卡不匹配 | 换与显卡架构匹配的 PyTorch wheel,以 pytorch.org 选择器为准 |
| 【驱动】 | Linux 下Could not load libcuda.so.1 | 未装 NVIDIA 用户态驱动,或容器未透传 GPU | 装驱动;Docker 场景加--gpus all |
| 【环境】 | Windows 下Error 126: Unknown error/ 加载 .dll 失败(如libcudart.so.12 not found类报错) | 多版本 CUDA 混装、PATH 污染 | 清理环境变量,用 conda 隔离环境;用ldd/ dumpbin 看具体缺哪个库 |
| 【网络】 | HuggingFace 下载卡住 /ConnectionError/ 超时 | 国内访问 huggingface.co 受限 | set HF_ENDPOINT=https://hf-mirror.com(Linux 用export),或改用 ModelScope,详见《AI-06 模型下载全攻略》 |
| 【显存】 | torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate ... | 模型 / 上下文 / 批太大 | 降量化位宽、降max-model-len/ batch;nvidia-smi查后台占用并清理 |
| 【驱动】 | WSL 内nvidia-smi报The NVIDIA driver on your system is too old | Windows 侧驱动太老不支持 WSL2 GPU | 升级 Windows 侧 NVIDIA 驱动到最新版(WSL 内不需要单独装驱动) |
排不动时的 30 秒探针顺序:ping hf-mirror.com(网络层)→nvidia-smi能否出表(驱动层)→torch.cuda.is_available()==True与否(框架层)→nvidia-smi显存占用(显存层)→ 应用日志与端口(应用层)。逐层定位,不跳级。
七、本篇自检清单
nvidia-smi能出表,能说出驱动版本号与 CUDA 支持上限分别是多少- 理解 nvidia-smi 的 “CUDA Version” 是驱动支持上限,不是已装的 Toolkit 版本
- 能判断自己是否需要装 CUDA Toolkit(有编译需求才装),以及 cuDNN 何时需要
nvcc --version已验证,或确认跳过且知道为什么不影响 PyTorch- 能说出驱动 550/555/560 系与 CUDA 12.4/12.5/12.6+ 的对应关系
- 装完 PyTorch 后
torch.cuda.is_available()返回True(衔接 AI-02)
参考
- NVIDIA 驱动下载页:https://www.nvidia.com/Download/index.aspx
- CUDA Toolkit 安装指南:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/
- cuDNN 文档:https://docs.nvidia.com/cudnn/
- PyTorch 官网(Get Started 安装命令生成器):https://pytorch.org/get-started/locally/