查了一下,这个问题应该是因为显卡驱动、cuda版本、torch版本不匹配。但是我朋友在解决这个问题的过程中降级cuda、升级torch都不好使。后来发现这三个版本之间有约束关系,一个对不上都不行。
在conda install torch指定版本的过程中,我发现他会自动给你更新cudatoolkit(到一个可能和你显卡驱动以及你现在安装的torch都不匹配的版本),你还没法拒绝他(在安装过程中好像可以ctrl+c来截断某个安装包的下载,但是我觉得不太正经orz)。我没有尝试单独降级cuda的版本,但我估计他也会自动帮我把torch更新了。所以在这个过程中不能单独改变torch或者cuda的版本,必须同时指定两个版本安装(其实还是对的上就行,只是我用的这个服务器驱动版本比较低,会限制cuda的版本,进而限制torch的版本)。
以下是具体的过程:
先康一康一开始的报错
搜了之后发现是显卡驱动、cuda版本、torch版本对不上,我目前的环境是
Driver Version 384.130 # nvidia-smi
cudatoolkit 8.0 # conda list torch
1.7.1 # conda list
查看版本之间的对应关系(参考以下链接),发现是我torch版本太高了
Pytorch版本、CUDA版本与显卡驱动版本的对应关系
于是降级torch,然后在降级的过程中感觉不太对
conda uninstall torch
conda install pytorch=1.1.0 -c soumith
好家伙,所以我要装1.1.0的torch就会被自动下载10.0的cudatoolkit,但是我显卡驱动版本最多只能匹配到cuda
9.0版本,那即使我降级了torch还是对不上啊
“当已知CUDA版本时,可根据表2直接查询到对应版本PyTorch,运行conda install pytorch=X.X.X -c pytorch即可安装指定版本PyTorch。此命令由conda决定与PyTorch对应的CUDAToolkit。但不能保证PyTorch可正常使用,CUDAToolkit版本不适配显卡驱动,即可能导致CUDAToolkit版本高于CUDA驱动。”
(摘自上面那个链接)
我觉得这应该就是问题所在 ↑↑↑
所以为了保证torch和cuda都是正确的版本,conda install的时候应该同时指定这两个的版本
conda install pytorch= *.*.* cudatoolkit= *.* -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
没有自动下载了!
安装完成之后再查看一次torch.cuda.is_available()
哦吼!好开心!
大概就是这样啦!
不过这之后又出了一点小问题:
cannot import name ‘Optional’ from ‘torch.jit.annotations’
这应该是torchvision版本和torch版本不匹配了kkk 所以更新完torch记得也要更新一下torchvision哇!
请参考这个链接确定一下torchvision的版本叭!安装方法↓
conda install torchvision==*.*.* -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
耶!