先运行nvidia-smi确认驱动就绪:若命令未找到或报错“NVIDIA-SMI has failed...”,说明驱动未安装成功;正常输出需含GPU型号、驱动版本(如535.104.05)及CUDA Version(如12.2),该版本为驱动支持的最高CUDA运行时版本,须≥后续cudatoolkit版本。

确认驱动与硬件是否就绪
别急着装包,先看 nvidia-smi 能不能跑出来。如果命令未找到或报错 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver,说明驱动根本没装好,后续所有 conda 操作都白搭。
正常输出应包含 GPU 型号、驱动版本(如 Driver Version: 535.104.05)和右上角的 CUDA Version: 12.2 ——注意,这个数字只是驱动“支持的最高 CUDA 运行时版本”,不是你实际要用的版本,但必须 ≥ 后续安装的 cudatoolkit 版本。
- 驱动版本太老(如 cuda error: no kernel image for this gpu,尤其在 A100/H100 上高频出现
- 笔记本双显卡用户需确认独显被启用(非集显直连),
nvidia-smi必须有输出 - WSL2 用户需单独启用 GPU 支持,且驱动必须装在 Windows 主系统,WSL 内无需再装
创建环境时指定 Python 和 CUDA 兼容版本
conda 环境不是“先装 Python 再配 CUDA”,而是靠 pytorch-cuda=xx.x 这个元包触发整套依赖解析。它会自动拉取匹配的 cudatoolkit、pytorch 构建版本和底层 ABI 兼容库(如 libcudart.so.12)。
执行这行命令即可完成环境创建 + 核心框架安装:
立即学习“Python免费学习笔记(深入)”;
conda create -n torch124 python=3.10 pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
- 不要分开执行
conda install pytorch和conda install cudatoolkit,二者版本脱节会导致torch.cuda.is_available()返回False -
python=3.10是当前 PyTorch 2.4+ 官方推荐的稳定版本;Python 3.13 尚未被主流pytorch-cuda包支持 - 若需 CUDA 11.8(如兼容旧 cuDNN 8.6),把
pytorch-cuda=12.4换成pytorch-cuda=11.8即可,conda 会自动降级相关组件
验证时绕过常见假阴性陷阱
运行 import torch; print(torch.cuda.is_available()) 返回 False 不代表失败——可能只是验证方式错了。
- 确保在激活的环境中运行:先
conda activate torch124,再进python,否则 import 的是 base 环境的 CPU 版本 -
torch.version.cuda为空?不用管,这是预期行为;关键看torch._C._cuda_getCurrentRawStream(0)是否不抛异常 - 真正有效的验证是分配张量:
torch.ones(1).cuda(),如果报RuntimeError: CUDA out of memory,恭喜,GPU 已识别成功(只是显存不够) - 若报
libcudart.so.xx: cannot open shared object file,说明cudatoolkit没装对,用conda list cudatoolkit检查版本,并确认构建字符串含cuda124或对应后缀
为什么不用 pip + 官方 wheel?
因为 pip 安装的 torch-2.4.0+cu121 wheel 依赖系统级 CUDA Toolkit(/usr/local/cuda),而 conda 的 cudatoolkit 是精简自包含包,只放 runtime 库(libcudart.so, libcublas.so),不带编译器或头文件。
- 系统 CUDA 和驱动版本不匹配时,pip 方式极易触发
CUDA driver version is insufficient - conda 环境删除干净(
conda env remove -n torch124),不会残留/usr/local/cuda下的冲突文件 - 多项目并行时,不同环境可共存
pytorch-cuda=11.8和pytorch-cuda=12.4,互不干扰
最易被忽略的一点:conda 安装的 cudatoolkit 不修改系统 PATH 或 LD_LIBRARY_PATH,它通过硬链接把 so 文件打进环境 site-packages,所以千万别手动加 export LD_LIBRARY_PATH=/usr/local/cuda/lib64——这反而会破坏 conda 的隔离机制。


















