努力
加油

在Ubuntu 24.04 LTS上如何正确安装PyTorch用于深度学习开发?

在 Ubuntu 24.04 LTS 上安装 PyTorch,最稳妥、最符合“生产环境”或“严肃开发”逻辑的方式,依然是通过 Conda (Miniconda/Anaconda) 或者 Python venv + pip 配合 NVIDIA 官方推荐的 CUDA 版本进行安装。

这里有一个核心前提你必须先确认:你的机器是否有 NVIDIA GPU?

  • 有 GPU:必须装 CUDA 版本的 PyTorch,否则无法利用硬件提速,训练速度会慢几个数量级。
  • 无 GPU / CPU Only:直接装 CPU 版本即可,但通常深度学习场景下我们默认指 GPU 版。

以下我分两种主流场景给你方案,按推荐程度排序。


方案一:使用 Conda 安装(推荐,依赖管理最省心)

Ubuntu 24.04 默认的 Python 是 3.12,虽然新,但某些老旧的深度学习库兼容性可能还没完全跟上。Conda 能帮你隔离环境,避免污染系统级 Python。

1. 前置检查:驱动和 CUDA Toolkit

PyTorch 的安装包里已经包含了特定版本的 CUDA Runtime(如 cudatoolkit=11.8 或 12.1),你不需要手动去 NVIDIA 官网下载并安装完整的 CUDA Toolkit(除非你要用 nvcc 编译 C++ 扩展)。

但是,你需要确保:

  1. NVIDIA 驱动已正确安装。
    nvidia-smi

    如果能看到显卡信息和驱动版本,说明驱动没问题。Ubuntu 24.04 通常自带了较新的开源驱动,如果 nvidia-smi 报错,请先通过 ubuntu-drivers autoinstall 或从 NVIDIA 官网下载 .run 文件修复驱动。

  2. 确认 CUDA 版本兼容性。
    查看 nvidia-smi 输出右上角的 CUDA Version: XX.X。这表示驱动支持的最高 CUDA 版本。PyTorch 要求的 CUDA 版本必须 小于或等于 这个值。

2. 创建环境并安装

# 创建名为 pytorch_env 的环境,指定 Python 3.10 或 3.11(更稳定)
conda create -n pytorch_env python=3.10
conda activate pytorch_env

# 【关键】访问 PyTorch 官网获取最新命令
# https://pytorch.org/get-started/locally/
# 目前 (2024年中后期) 主流推荐是 CUDA 11.8 或 12.1

# 如果是 CUDA 11.8:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

# 如果是 CUDA 12.1 (更新):
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

注意:-c nvidia 这一步很重要,因为 PyTorch 的 CUDA 依赖现在由 NVIDIA 频道托管,不加可能会下载不到正确的二进制文件。


方案二:使用 pip + venv(轻量级,适合容器化或不想装 Conda)

如果你不喜欢 Conda 占用大量磁盘空间,或者是在 Docker 容器中部署,用原生 Python 虚拟环境更好。

1. 安装系统依赖

Ubuntu 24.04 需要一些基础库来编译可能的 C++ 扩展(如 torchvision 中的某些功能):

sudo apt update
sudo apt install python3-pip python3-dev libgl1-mesa-glx libglib2.0-0

2. 创建虚拟环境

python3 -m venv my_pytorch_env
source my_pytorch_env/bin/activate
pip install --upgrade pip

3. 安装 PyTorch

同样,先去 pytorch.org 复制命令。以 CUDA 12.1 为例:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证安装是否成功(必做!)

不管用哪种方式,安装完后务必运行以下代码验证 GPU 是否被识别:

import torch

print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
    print(f"Current device: {torch.cuda.get_device_name(0)}")
    print(f"CUDA version used by PyTorch: {torch.version.cuda}")
else:
    print("WARNING: No GPU detected! You are running on CPU.")

常见坑点排查:

  1. torch.cuda.is_available() 返回 False:

    • 检查 nvidia-smi 是否正常。
    • 检查你是否安装了 CPU 版本的 PyTorch(看 pip list 里的包名是否包含 cu118 或 cu121 字样)。
    • 检查环境变量 LD_LIBRARY_PATH 是否被错误地修改,导致冲突(通常 Conda 会自动处理,pip 方式有时需要手动 export)。
  2. ImportError: libcuda.so.1: cannot open shared object file:

    • 这是驱动库路径问题。尝试:
      export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
      # 或者根据实际驱动路径调整
    • 永久解决:将上述 export 加到 ~/.bashrc 中。
  3. Ubuntu 24.04 特有的 Python 3.12 兼容性问题:

    • PyTorch 官方对 Python 3.12 的支持正在逐步完善。如果遇到奇怪的编译错误或导入失败,强烈建议降级到 Python 3.10 或 3.11。深度学习领域,“稳定”比“最新”重要得多。

进阶:性能优化与注意事项

  1. 不要混用 conda 和 pip 安装同一个包的依赖:
    尽量全用 conda 安装,或者全用 pip。如果必须混用,先装 conda,再装 pip。

  2. 启用 cuDNN 提速:
    PyTorch 默认会使用 cuDNN。确保你的 NVIDIA 驱动支持对应的 cuDNN 版本。通常 Conda 安装会自动带上匹配的 cuDNN。

  3. 多用户服务器上的权限问题:
    如果你在实验室集群上,不要用 sudo pip install。永远使用 --user 参数或在个人目录下创建 venv/conda 环境。

  4. 关于 WSL2 (Windows Subsystem for Linux):
    如果你是在 Windows 上用 WSL2 跑 Ubuntu 24.04,请确保安装了 WSLg 和最新的 NVIDIA WSL Driver。WSL2 对 CUDA 的支持已经很好,但首次配置容易踩坑,建议参考 NVIDIA 官方文档。

  5. 版本锁定:
    在生产环境中,建议在 requirements.txt 中固定 PyTorch 和 CUDA 的版本号,例如:

    torch==2.3.1+cu121
    torchvision==0.18.1+cu121
    torchaudio==2.3.1+cu121

    这样能保证不同机器间行为一致。

总结:先查驱动,再选 CUDA 版本,最后用 Conda 或 pip 安装。 别折腾源码编译,除非你有特殊需求且时间充裕。对于大多数开发者,官方预编译的二进制包足够快且稳定。