PyTorch环境配置及安装总结

459 阅读5分钟

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)中发现了这张关系对应表

image.png

在博客【最新】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)

conda install无法安装安装,提示 CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is_纬领网络的博客-CSDN博客

尝试解决方法:换源、配置环境变量、复制dll文件,每一个解决措施都在前一个措施的基础上进行

  1. 换源 没用
  2. 换源+配置环境变量 没用
  3. 不换源+配置环境变量 没用
  4. 不换源+配置环境变量+复制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

在上述语句卡了很久时间,我中断了又重新输入安装命令了几次,最后成功。