CUDA 与 N 卡驱动安装

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 装驱动:官网安装包

  1. 打开 NVIDIA 官网驱动下载页,按实际卡型选 GeForce(游戏卡)或数据中心卡(专业卡),选对系统和架构;
  2. 下载 .exe 安装包并运行,按提示走完全过程;安装方式里选"表达式安装"即可,自定义安装只有想剔除个别组件时才用,我一般不折腾;
  3. 装完重启,这一步别省------显卡驱动的核心组件要重启后才完成替换,跳过它偶尔会出"装上了但时灵时不灵"的问题;
  4. 再跑 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 文件(版本更新更快,但要求手动操作):

  1. 官网下载对应的 .run 文件;

  2. 装驱动前确认没有桌面会话/关闭 X:从图形界面里直接跑很容易中途失败,最稳的做法是先切到纯文本 TTY 登录再执行;

  3. 赋予执行权限并运行:

    sudo chmod +x NVIDIA-Linux-x86_64-xxx.run
    sudo ./NVIDIA-Linux-x86_64-xxx.run

  4. 按向导选项走,遇到提示禁用内核自带显卡模块时按向导勾选,完成后 sudo reboot。

两种方式装完都是同一个验证动作:nvidia-smi 出表。

3.4 判断 CUDA Toolkit 装与不装

先看需求,再决定下不下那 3-5 GB:

可以不装 Toolkit:你只是用 PyTorch、Ollama、vLLM 这些现成框架跑推理、微调或出图。它们的 wheel 包已经捆绑了编译好的 CUDA 运行时,装上框架就能直接用卡。纯 PyTorch 用户跳过本节直接去下一篇,是这条路线里最省硬盘的正确姿势。

需要装 Toolkit :你要用 nvcc 编译自己的 .cu 代码、从源码编译框架、或用 TensorRT 这类独立工具链。判断标准很简单------你的工作流里有没有"编译 CUDA 代码"这个动作,有就装,没有就不装。

需要装时的步骤(Windows 为例):

  1. 到 NVIDIA 官网 CUDA Toolkit 下载页选系统架构,下载本地安装包;
  2. 运行安装包,安装模式选 Local(本地);
  3. 组件列表里至少保留 nvcc 工具链,安装前确认驱动已是新版;
  4. 装完重启,跑 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)

参考

相关推荐
TechEdu2026061 小时前
[人工智能]Python10:NumPy.random.Algebra 随机代数实战指南
人工智能·numpy
阿阿阿安1 小时前
Agent 智能体开发(二)Agent 经典架构范式构建
人工智能·ai·agent
AI你一生一世1 小时前
Attention is all you have:当上下文成为唯一的护城河
人工智能·大语言模型·注意力机制·rag·长上下文·上下文窗口·推理成本
天一生水water1 小时前
时间序列非平衡样本分类研究综述:发展脉络、核心方法与前沿方向
人工智能·分类·数据挖掘
Omics Pro1 小时前
预测性虚拟细胞中显式机理算子
大数据·数据库·人工智能·python·算法·机器学习·自然语言处理
haliu1 小时前
【FHE 同态加密】我们如何实现同态加密推理(十六):未完成清单与已知边界(同态加密推理的精度、性能与安全)
人工智能·嵌入式·c·fhe·推理引擎·c11·边缘推理·同态加密推理
2601_965969061 小时前
教师选择AI认证,应该重点看哪些考核内容?
人工智能·数据挖掘
墨心@1 小时前
【无标题】
人工智能·大语言模型·agent·智能体·harness
康实训1 小时前
2026营养实训室建设标准与实施方案
人工智能·实训室·实训室建设