1. 为什么你需要这份“复古”配置指南?
嘿,朋友们,今天咱们来聊一个有点“复古”但又非常实际的话题:在Python 3.6的环境下,配置PyTorch 1.8.1,并且让它稳稳地跑在CUDA 11.1上。你可能会问,现在Python都出到3.12了,PyTorch也奔着2.0+去了,为啥还要折腾这个老版本组合?这事儿我太有发言权了,因为在实际工作中,尤其是在维护一些老项目、部署一些遗留的生产环境,或者复现一些经典的学术论文代码时,你经常会撞上这个“钉子”。很多优秀的模型和代码库就是基于这个特定的环境开发的,你强行用新版本,大概率会碰到各种依赖冲突、API不兼容的坑,调试起来那叫一个酸爽。
所以,这份指南就是为你准备的,如果你恰好有一台老一点的服务器,或者你的项目代码锁死了Python 3.6和PyTorch 1.8.1,那么跟着我一步步走,就能避开我当年踩过的那些坑,顺利把环境搭起来。整个过程的核心目标就一个:在正确版本的驱动和CUDA支持下,通过最稳定、最快速的国内镜像源,把PyTorch 1.8.1 + CUDA 11.1这个“黄金组合”给装好。别担心,哪怕你是个刚接触深度学习环境配置的小白,我也会用最直白的话把每一步讲清楚。
2. 环境准备:打好地基,检查“三大件”
配置环境就像盖房子,地基不稳,后面全得塌。在动手安装任何东西之前,我们必须先确认三样东西:操作系统、Python版本和NVIDIA显卡驱动。这三者是整个PyTorch GPU环境运行的基石。
2.1 确认你的Python 3.6
首先,我们得确保系统里确实有Python 3.6。打开你的终端(Linux/macOS)或者命令提示符/PowerShell(Windows),输入:
python --version
或者
python3 --version
如果显示的是 Python 3.6.x(比如3.6.8, 3.6.9等),那就对了。如果没有,或者版本不对,你就需要先安装或激活一个Python 3.6的环境。我强烈推荐使用 conda 或者 pyenv 这类环境管理工具来创建独立的Python环境,这样可以避免把你系统里其他项目的环境搞乱。用conda的话,命令很简单:
conda create -n pytorch_legacy python=3.6
conda activate pytorch_legacy
这样你就进入了一个纯净的、只有Python 3.6的“沙箱”,接下来所有的操作都在这里面进行,不会影响外部。
2.2 检查NVIDIA驱动与CUDA兼容性
这是最关键的一步,直接决定了你的PyTorch能不能用上GPU加速。我们需要两个命令。
第一步,看驱动版本:
nvidia-smi
这个命令会弹出一个表格,右上角显示着你的 NVIDIA驱动版本。CUDA 11.1要求驱动版本至少是 450.80.02。我实测过,如果你的驱动版本是450系列或者更高(比如460,470,甚至现在的525,535),那都是可以向下兼容CUDA 11.1的。但如果你的驱动版本太老,比如418,那对不起,你得先去NVIDIA官网下载更新你的显卡驱动了。
第二步,看系统CUDA版本(可选但建议):
nvcc --version
这个命令查看的是你系统里通过NVIDIA CUDA Toolkit安装的CUDA版本。注意,nvidia-smi显示的CUDA版本是驱动最高能支持的CUDA版本,而nvcc --version显示的是你实际安装的CUDA Toolkit版本。对于PyTorch来说,它自带所需的CUDA运行时库,所以即使你系统没装CUDA 11.1的Toolkit,只要驱动够新,PyTorch也能通过自带的库调用GPU。但为了环境统一和避免其他依赖出问题,我建议你系统里也安装一个CUDA 11.1的Toolkit。不过别急,我们可以稍后用conda来安装,这样最干净。
简单总结一下:驱动版本 >= 450.80.02 是硬性门槛。满足了这一点,我们就成功了一大半。
3. 选择与配置安装源:让下载飞起来
环境检查无误,接下来就要准备安装了。直接从PyTorch官网下载安装包,对于国内用户来说,速度可能慢如蜗牛,甚至经常失败。所以,使用国内镜像源是必选项,能节省大量时间和避免网络烦恼。
3.1 理解PyTorch的安装渠道
PyTorch官方提供了几种安装方式:pip、conda和libtorch。对于我们这个特定版本组合,pip是最直接、最不容易出错的。PyTorch会把针对不同CUDA版本编译好的“轮子”文件(.whl)放在 https://download.pytorch.org/whl/ 这个目录下。我们需要的就是CUDA 11.1对应的轮子,它的路径标签是 cu111。
3.2 配置国内镜像源
国内有几个非常棒的镜像站,比如清华大学的TUNA镜像源和阿里云的镜像源。它们会定时同步PyTorch官方的软件包,我们从它们那里下载,速度能有几MB/s甚至更高。
但是,这里有个小陷阱。PyTorch的主包 torch 和相关的 torchvision、torchaudio,有时候镜像源同步并不完整,或者某些特定版本只有官方源才有。因此,最稳妥的命令格式是:指定国内镜像源作为主要索引,同时把官方源作为额外索引。这样,pip会优先从国内源查找,如果找不到(比如某些版本的torchaudio),再去官方源找。
以最常用的清华源为例,完整的安装思路是这样的:
pip install torch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
这个命令里,-f 参数指定了一个PyTorch官方的索引文件,它列出了所有可用的稳定版轮子。-i 参数则指定了优先使用的镜像源地址。
不过,根据我的经验,对于 torch==1.8.1+cu111 这个精确版本,使用下面这个更直接的命令成功率更高,它明确指定了CUDA版本和索引:
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
如果清华源因为网络问题不稳定,你可以把 -i 后面的地址换成阿里云的源 https://mirrors.aliyun.com/pypi/simple/,同样好用。
4. 分步安装与验证:亲手点亮GPU
理论准备就绪,现在开始实战。我会把每一步的命令和可能遇到的情况都列出来。
4.1 安装CUDA Toolkit(conda推荐方式)
虽然PyTorch自带运行时,但为了万无一失,我们可以用conda安装一个cudatoolkit。conda的好处是它会把库安装在当前环境内,完全独立于系统,管理起来特别方便。
conda install cudatoolkit=11.1 -c conda-forge
这里指定了版本11.1,并且从conda-forge这个频道获取,软件包通常更新更及时。
4.2 执行PyTorch安装命令
现在,在已经激活的Python 3.6环境中,运行我们精心准备的pip命令。我建议先单独安装torch,确认成功后再安装vision和audio。
pip install torch==1.8.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
静静等待下载和安装。如果一切顺利,你会看到大段的成功安装信息。然后继续安装配套的torchvision和torchaudio:
pip install torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:torchaudio==0.8.1 这个版本在有些镜像里可能没有对应的cu111版本,如果安装失败,可以尝试不指定CUDA版本,只安装 torchaudio==0.8.1,或者安装版本 0.8.0。对于大多数视觉任务,torchaudio不是必须的。
4.3 至关重要的验证环节
安装完成绝不等于大功告成。一定要验证!打开Python解释器:
import torch
print(torch.__version__) # 应该输出:1.8.1+cu111
print(torch.cuda.is_available()) # 梦寐以求的 True!
print(torch.cuda.get_device_name(0)) # 显示你的GPU型号,例如:NVIDIA GeForce RTX 3080
print(torch.cuda.current_device()) # 显示当前使用的GPU索引
如果 torch.cuda.is_available() 返回 True,那么恭喜你,你的PyTorch已经成功识别并可以调用GPU了!如果返回 False,别慌,我们还有排查步骤。
5. 常见问题排查与解决指南
即使按照步骤来,也可能遇到问题。这里我把自己和朋友们踩过的坑汇总一下,帮你快速定位。
5.1 CUDA不可用(False)怎么办?
这是最常见的问题。请按照以下顺序排查:
- 驱动再确认:再次运行
nvidia-smi,确认驱动版本确实>=450.80.02,并且这个命令能正常输出,没有报“命令找不到”。如果找不到,说明驱动没装好或者没加入系统路径。 - 环境冲突:你是否在正确的conda环境里?运行
conda activate pytorch_legacy再试试。有时候在终端里看着环境名对了,但实际Python路径可能不对。 - PyTorch版本错误:确认你安装的torch版本字符串里包含
+cu111。有时网络问题会导致pip silently fallback到一个CPU版本的torch。你可以用pip list | grep torch查看。 - 多版本CUDA冲突:如果你的系统安装了多个CUDA版本(比如通过
/usr/local/cuda-11.1和/usr/local/cuda-12.1),可能会产生链接混乱。一个治本的方法是,在conda环境内安装cudatoolkit(如4.1步骤所述),并确保在激活该环境时,系统环境变量LD_LIBRARY_PATH(Linux)或PATH(Windows)优先指向conda环境内的CUDA库。conda环境通常会自动管理好这些。
5.2 安装过程中报错“找不到满足要求的版本”
这种错误通常是因为pip在指定的索引里找不到你要求的精确版本。可以尝试:
- 移除版本精确锁定:试试
pip install torch==1.8.1 torchvision==0.9.1不指定+cu111,让pip自动选择兼容的CUDA版本。但这样有风险选到CPU版。 - 更换镜像源:将
-i参数后的清华源换成阿里云源https://mirrors.aliyun.com/pypi/simple/。 - 仅使用官方源:作为最后的手段,去掉
-i参数,直接pip install torch==1.8.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html。虽然慢,但最全。
5.3 运行时出现“CUDA out of memory”或其它CUDA错误
这说明PyTorch能识别GPU了,但使用中出了问题。
- 显存不足:这是好消息也是坏消息。好消息是GPU能用,坏消息是你的模型或数据批次太大。尝试减小
batch_size。 - CUDA内核错误:可能是你的代码或某个依赖库与CUDA 11.1不兼容。尝试更新你的代码,或者检查是否有其他CUDA相关的包(如
numba,cupy)版本冲突。
6. 巩固与优化:让环境更健壮
环境配好了,顺手做几个优化,能让后续开发更顺畅。
6.1 固定依赖版本
创建一个 requirements.txt 文件,记录下当前环境所有包的精确版本,方便以后复现或部署。
pip freeze > requirements.txt
对于这个环境,文件里关键的行应该是:
torch==1.8.1+cu111
torchvision==0.9.1+cu111
torchaudio==0.8.1
6.2 考虑使用Docker(高级但一劳永逸)
如果你需要频繁在不同机器上部署这个环境,或者追求极致的隔离性和可复现性,那么Docker是终极解决方案。你可以基于一个Python 3.6的官方镜像,编写Dockerfile,将上述安装步骤固化其中。这样,在任何支持Docker的机器上,一条命令就能启动一个完全一致的环境。这对于团队协作和持续集成/持续部署(CI/CD)流程来说,是标准做法。
6.3 性能微调
环境稳定后,可以关注一下性能。确保你的显卡处于性能模式(对于笔记本,注意电源设置)。在PyTorch代码中,可以使用 torch.backends.cudnn.benchmark = True 来让cuDNN自动寻找最适合你硬件和输入尺寸的高效卷积算法,这对迭代训练有一定加速效果。不过,如果你的输入尺寸变化频繁,这个开关反而会降低效率。
走完以上所有步骤,你应该已经拥有了一个稳定可用的Python 3.6 + PyTorch 1.8.1 + CUDA 11.1开发环境。这套组合虽然版本不新,但在其适用的场景下非常可靠。记住,在深度学习领域,环境的可复现性往往比追求最新版本更重要。下次当你再遇到那些指明需要“PyTorch 1.8”的老项目时,你就可以从容不迫地掏出这份指南,快速搭建起属于你的“时光机”,让经典的代码重新焕发活力。
687



被折叠的 条评论
为什么被折叠?



