1. 为什么选择PyTorch 1.2.0?
虽然PyTorch已经迭代到更高版本,但1.2.0仍然是许多经典论文复现和教学项目的首选。这个版本在Windows平台上的兼容性经过长期验证,对GTX 10/20系列显卡支持良好。我在帮学生调试YOLOv3等项目时发现,很多开源代码库仍以这个版本为基准开发。
不过要注意,RTX 30系显卡用户需要选择更高版本的PyTorch(建议1.7.1+),因为30系显卡需要CUDA 11+的支持。这也是为什么很多实验室还在使用老显卡做教学——环境配置确实更省心。
2. 环境准备:避坑第一关
2.1 显卡驱动检查
首先右键桌面打开NVIDIA控制面板,点击左下角"系统信息",查看驱动程序版本。我遇到过最典型的问题就是学生装了最新驱动反而导致CUDA报错,这时候需要回退到特定版本:
- GTX 1060推荐驱动版本:456.71
- RTX 2060推荐驱动版本:457.09
可以通过NVIDIA官网的驱动程序存档页面下载历史版本。安装后记得重启,然后运行nvidia-smi命令验证驱动是否正常。
2.2 Visual Studio的隐藏需求
很多人会忽略PyTorch对VS的依赖。实测发现缺少VS 2017会导致CUDA安装失败,建议提前安装VS 2017 Community版。安装时只需勾选"使用C++的桌面开发"组件,大约占用4GB空间。有个取巧的方法:如果只是用PyTorch做推理,可以尝试安装更轻量的VS Build Tools。
3. Anaconda的智能安装法
3.1 版本选择策略
虽然官网提供最新版Anaconda,但我更推荐使用2020.02版(Python 3.7)。这个版本自带的包与PyTorch 1.2.0兼容性更好,还能避免Spyder等IDE的版本冲突问题。有个小技巧:安装时取消勾选"Register Anaconda as default Python",这样可以保留系统原有Python环境。
3.2 换源加速技巧
安装完成后立即修改.condarc文件(在用户目录下),添加清华源:
channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud4. CUDA与cuDNN的精装方案
4.1 版本组合的黄金搭配
PyTorch 1.2.0官方推荐CUDA 10.0 + cuDNN 7.4.1,但实测发现CUDA 10.1也能正常工作。有个细节要注意:安装CUDA时不要勾选Visual Studio Integration选项,否则可能引发冲突。安装完成后,需要手动将以下路径加入系统环境变量:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp4.2 cuDNN的防错安装
解压cuDNN压缩包后,很多人直接复制文件到CUDA目录,其实更稳妥的做法是:
- 将bin目录下的cudnn64_7.dll复制到CUDA的bin目录
- 将include目录下的cudnn.h复制到CUDA的include目录
- 将lib目录下的cudnn.lib复制到CUDA的lib\x64目录
5. PyTorch环境搭建实战
5.1 创建隔离环境
使用conda创建Python 3.6环境是必须的,因为PyTorch 1.2.0不支持更高版本Python。我习惯用这个命令:
conda create -n pytorch12 python=3.6.8选择3.6.8而不是最新的3.6.x可以避免后续安装numpy时的版本冲突。
5.2 两种安装方式对比
官方命令安装:
pip install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html注意三个等号是必须的,这是PyTorch的特殊版本指定语法。
本地whl安装:
- 从https://download.pytorch.org/whl/torch_stable.html下载:
- cu100/torch-1.2.0-cp36-cp36m-win_amd64.whl
- cu100/torchvision-0.4.0-cp36-cp36m-win_amd64.whl
- 使用迅雷下载速度可达满速
- 安装时先装torch再装torchvision
5.3 依赖库的版本锁定
创建requirements.txt时要特别注意这些版本:
numpy==1.16.4 # 必须低于1.17.0 Pillow==6.2.2 # 高于7.0会导致torchvision报错 opencv-python==4.1.2.30 # 新版会有API变更安装时建议使用豆瓣源加速:
pip install -r requirements.txt -i https://pypi.doubanio.com/simple6. 环境验证与排错
6.1 基础验证步骤
在Python交互环境中依次执行:
import torch print(torch.__version__) # 应输出1.2.0 print(torch.cuda.is_available()) # 应输出True test = torch.randn(3,3).cuda() # 不应报错6.2 常见错误解决方案
错误1:TypeError: array() takes 1 positional argument but 2 were given这是Pillow版本过高导致,执行:
pip install pillow==6.2.2 --force-reinstall错误2:CUDA runtime error (38) : no CUDA-capable device is detected检查设备管理器中的显卡是否正常,尝试重新安装驱动,并确保没有启用核显。
7. 开发环境优化建议
7.1 VS Code配置技巧
安装Python扩展后,建议修改settings.json:
{ "python.pythonPath": "C:\\\\Anaconda3\\\\envs\\\\pytorch12\\\\python.exe", "python.linting.pylintEnabled": false, "python.formatting.provider": "autopep8" }这样可以避免代码提示和格式化的问题。
7.2 Jupyter Notebook集成
在PyTorch环境中安装jupyter:
conda install nb_conda然后创建内核:
python -m ipykernel install --user --name pytorch12 --display-name "PyTorch 1.2.0"8. 项目实战注意事项
当运行老项目时,可能会遇到张量类型不匹配的问题。这是因为PyTorch 1.2.0默认创建FloatTensor,而新版是DoubleTensor。解决方法是在代码开头添加:
torch.set_default_tensor_type('torch.FloatTensor')对于数据加载,建议使用torchvision 0.4.0的兼容模式:
from torchvision import datasets dataset = datasets.ImageFolder(root='path', transform=transforms.ToTensor())