一.问题
正常安装某版本pytorch时,采用官网的方法和对应的命令,选择适合的pytorch、cudatoolkit版本
Previous PyTorch Versions | PyTorch
由于要在GPU上运行,但测试发现pytorch装的是cpuonly的版本:
pythonimport torchtorch.cuda.is_available()
得到的结果是false
再检查安装的pytorch版本,可以看到是cpuonly的版本:
二.解决方案
这里建议直接采用解决三
解决一:
参考:安装pytorch-gpu时会默认安装cpu版本_勇往无前猪猪侠的博客-CSDN博客
很多方法都说conda uninstall cpuonly过后,再重新装就好,但我采用了这个命令后仍然安装的是cpuonly的版本。
一个小tip:删除cpuonly后,最好清空一下conda的包的缓存,否则笨蛋conda看到缓存中包含了要求的pytorch版本,并不会从官网重新下载新的pytorch,装回来的还是cpuonly的版本。指令:
conda clean -p //删除缓存conda clean --all
大部分人遇到的问题在这里已经解决了,尽管如此,我的cpuonly问题仍然没有解决。
解决二:
看到一篇关于分析cpuonly问题的根本原因:https://windses.blog.csdn.net/article/details/125910538rr
如果你采用的不是默认源,而添加了诸如清华源等其他源,这些源中可能不包含你所要求的cudatoolkit,torchversion,pytorch版本,conda可能确实会自作主张Install别的pytorch了,解决方案参考链接。
解决三:
非常不幸,我关掉了清华源采用默认源,认真卸载了cpuonly和旧的pytorch,也清理了conda缓存包,还按照官网的conda forge指令下载,但conda还是有他自己的想法硬装CPU版。
问题的本质是conda根据你的指令不能选中唯一的包,总是选中其他的安装包,那我们不妨强行锁定包的版本,或者自己下载好wheel在本地pip安装。
举例:我的显卡是3090,必须采用11.0以上的cuda版本,python版本3.8,pytorch因为环境适配原因必须选择1.8.1,进入pytorch相关版本的网站查看所有whl:
https://download.pytorch.org/whl/torch_stable.html
在这里找到我需要的whl:cu111,torch1.8,cp38,linux——点击下载
下载后,进入下载的位置,pip+包名即可安装。
或者不用下载到本地,采用pip指令,比如我采用的是:
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
注意需要在上述网站中找到网站中有的torch\cuda\python兼容的包,没有的会报错。安装其他版本的家人们在相关位置做替换即可。
如果cudatoolkit原本不是这个包的版本,就conda install cudatoolkit=版本,重新安装cudatoolkit即可,只要与自己的GPU适配即可(可在NVIDIA官网查到适配版本)
这样就成功装成了gpu版本的pytorch:
import torchtorch.cuda.is_available()
显示为true
问题解决
来源地址:https://blog.csdn.net/weixin_46672140/article/details/129695925