跳转至

如何给带有nvidia的linux设备配置PyTorch

众所周知, 在第一次为nvidia显卡配置PyTorch环境时, 会碰见很多障碍

这主要由以下几个部分原因导致:

  1. PyTorch 分成 CPU 和 GPU 版本, CPU的不能给GPU驱动跑 🧱
  2. torch支持的CUDA版本, 和本机的CUDA驱动版本不兼容 😅
  3. 包管理器处理内部依赖冲突 🤺

因此我们在这里为 PyTorch(GPU) + Linux 环境配置写一个 Cheat Sheet

前置说明

  1. CUDA 版本兼容性:
    • nvidia-smi 显示的 CUDA Version: 12.6 是指电脑显卡驱动支持的最高 CUDA 版本
    • PyTorch 自身会捆绑一个特定版本的 CUDA Toolkit (如 11.8 或 12.1)
    • 只要 PyTorch 捆绑的 CUDA Toolkit 版本 "小于等于" 本机驱动版本 (12.6),就可以正常工作
  2. 环境隔离: 使用 Conda 创建独立环境是最佳实践
    • 这可以避免不同项目之间的包版本冲突,让您的实验环境纯净、可复现
    • 但在笔者2025-07的尝试中, 存在异常错误, 因此本文的安装虽然在conda环境中, 但torch的安装是基于pip的
  3. 安装顺序:
    1. 先用 Conda 创建环境
    2. 然后用 Conda/pip 安装最核心、最复杂的包(PyTorch 和其 CUDA 依赖)

详细步骤

(1) 创建 conda 环境:

Bash
1
2
3
4
# 创建一个名为 "repro_env" 的新环境. 指定 Python 版本为 3.10
conda create -n repro_env python=3.10
# 环境激活
conda activate repro_env

(2) 使用 pip 安装 Torch:

我们将使用 PyTorch 官方推荐的命令 (conda/pip, 取决于官网给的是啥) 来安装,这会自动处理好 CUDA Toolkit 的依赖

请访问 PyTorch 官网安装页面 获取最新的安装命令

比如, 对笔者而言:

alt text

在选择好PyTorch Build - Your OS - Package - ...后, 系统安装的命令会自动显示出来:

Bash
1
2
# 这是官网对 笔者电脑配置 提供的指令, 请你根据自己的情况灵活调整
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126

如果一切正常, 那就安装完成!

反之, 肯定是遇见了问题, 多半是依赖版本不正确导致的, 详见后文 常见问题汇总 :)

环境验证

按照上述流程, 如果已经安装完成 (either is ok):

  • 上面流程一遍过
  • 上面报错, 在"常见问题汇总"里解决

现在我们用一个脚本检验环境, 看看是否能使用PyTorch:

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 这是一个检验环境中PyTorch的脚本
import torch

# 1. 检查 CUDA 是否可用
print(f"CUDA is available: {torch.cuda.is_available()}")

# 2. 如可用, 查看当前 PyTorch 使用的 CUDA 版本
if torch.cuda.is_available():
    print(f"PyTorch CUDA version: {torch.version.cuda}")
    # 3. 查看 GPU 数量
    print(f"Number of GPUs: {torch.cuda.device_count()}")
    # 4. 查看当前 GPU 的名称 (比如: 笔者的是RTX 3050)
    print(f"GPU Name: {torch.cuda.get_device_name(0)}")

如果你的输出呈现类似下面的模样, 那就 everything works!

Bash
1
2
3
4
CUDA is available: True
PyTorch CUDA version: 12.1
Number of GPUs: 1
GPU Name: NVIDIA GeForce RTX 3050 Laptop GPU

常见问题汇总

torchaudio需要的torch版本不兼容

在进行 pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126 时, 笔者愚见了这个问题

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Installing collected packages: nvidia-cusparselt-cu12, mpmath, typing-extensions, triton, sympy, pillow, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufile-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, numpy, networkx, MarkupSafe, fsspec, filelock, nvidia-cusparse-cu12, nvidia-cufft-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, torch, torchvision

Attempting uninstall: torchvision

Found existing installation: torchvision 0.20.1

Uninstalling torchvision-0.20.1:

Successfully uninstalled torchvision-0.20.1

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

torchaudio 2.5.1 requires torch==2.5.1, but you have torch 2.8.0+cu126 which is incompatible.

Successfully installed MarkupSafe-2.1.5 filelock-3.13.1 fsspec-2024.6.1 jinja2-3.1.4 mpmath-1.3.0 networkx-3.3 numpy-2.1.2 nvidia-cublas-cu12-12.6.4.1 nvidia-cuda-cupti-cu12-12.6.80 nvidia-cuda-nvrtc-cu12-12.6.77 nvidia-cuda-runtime-cu12-12.6.77 nvidia-cudnn-cu12-9.10.2.21 nvidia-cufft-cu12-11.3.0.4 nvidia-cufile-cu12-1.11.1.6 nvidia-curand-cu12-10.3.7.77 nvidia-cusolver-cu12-11.7.1.2 nvidia-cusparse-cu12-12.5.4.2 nvidia-cusparselt-cu12-0.7.1 nvidia-nccl-cu12-2.27.3 nvidia-nvjitlink-cu12-12.6.85 nvidia-nvtx-cu12-12.6.77 pillow-11.0.0 sympy-1.13.3 torch-2.8.0+cu126 torchvision-0.23.0+cu126 triton-3.4.0 typing-extensions-4.12.2 

(1) 问题分析:

这是一个非常典型的 dependency conflict 问题

  • 当前的环境里已经安装了一个叫做 torchaudio 的库,它的版本是 2.5.1
  • 这个版本的 torchaudio 严格要求 PyTorch (torch) 的版本必须是 2.5.1
  • 然而,我们刚刚运行的命令成功安装了 torch 的 2.8.0 版本
  • 这就导致了冲突,torchaudio 包现在处于一个“损坏”状态,因为它依赖的 torch 版本不对

(2) 问题解决:

最简单粗暴的方式是, 在一条命令里同时更新 PyTorch 生态系统的所有主要组件 (torch, torchvision, torchaudio), 让 pip 为您找到它们之间相互兼容的版本

Bash
1
2
# 此命令和之前的命令相比, 只是增加了 torchaudio
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

这样做的好处是: pip 会一次性地去解析这三个包的依赖关系, 并从指定的 cu126 仓库中下载它们各自最新的、并且相互兼容的版本(例如 torch-2.8.0, torchvision-0.23.0, torchaudio-2.8.0)

它会自动卸载旧的不兼容版本,并安装新的匹配版本,从而完美解决冲突 😍