conda安装pytorch总是下载cpu版本的问题
首先,表述问题:我在使用pytorchu官方网站安装torch1.9.0的GPU包,
链接: link
确保自己的安装的代码为
// cuda 11.3 版本
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=11.3 -c pytorch -c conda-forge
我的硬件符合要求。然后安装完后
# -*- coding:utf-8 -*-
import torch
cuda_available = torch.cuda.is_available()
print("CUDA 是否可用:", cuda_available)
print(torch.__version__)
发现输出
False
我确定了自己的源是清华源,并且切换了北京外国语大学的源,都是相同的结果。以下是我解决问题的思路
切换系统
因为升级过显卡驱动,我以为是我显卡驱动出了问题,并且好久不使用win跑程序,可能误卸载了驱动之类的。于是我切换到ubuntu系统,因为ubuntu系统安装了torch的gpu版本,确定能够使用gpu版本的torch,在此系统不存在驱动问题。
使用相同的代码下载:
// cuda 11.3 版本
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=11.3 -c pytorch -c conda-forge
结果:
# -*- coding:utf-8 -*-
import torch
cuda_available = torch.cuda.is_available()
print("CUDA 是否可用:", cuda_available)
print(torch.__version__)
发现输出
False
确定不是驱动问题,于是切换回win,继续排错。
包的问题
使用官方的代码下载的pytorch总是带有cpuonly这个包,在自己安装pytorch的环境下使用终端输入:
conda list
可以查看自己的安装的包。
对于cpuonly这个这么解决,参考:
链接: link
https://blog.csdn.net/god_roading/article/details/121109393
链接: link
https://blog.csdn.net/FAJFNWQGW/article/details/128531357
还有一些其他的答案,说可以卸载,本人的实测显示,无法卸载,根本就卸载不掉。
考虑其他方案。
离线安装
既然使用官方的下载代码都会是下载cpu版本,确定是代码有问题,这个问题应该早就考虑到,是我自己没想明白,但改代码我没有好的解决方法,希望大佬指教。我选择了离线安装,在国内源选择离线包下载在安装,确保下载的是gpu版本,肯定能解决问题。
国内源下载网站: link
https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/win-64/
查看官网的代码需要的包有三个:pytorch, torchvision, torchaudio
选择好版本,进行下载,
然后放在自己确定的目录内,win下右键就可以在该目录下打开终端,或者打开终端,cd到刚才提到的目录下,激活要安装torch的环境,使用conda安装:
#conda install --offline 加入包名,一定带上后缀.tar.bz2
#例如
conda install --offline pytorch-1.9.0-py3.8_cuda11.1_cudnn8_0.tar.bz2
三个包都要安装,安装完成后 在该环境下输入:
conda list
可以查看自己的安装的包。
发现是gpu版本了
# Name Version Build Channel
ca-certificates 2023.01.10 haa95532_0 defaults
libffi 3.4.4 hd77b12b_0 defaults
openssl 1.1.1t h2bbff1b_0 defaults
pip 23.0.1 py38haa95532_0 defaults
python 3.8.16 h6244533_3 defaults
pytorch 1.9.0 py3.8_cuda11.1_cudnn8_0 <unknown>
setuptools 66.0.0 py38haa95532_0 defaults
sqlite 3.41.2 h2bbff1b_0 defaults
torchaudio 0.9.0 py38 <unknown>
torchvision 0.10.0 py38_cu111 <unknown>
vc 14.2 h21ff451_1 defaults
vs2015_runtime 14.27.29016 h5e58377_2 defaults
wheel 0.38.4 py38haa95532_0 defaults
于是信心满满, 打开pycharm或者其他ide或者使用该环境下的终端打开python
import torch
但是
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\ProgramData\Anaconda3\envs\LLFlowtprch\lib\site-packages\torch\__init__.py", line 135, in <module>
raise err
OSError: [WinError 126] 找不到指定的模块。 Error loading "C:\ProgramData\Anaconda3\envs\LLFlowtprch\lib\site-packages\torch\lib\caffe2_nvrtc.dll" or one of its dependencies.
说是找不到这个caffe2_nvrtc.dll或者它相关的依赖 (dependencies) 有问题,于是想办法解决,打开报错的路径,文件夹内确实有caffe2_nvrtc.dll,那便是其相关的依赖有问题,如何解决?
win下dll依赖(dependencies)查看: link
https://github.com/lucasg/Dependencies
这里有很简单的gui可以快捷的查看相关依赖,进去GitHub之后点击Download herelink
https://github.com/lucasg/Dependencies/releases/download/v1.11.1/Dependencies_x64_Release.zip
下载是个安装包,然后解压。再解压的文件内看到DependenciesGui.exe,这是个gui界面,打开左上角 file ------> open------->想要查看的文件
这里我的路径是
C:\ProgramData\Anaconda3\envs\LLFlowtprch\lib\site-packages\torch\lib\caffe2_nvrtc.dll
点开之后发现有个报红,说缺少nvrtc64_111_0.dll。因为我已经解决问题了,因此不放图了。
这里是使用此gui的参考link
https://blog.csdn.net/weixin_67988386/article/details/128904986?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168439929216800227455950%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168439929216800227455950&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-128904986-null-null.142v87control_2,239v2insert_chatgpt&utm_term=torch%5Clib%5Ccaffe2_nvrtc.dll&spm=1018.2226.3001.4187
然后网络上下载nvrtc64_111_0.dll,将其放回caffe2_nvrtc.dll路径下
我的路径为C:\ProgramData\Anaconda3\envs\LLFlowtprch\lib\site-packages\torch\lib
然后在该环境下import torch 没有报错
然后
# -*- coding:utf-8 -*-
import torch
cuda_available = torch.cuda.is_available()
print("CUDA 是否可用:", cuda_available)
发现输出
Ture
问题解决。
弯路
我甚至怀疑过cuda 以及cudnn出了问题,不过我重装过,没有什么作用,建议大家在折腾的时候,观察一下自己的基础驱动有没有装好。
最后说一下,特别感谢有这些平台,不然出问题真是头都大了。