Win11-RTX4060安装Pytorch-GPU的历程回顾总结
1 最开始按照视频安装python3.6版本的anaconda
在最后一步用torch.cuda.is_available()
验证pytorch是否可以使用GPU时,提示False
,即验证失败(PS.需要提示True
才成功)
2 查询资料得知可能原因是‘conda安装GPU版pytorch,实际却是安装的CPU版本’
conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]_pytorch-mutex_windSeS的博客-CSDN博客
根据上述博客,我了解到:
pytorch文件命名格式
首先介绍一个pytorch的文件名的普通命名格式。
一个在python=3.7conda 环境下,cudatoolkit=10.1版本的pytorch=1.7.0的文件名为:pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2。
一个在python=3.7conda 环境下,CPU版本的pytorch=1.7.0的文件名为pytorch-1.7.0-py3.7_cpu_0.tar.bz2。
从上可以看出,不同的python版本,GPU/CPU,若是GPU版本,则cudatoolkit的版本,再加上pytorch的版本,唯一指定一个pytorch安装文件。
问题的根本原因
找不到对应GPU版本的pytorch文件,所以conda就用CPU替代了=v=
即指定某一版本cudatoolkit下的指定版本的pytorch不在源(国内conda镜像源或因外源)中,导致某一版本cudatoolkit下的指定版本的pytorch无法被conda install找到,然而不凑巧的是,源中却有指定版本的pytorch,不过它是CPU版本。那么,conda install这个小机灵鬼自作主张的替你安装了这个版本。结果就是,你觉得明明安装的是GPU版pytorch,可是像是有种神秘力量让你最终得到的总是cpu版pytorch。
解决方案
我们安装前先要确定源中是否真的有我们组合出来的版本,[python|cudatoolkit|pytorch]这三个版本不同的组合,真的不一定有。
3 知道了原因和解决方案,我就去验证了conda是否安装成了CPU版本的pytorch并查询了torch和python版本的关系
首先我在自己新建的pytorch环境中输入conda list
,查看当前环境安装了哪些包,发现在pytorch那一行第三列中显示的是含cpu
字样而非类似py3.9_cuda11.8_cudnn8_0
的字样,确定conda确实在pytorch环境中安装成了cpu版本的pytorch
知道了原因和解决方案,我就去查询了torch和python版本的关系
在博客安装支持CUDA 12的pytorch教程 - 知乎 (zhihu.com)中发现了这张关系对应表
在博客【最新】CUDA Toolkit版本及可用PyTorch对应关系(参考官网)_cuda12.2对应的pytorch_将月藏进诗尾的博客-CSDN博客中发现了CUDA Toolkit版本及可用PyTorch对应关系表
两张表结合起来看,最后我猜测我遇到此情况的原因可能是:
根据后一个博客给出的表,我按照官网首页给出的命令 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
尝试安装的是为11.8的CUDAToolkit版本,其对应可用的PyTorch版本包括1.13.1,1.13.0 ,2.0.0
根据前一个博客给出的表,这三个pytorch版本都至少需要python版本为3.7
而我安装的支持python3.6的anaconda版本,藉此导致了找不到相应的GPU版本,conda install选择给我安装CPU版本。
值得一提的是,在这一过程中,我了解了一些Anaconda创建、激活、退出、删除环境及管理环境中的包相关命令
Anaconda创建、激活、退出、删除环境及管理环境中的包相关命令——最新全面直观版_anaconda虚拟环境删除包_寒冢人家的博客-CSDN博客
另外,CUDA似乎并不需要自己专门安装
在Win11-RTX4060安装Pytorch-GPU干货避坑指南_安装cuda自动重启_鹅毛在路上了的博客-CSDN博客这篇博客中提到CUDA相关安装,经查询和后续安装验证,暂时不用安装CUDA,在虚拟环境中安装pytorch时,好像会自动安装,具体情况不了解,相关原因暂不深究。
4 卸载python3.6版本的Anaconda,重新安装python3.9版本的Anaconda,重新按照教程进行环境安装配置
前面一切正常,在新建虚拟环境中输入命令 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
回车后报错
CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages.
Exception: HTTPSConnectionPool
参考博客:
关于anaconda环境conda/pip install 报SSL错误问题(有两种情况) - 知乎 (zhihu.com)
conda创建新环境出现CondaSSLerror - 知乎 (zhihu.com)
尝试解决方法:换源、配置环境变量、复制dll文件,每一个解决措施都在前一个措施的基础上进行
- 换源 没用
- 换源+配置环境变量 没用
- 不换源+配置环境变量 没用
- 不换源+配置环境变量+复制dll文件 有用
其他组合没有尝试,第4个组合有用不代表必须要配置环境变量,或者必须使用默认源
我在最后成功pytorch安装成功后,删除了我刚刚手动配置的anaconda环境变量,毕竟anaconda安装时不推荐配置环境变量。
值得一提的是,在这个过程中我了解了anaconda换源和恢复默认源的相关知识
conda 恢复默认源_conda 官方源_zlabxyz的博客-CSDN博客
anaconda换源和恢复默认,解决失效问题_conda还原_zhankai1122的博客-CSDN博客
Anaconda换源和恢复默认源_云飞扬°的博客-CSDN博客
5 最后的一点小问题
在新建虚拟环境中输入命令 conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
后出现:
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done
在上述语句卡了很久时间,我中断了又重新输入安装命令了几次,最后成功。