-------------------------------------源码安装pytorch相关--------------------------------
GPU部分和硬件相关,和pytorch无关,只需折腾pytorch即可。
重点解决 PyTorch no longer supports this GPU because it is too old.问题
原因:ptorch 官方说明 为控制编译后的文件大小,编译时将低端的算力部分移除。
因此想要在高版本pytorch上支持低端GPU的话,需要通过源码安装的方式。
官网并不认为这是问题,因此未在issues中,而是放在了discuss中
官方说明 PyTorch no longer supports this GPU because it is too old. - PyTorch Forums
Step0 清空已安装pytorch
conda uninstall pytorch
Step1 确认版本信息
确认要安装的pytorch版本
同之前step1确认要安装的pytorch相关版本。
官网地址:Previous PyTorch Versions | PyTorch 此处找到cuda支持的最新pytorch版本即可
注意是在cuda版本限制的情况下的最新pytorch,而不是最新的pytorch版本
下面以v1.8.1下的window版本为例说明
Step2 找到对应版本的源码
后面需要修改源码,并编译出适配本机的版本。
官方github地址:GitHub - pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration
注意此处不要用master,要选择对应版本,不同版本间说明是有差异的。
将对应版本的源码下载到本地 git clone -b v1.8.1 GitHub - pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration
转到对应版本后,查看README.md说明中的From Source部分
Step2 找到源码编译所需前提
详细阅读相关说明。
1、查看平台无关的公共部分
2、查看各平台的差异部分,其中windows版最复杂
确认所需编译器:
此处提到需要vs2019 16.7.1之前的版本才可以。
Step3 安装平台编译器
下载对应的vs版本
官网地址:Downloads - Visual Studio Subscriptions Portal
注意有些版本微软已不支持,向下查找,并下载不需要密钥的buil tools版本
Step4:修改源码进行适配
直接编译的话依旧会不支持低版本GPU,因此需要修改源码中的支持列表。添加本机的gpu算力
修改文件位置:pytorch\torch\utils\cpp_extension.py
Step5:编译安装
1、到对应的python环境下 conda activate XXX
2、跳转到下载的源码路径下编译,即pytorch路径下
3、执行文档中提到的公共部分
4、根据平台差异进行配置后再安装
官网只是提供示例,无法完全适配每台机器的差异。需要手动设置环境,参照官方的pytorch\.jenkins\pytorch\win-test-helpers\build_pytorch.bat(在下载的源码中) 进行修改并配置。拷贝一份到源码pytorch\下,并set 里面提到的各种变量。
好不容易根据机器状态配置完成,终于能编译了,编译了一晚上,第二天一看,还是出错了。(抓狂。。。)
最后我采用的是将其他vs版本全部卸载了,只留了一个
故不再进行环境配置,直接执行 python setup.py install --cmake
编译过程中发现pytorch的安装脚本中已自带环境搜索功能,并自行设置变量。
经实验不带cmake 使用的是ninja编译,容易出问题,故采用cmake。
该步最容易出各种问题,注意观察失败原因,并在github的issue中搜索相关解答。
Step5:测试是否成功
上述编译完成,无报错即可正常使用
import torch
# 判断pytorch是否支持GPU加速
print(torch.cuda.is_available())
备注:单纯使用torch包是没有问题,但torchvison包是需要另外安装的。
不要使用conda 命令安装torchvison!!,会将已编译好的torch修改成官方适配的版本,导致前功尽弃!!!
后面介绍源码安装torchvison
torchvison的安装--源码_huoshi191的博客-CSDN博客