Ubuntu上PyTorch版本怎么选
小樊
38
2025-11-23 03:11:45
Ubuntu上PyTorch版本选择指南
一 决策顺序与关键检查
- 明确用途与稳定性:新项目优先选择较新的稳定版(如2.x),生产环境尽量固定小版本;如需兼容旧项目,再选择对应的1.13.x/2.0.x等历史版本。
- 检查Python版本:PyTorch在Linux上通常要求Python ≥ 3.8(建议用3.10/3.11),先确认以避免不兼容。
- 判断是否有NVIDIA GPU:有GPU再考虑CUDA;无GPU或仅做推理/CPU训练,直接选CPU版更省事。
- 查看驱动与CUDA:用nvidia-smi查看驱动与最高支持的CUDA Runtime;用nvcc --version查看已安装的CUDA Toolkit(两者可能不同,安装包以CUDA Runtime为准)。
- 使用虚拟环境:优先用conda或venv隔离依赖,避免系统环境污染与冲突。
二 选择规则与推荐组合
- 无GPU或仅CPU推理:选择CPU-only构建,最省心、跨平台一致。
- 有NVIDIA GPU:按驱动支持的CUDA Runtime选择对应的PyTorch预编译包(如cu118/cu121/cu126);若驱动较新但CUDA Toolkit较旧,优先用PyTorch官方提供的预编译CUDA包,通常无需单独安装完整Toolkit。
- 驱动与CUDA的取舍:驱动决定“最高可用的CUDA版本”,PyTorch包决定“实际使用的CUDA版本”;两者不必完全一致,但需满足“PyTorch所需CUDA ≤ 驱动支持的CUDA”。
- 常用组合示例(按场景选择其一):
- CPU开发/部署:Python 3.10 + PyTorch CPU版
- 新项目GPU:Python 3.10/3.11 + PyTorch 2.6.x + cu126
- 兼顾旧项目:Python 3.8–3.10 + PyTorch 2.1.x + cu121
- 历史项目维护:Python 3.7–3.9 + PyTorch 1.13.x(对应其支持的CUDA)
- 版本对齐要点:确保PyTorch版本 ↔ CUDA版本 ↔ Python版本三者兼容;若不确定,优先固定Python版本,再在PyTorch官网选择对应的CUDA构建。
三 安装与验证示例
- 准备环境(示例):
- conda create -n torch-env python=3.10 -y && conda activate torch-env
- CPU版(pip):
- pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
- GPU版(pip,示例为CUDA 11.8):
- pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- GPU版(conda,示例为CUDA 11.8):
- conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
- 验证安装:
- python - <<‘PY’
import torch
print(“PyTorch:”, torch.version, “CUDA available:”, torch.cuda.is_available())
if torch.cuda.is_available():
print(“CUDA version:”, torch.version.cuda)
print(“Device:”, torch.cuda.get_device_name(0))
PY
四 常见问题与排查
- 版本不匹配/不可用:若torch.cuda.is_available()为False,优先核对驱动与CUDA的对应关系,确认安装了与CUDA匹配的PyTorch构建;必要时更换为更合适的cu118/cu121/cu126包。
- 驱动问题:无GPU或驱动异常会导致CUDA不可用;可用sudo ubuntu-drivers autoinstall或安装指定版本驱动(如nvidia-driver-555),再重启验证。
- 网络/下载慢:pip安装可换国内镜像(如清华源)或在公司内网使用私有镜像;也可直接用PyTorch官方索引URL提升稳定性。
- 权限/依赖/环境变量:避免全局安装引发权限问题;确保基础依赖已装;如自行编译或设置环境变量,检查LD_LIBRARY_PATH、PATH、CUDA_HOME等是否正确。