完美解决torch.cuda.is_available()一直返回False的玄学方法
一直用的TensorFlow(keras)来完成一些工作,因许多论文中的模型用pytorch来实现,代码看不懂实在是不太应该。正好趁此假期,疫情原因无法出去浪,在家学一下pytorch。
游戏用笔记本自带GeForce 1050显卡,可用GPU,想着不用白不用,先装一个GPU版本再说。但是我按照网上的所有方法,torch.cuda.is_available()总是返回False。有轻微强迫症的我,不解决掉是睡不好的。
首先说一下我所做的工作顺序。说不定能有参考。(系统:WIN10)
1.安装CUDA
此处有其他大量且优质的帖,故不在此详述。我自己的机器支持CUDA10.2,但是我安装的是CUDA10,按理说应该版本是向下支持的。安装正确在cmd中敲nvcc -V能显示即可。
NVIDIA-smi命令截图如下。感觉是没什么问题的,驱动版本也挺高。
2.安装对应版本的pytorch
首先想到的肯定是官网安装。conda+重新开放的清华源=神速。此处是我自己的一个大坑。
3.安装cudnn等
同样,有大量帖子教学。我是在一直失败,走投无路,抱着安装一下试试的想法,结果并无卵用。
玄学解决
网上的攻略说产生此类问题的主要原因在于驱动安装的不正确。但我自己的情况并不符合。
在搜了大量的帖子无果后。偶然发现,使用官网conda命令下载的,居然全是CPU版本。
无论我怎么尝试使用conda下载任何版本,都是cpu版本的。可能是清华源的问题??
既然conda无法用,那就用pip。官网的pip命令,不知道是不是我的问题,就算使用各种源,速度也超级慢,还会中断,700M+硬是下不下来。无奈使用本地下载方法。
在此处寻找符合自己版本的pytorch-cuda版本,torchvision版本下载。
https://download.pytorch.org/whl/torch_stable.html
(速度同样极慢!但是不会断了。。。。勉强能下)
下载后pip install xxx(下载下来的文件名) 安装即可。
接下来就见证奇迹了。但是奇迹是怎么发生的,conda为什么只能下cpu版本,我一直没有搞明白。
补充:记录下pytorch安装中一个比较隐蔽的坑,torch.cuda.is_available()返回false的一个原因
如题,想要安装GPU版,一开始从网上找了教程,显卡驱动、CUDA、cuDNN挨个更新安装,都选择了10.1版本,安装完后在anaconda中按照官网提示输入下面的代码,可以看到cudatoolkit即GPU版
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
然后发现基本上大一点的包都下载不下来,包括pytorch、cudatoolkit等等,遂又从网上找教程,加清华源,加了几个之后下载很快,下载下来也可以用,以为已经成功了,但是torch.cuda.is_available()返回就是False。
最开始以为是开始安装的版本不匹配,然后又尝试了10.2版本的CUDA,结果还是一模一样,最后输入conda list后终于发现了问题所在:
可以看到第三列版本号前面的cpu,后来上清华源的网站上看了下,可能是清华源没有对应cuda版本的pytorch,所以会装cpu版的。
目前的解决方法有两个,可以去清华源网站上找对应的版本,https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/,安装输入命令行时将cuda版本改掉。也可以科学上网,直接从官网安装。