在 Ubuntu 环境下安装 CUDA 和 PyTorch,核心原则其实不是“选哪个版本最兼容”,而是“你的硬件驱动支持什么,以及 PyTorch 官方二进制包依赖什么”。
直接给结论:
-
首选推荐:Ubuntu 22.04 LTS (Jammy Jellyfish)
- 这是目前大多数主流深度学习框架(PyTorch、TensorFlow)和 NVIDIA 驱动兼容性最好的平衡点。
- Python 3.10+ 生态成熟,CUDA Toolkit 11.x 和 12.x 的支持都非常完善。
- 服务器端稳定性好,社区文档多,踩坑概率最低。
-
次选/新硬件推荐:Ubuntu 24.04 LTS (Noble Numbat)
- 如果你用的是最新发布的 GPU(如 RTX 4090、H100 等),且希望使用最新的 CUDA 12.4+ 和 GCC 编译器,24.04 是更好的选择。
- 注意:部分老旧的第三方库(如某些版本的 OpenCV 或自定义 C++ 扩展)可能需要重新编译才能在新内核上运行。
-
不推荐:Ubuntu 20.04 及更早版本
- 虽然仍广泛使用,但逐渐被边缘化。NVIDIA 的新版 CUDA Toolkit 对旧版 glibc 的支持正在减弱,未来升级驱动时可能遇到兼容性问题。
为什么这么选?关键逻辑拆解
1. CUDA 与 NVIDIA 驱动的关系(最重要!)
很多人误以为安装 CUDA Toolkit 就能直接用 GPU,其实不然。
-
用户态驱动 vs 内核态驱动:
- Linux 下,GPU 功能由内核模块(
nvidia.ko)提供,这取决于你安装的 NVIDIA 显卡驱动。 - CUDA Toolkit 提供的是开发工具链(nvcc、头文件、库文件)。
- 关键点:只要你的 NVIDIA 驱动版本足够新,它通常能向后兼容多个 CUDA 版本。例如,安装了
535.xx驱动,可以同时支持 CUDA 11.8 和 CUDA 12.1。
- Linux 下,GPU 功能由内核模块(
-
所以,不要为了装某个 CUDA 版本而去换 Ubuntu 系统!
你应该先确定你要用的 PyTorch 版本需要哪个 CUDA 版本,然后确保你的 Ubuntu 能安装对应的高版本 NVIDIA 驱动。
2. PyTorch 的安装方式决定一切
PyTorch 官方推荐使用 pip 或 conda 安装预编译的二进制包,而不是从源码编译。这意味着:
- 你不需要手动安装 CUDA Toolkit!
- 你只需要安装一个支持 CUDA 的 NVIDIA 驱动。
- PyTorch 会通过 pip/conda 自动拉取匹配该驱动版本的 CUDA runtime 库。
✅ 正确做法:
# 以 Ubuntu 22.04 + CUDA 12.1 为例
# 1. 安装最新稳定版 NVIDIA 驱动(建议用官方 repo 或 ubuntu-drivers)
sudo apt install nvidia-driver-535
# 2. 创建 conda 环境
conda create -n pytorch_env python=3.10
# 3. 安装 PyTorch(指定 CUDA 版本,这里选 12.1)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
⚠️ 注意:如果你是从官网复制的命令,务必确认
-c pytorch和-c nvidia源是否正确,否则可能下载到 CPU-only 版本。
3. 如果必须从源码编译 PyTorch(极少情况)
只有当你需要修改 PyTorch 底层代码,或使用非标准配置时才需源码编译。这时:
- GCC 版本至关重要:PyTorch 源码编译对 GCC 版本有严格要求。
- Ubuntu 22.04 默认 GCC 11.4 → 支持 CUDA 11.7~12.2
- Ubuntu 24.04 默认 GCC 13.2 → 支持 CUDA 12.3+
- 若强行在低版本 Ubuntu 上编译高版本 CUDA 项目,容易因 glibc 或 GCC 不兼容报错。
实际操作建议流程
✅ 步骤一:检查当前系统是否已有 NVIDIA 驱动
nvidia-smi
如果能看到 GPU 信息和 Driver Version,说明驱动已就绪。记下版本号(如 535.104.05)。
✅ 步骤二:根据驱动版本反推支持的 CUDA 最高版本
查阅 NVIDIA 官方文档:
- 驱动
535.xx→ 最高支持 CUDA 12.2 - 驱动
550.xx→ 最高支持 CUDA 12.4+
✅ 步骤三:选择 PyTorch 版本并安装
去 PyTorch 官网 选择:
- Your OS: Linux
- Package: Conda / Pip
- Compute Platform: CUDA 12.1(或 11.8,视驱动而定)
示例命令(Conda):
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
✅ 步骤四:验证安装
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda) # 显示 PyTorch 使用的 CUDA 版本
print(torch.cuda.get_device_name(0))
常见误区澄清
| 误区 | 正解 |
|---|---|
| “我要装 CUDA 12.1,所以必须用 Ubuntu 22.04” | 错。只要驱动够新,任何 Ubuntu 都可以跑 CUDA 12.1。关键是驱动版本,不是操作系统版本。 |
| “Ubuntu 24.04 太新,PyTorch 不支持” | 错。PyTorch 早已支持 24.04。唯一问题是某些老第三方库可能需要重新编译。 |
| “安装 CUDA Toolkit 后 PyTorch 才能用 GPU” | 错。PyTorch 自带 CUDA runtime,只需驱动即可。除非你要做 cuDNN/cuBLAS 自定义开发,否则无需单独装 CUDA Toolkit。 |
总结
- 通用场景:选 Ubuntu 22.04 LTS,稳定、兼容性好、资源多。
- 追求最新硬件/CUDA:选 Ubuntu 24.04 LTS,搭配最新 NVIDIA 驱动。
- 核心操作:优先保证 NVIDIA 驱动为最新稳定版,再通过 Conda/Pip 安装对应 CUDA 版本的 PyTorch,无需手动安装 CUDA Toolkit。
这样既能避免兼容性问题,又能简化部署流程。
云技术博客