被版本支配的恐惧(真实故事)
上周我的学弟兴冲冲跑来:“师兄!我照着CSDN教程装PyTorch,结果训练时直接报错cuda runtime error!” 我一看他的环境——Python3.12强行装PyTorch1.8,搭配CUDA11.6…(此时应有乌鸦飞过)这就像用Win11系统装XP时代的显卡驱动,能不翻车吗?!
一、版本对应表(2024最新版)
(掏出小本本记重点!!!)这是我整理的最新版本对应关系,覆盖PyTorch 1.8到2.1版本:
PyTorch版本 | torchvision版本 | Python版本 | CUDA版本 |
---|---|---|---|
2.1.0 | 0.16.0 | 3.8-3.11 | 11.8 / 12.1 |
2.0.1 | 0.15.2 | 3.8-3.11 | 11.7 / 11.8 |
1.13.1 | 0.14.1 | 3.7-3.10 | 11.6 / 11.7 |
1.12.1 | 0.13.1 | 3.7-3.10 | 10.2 / 11.6 |
1.8.2 | 0.9.2 | 3.6-3.9 | 10.2 / 11.1 |
(注意红线):Python版本选择请遵循"就低不就高"原则!新版本Python可能不被老PyTorch支持,千万别头铁!
二、安装命令大全(保姆级教程)
第一步:查CUDA版本
在终端敲入:
nvidia-smi # 右上角显示的最高版本号(不是当前使用版本!)
第二步:选择安装命令
以PyTorch 2.0.1 + CUDA 11.8为例:
方法一:conda安装(首选)
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 -c pytorch
方法二:pip安装
pip3 install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
(避坑提醒):看到"cu118"这种后缀了吗?这表示CUDA11.8专用版本,数字必须严格匹配!
三、验证安装是否成功
运行这个"三重验证"脚本:
import torch
# 基础验证
print(f"PyTorch版本:{torch.__version__}") # 应该显示2.0.1
# CUDA验证
print(f"CUDA是否可用:{torch.cuda.is_available()}") # 必须返回True!
print(f"当前CUDA版本:{torch.version.cuda}") # 应该显示11.8
# 实战测试(重要!)
test_tensor = torch.randn(3,3).cuda()
print(test_tensor) # 应该显示在GPU上的张量
如果最后一步报错…(别慌)八成是CUDA版本没对上!
四、常见死亡问题急救包
Q1:显示CUDA不可用?
- 检查驱动版本:
nvidia-smi
显示的CUDA版本 >= PyTorch所需版本 - 重装对应版本:
pip uninstall torch
后重装 - 终极杀招:使用
conda clean --all
清理缓存
Q2:安装时下载龟速?
试试清华镜像源(亲测提速10倍):
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Q3:多版本共存怎么办?
用conda虚拟环境大法:
conda create -n pytorch2.0 python=3.9
conda activate pytorch2.0
# 然后在虚拟环境中安装
五、版本管理黑科技
(压箱底技巧)用requirements.txt
锁定版本:
torch==2.0.1+cu118
torchvision==0.15.2+cu118
torchaudio==2.0.2
执行一键安装:
pip install -r requirements.txt
六、血泪经验谈
去年我在部署YOLOv7时,因为torchvision版本高了0.0.1,导致NMS函数报错…(整整排查两天!)所以:
- 新项目开始前先用
pip freeze > requirements.txt
保存当前环境 - 遇到玄学报错,首先检查版本对应表
- 重要项目不要轻易升级版本!(说多了都是泪)
终极建议
新手直接使用官网安装命令生成器(真香警告):
访问 [https://pytorch.org/get-started/locally/] 选择对应参数,直接复制命令就行!
记住:版本匹配是深度学习的入场券,别让安装问题浇灭你的热情!遇到问题欢迎留言,看到必回~(比心)