在深度学习开发领域,Ubuntu 确实是事实上的标准操作系统。关于“长期支持版(LTS)”的选择,核心原则只有一个:跟随 NVIDIA CUDA 和 cuDNN 的官方支持周期,而不是盲目追求最新的 Ubuntu 版本。
目前最稳妥、兼容性最好的选择是 Ubuntu 20.04 LTS 或 Ubuntu 22.04 LTS。
以下是具体的选型逻辑和避坑指南:
1. 为什么首选 20.04 或 22.04?
-
NVIDIA 驱动与 CUDA 生态的成熟度
深度学习重度依赖 NVIDIA 的 GPU 提速库(CUDA, cuDNN, TensorRT)。NVIDIA 对这些库的支持往往滞后于 Linux 内核的新特性。- Ubuntu 20.04 (Focal Fossa):发布于 2020 年,至今仍是许多企业级 AI 服务器和旧版 HPC 集群的标准镜像。它的内核(5.4/5.8)非常稳定,几乎所有主流深度学习框架(PyTorch, TensorFlow)和第三方库(OpenCV, PaddlePaddle)的二进制包都经过充分测试。如果你在使用较老的 GPU(如 V100, A100 早期型号)或者需要运行一些遗留代码,20.04 是“零报错”的首选。
- Ubuntu 22.04 (Jammy Jellyfish):发布于 2022 年,是目前新建项目的推荐起点。它引入了更新的 GCC 编译器(GCC 11),对 C++17/20 的支持更好,这对编译一些高性能算子库(如 FlashAttention 的各种实现)很有帮助。同时,它对 NVIDIA 最新驱动(535/550+ 系列)的支持更加原生。
-
避免使用 24.04 (Noble Numbat) 作为主力开发机
虽然 24.04 是最新的 LTS,但它发布时间较短(2024 年 4 月)。很多深度学习相关的开源项目(尤其是那些依赖特定 Python 环境、CMake 版本或旧版 glibc 的项目)可能尚未完全适配其更新的内核和系统库。例如,某些旧版的 Docker 镜像或特定的 AI 推理引擎可能在 24.04 上遇到依赖冲突。除非你明确知道你的工具链完全兼容 24.04,否则建议暂缓升级。
2. 关键考量因素:内核版本 vs. 发行版代号
不要只看 Ubuntu 的版本号,更要看 Linux 内核版本。
- GPU 驱动要求:NVIDIA 官方驱动通常要求特定的内核头文件。Ubuntu 20.04/22.04 通过
linux-image-generic-hwe机制可以无缝升级到较新的内核,从而支持最新的 RTX 4090 或 H100 等硬件。 - Docker 兼容性:如果你使用 Docker 进行隔离部署,宿主机的内核版本会影响容器内的设备挂载(特别是
/dev/nvidia*设备的权限和可用性)。20.04/22.04 的 Docker 社区支持最为完善。
3. 实际场景建议
| 场景 | 推荐版本 | 理由 |
|---|---|---|
| 个人学习/入门 | Ubuntu 22.04 LTS | 社区教程最多,软件包最新,遇到问题容易搜到解决方案。 |
| 企业生产环境/服务器 | Ubuntu 20.04 LTS | 稳定性经过多年验证,多数云厂商(阿里云、腾讯云、AWS)的预装镜像仍大量基于 20.04,运维成本低。 |
| 前沿研究/新硬件玩家 | Ubuntu 22.04 LTS | 需要更好的硬件抽象层支持,以及更新的编译器以优化模型训练性能。 |
| 老旧项目维护 | Ubuntu 18.04 LTS | 仅当你的代码强依赖 Python 3.6/3.7 且无法迁移时才考虑。注意:18.04 已于 2023 年停止标准支持,安全风险较高。 |
4. 重要提醒:不要手动安装 NVIDIA 驱动
无论选择哪个版本,请优先使用 Ubuntu 自带的 nouveau 禁用方案 + 官方 .run 文件或 apt 源安装 NVIDIA 驱动,而不是从 NVIDIA 官网下载最新版强行覆盖。
推荐使用以下命令确保驱动与内核匹配:
sudo ubuntu-drivers autoinstall
sudo reboot
然后验证:
nvidia-smi
nvcc --version
5. 替代方案:WSL2(Windows Subsystem for Linux)
如果你不是必须使用裸金属 Linux,强烈建议在 Windows 上使用 WSL2 并安装 Ubuntu 22.04。
- 优势:你可以享受 Windows 的 GUI 便利性(浏览器查资料、Office 文档处理),同时在 WSL2 中运行完整的 Ubuntu 终端进行深度学习开发。
- 性能:NVIDIA 已为 WSL2 提供完整的 CUDA 支持,性能损失极小(<5%),足以满足绝大多数训练和推理需求。
- 灵活性:可以在不重启电脑的情况下切换不同的 Ubuntu 版本环境,适合多项目并行开发。
总结
- 求稳、老项目、服务器部署 → Ubuntu 20.04 LTS
- 新项目、个人开发、平衡新旧 → Ubuntu 22.04 LTS(当前最佳实践)
- 避免踩坑 → 暂时避开 Ubuntu 24.04,除非你有明确的兼容性测试证明其可用。
最后,记住一点:深度学习的环境配置比操作系统本身更复杂。建议使用 Conda 或 Docker 来管理 Python 环境和依赖,这样即使你在不同版本的 Ubuntu 上,也能保证实验结果的一致性。
云技术博客