🧩 一、CUDA 环境的两种来源

CUDA(Compute Unified Device Architecture)分为两部分:

类型 功能 通常位置 谁提供
CUDA Toolkit(开发套件) 编译 CUDA 程序、包含 nvcc、头文件、静态库 /usr/local/cuda-* 你自己系统安装
CUDA Runtime(运行时库) 运行 PyTorch / TensorFlow / cuDNN 等程序 通常是 .so 动态库 PyTorch(或 conda 包)自动安装

👉 也就是说:

  • 系统 CUDA Toolkit:给开发者编译用(比如写 CUDA C++、编译自定义算子)。
  • conda/pip CUDA Runtime:给 PyTorch 运行用,不依赖系统 CUDA。

⚙️ 二、本地 CUDA 与 conda CUDA 的区别

对比项 系统 CUDA Toolkit conda CUDA runtime
用途 编译代码、开发 运行 PyTorch、推理训练
是否随 PyTorch 一起安装 是(通过 pytorch-cuda 或 wheel)
卸载/升级 系统层面操作 仅限 conda 环境内
优先级 被 conda 环境覆盖 高(运行时优先)

核心原则

PyTorch 运行时优先使用 conda/pip 环境自带的 CUDA 动态库,而不是系统 /usr/local/cuda


🧠 三、不同安装方式的区别

✅ 1. conda install pytorch ... pytorch-cuda=xx.x

  • 安装 PyTorch + CUDA runtime(如 cuBLAS/cuDNN)。
  • 优点:版本匹配稳定,不依赖系统 CUDA。
  • 缺点:会重复占用磁盘空间。

示例:

1
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

👉 PyTorch 使用 conda 环境里的 CUDA 12.1 库,与系统 CUDA 无关。


✅ 2. pip install torch ... --index-url https://download.pytorch.org/whl/cu124

  • 直接装官方 wheel 包,wheel 已包含对应版本的 CUDA。
  • 优点:安装快,轻量。
  • 缺点:不能自由切换 CUDA 版本;版本固定在打包时的 CUDA。

示例:

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

✅ 3. 使用系统 CUDA

当你已经有系统 CUDA(比如 /usr/local/cuda-12.4),可以用以下方式让 PyTorch 使用系统库:

1
2
3
4
# 在 .zshrc 里配置
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

然后安装 CPU 版 PyTorch 或不指定 CUDA runtime:

1
conda install pytorch torchvision torchaudio -c pytorch

PyTorch 会自动链接到系统 CUDA 12.4 运行时。


🧮 四、版本匹配原则

组件 功能 推荐匹配方式
NVIDIA Driver 驱动硬件,提供底层接口 ≥ CUDA 对应版本要求
CUDA Runtime 程序运行依赖 与 PyTorch build 版本一致
CUDA Toolkit 开发编译工具 可不同,只要驱动支持

举例:

  • 本地 CUDA 12.4 + 驱动 570.xx ✅
  • conda 安装 PyTorch (CUDA 12.1 runtime) ✅
    → 驱动能向下兼容 CUDA 12.1 程序。

🔬 五、验证与调试

1
2
3
4
5
import torch
print(torch.version.cuda) # PyTorch 编译时使用的 CUDA 版本
print(torch.cuda.is_available()) # True 说明 GPU 正常
print(torch.cuda.get_device_name()) # 查看显卡型号
print(torch.cuda.get_device_capability()) # 比如 (8, 9) = RTX 4060

💡 六、实际建议

使用场景 推荐方式
只想训练模型、稳定为主 conda install pytorch-cuda=xx.x
想保持轻量,用 pip 安装 pip install torch ... --index-url ...
自己写 CUDA 扩展、自定义算子 用系统 CUDA(CUDA_HOME 指向 /usr/local/cuda-*
多版本环境切换 用 conda 虚拟环境隔离 CUDA 版本