完美解决torch.cuda.is_available()一直返回False的玄学方法


Posted in Python onFebruary 06, 2021

一直用的TensorFlow(keras)来完成一些工作,因许多论文中的模型用pytorch来实现,代码看不懂实在是不太应该。正好趁此假期,疫情原因无法出去浪,在家学一下pytorch。

游戏用笔记本自带GeForce 1050显卡,可用GPU,想着不用白不用,先装一个GPU版本再说。但是我按照网上的所有方法,torch.cuda.is_available()总是返回False。有轻微强迫症的我,不解决掉是睡不好的。

首先说一下我所做的工作顺序。说不定能有参考。(系统:WIN10)

1.安装CUDA

此处有其他大量且优质的帖,故不在此详述。我自己的机器支持CUDA10.2,但是我安装的是CUDA10,按理说应该版本是向下支持的。安装正确在cmd中敲nvcc -V能显示即可。

完美解决torch.cuda.is_available()一直返回False的玄学方法

NVIDIA-smi命令截图如下。感觉是没什么问题的,驱动版本也挺高。

完美解决torch.cuda.is_available()一直返回False的玄学方法

2.安装对应版本的pytorch

首先想到的肯定是官网安装。conda+重新开放的清华源=神速。此处是我自己的一个大坑。

完美解决torch.cuda.is_available()一直返回False的玄学方法

3.安装cudnn等

同样,有大量帖子教学。我是在一直失败,走投无路,抱着安装一下试试的想法,结果并无卵用。

玄学解决

网上的攻略说产生此类问题的主要原因在于驱动安装的不正确。但我自己的情况并不符合。

在搜了大量的帖子无果后。偶然发现,使用官网conda命令下载的,居然全是CPU版本。

完美解决torch.cuda.is_available()一直返回False的玄学方法

无论我怎么尝试使用conda下载任何版本,都是cpu版本的。可能是清华源的问题??

既然conda无法用,那就用pip。官网的pip命令,不知道是不是我的问题,就算使用各种源,速度也超级慢,还会中断,700M+硬是下不下来。无奈使用本地下载方法。

在此处寻找符合自己版本的pytorch-cuda版本,torchvision版本下载。

https://download.pytorch.org/whl/torch_stable.html

(速度同样极慢!但是不会断了。。。。勉强能下)

下载后pip install xxx(下载下来的文件名) 安装即可。

完美解决torch.cuda.is_available()一直返回False的玄学方法

接下来就见证奇迹了。但是奇迹是怎么发生的,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后终于发现了问题所在:

完美解决torch.cuda.is_available()一直返回False的玄学方法

可以看到第三列版本号前面的cpu,后来上清华源的网站上看了下,可能是清华源没有对应cuda版本的pytorch,所以会装cpu版的。

目前的解决方法有两个,可以去清华源网站上找对应的版本,https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/,安装输入命令行时将cuda版本改掉。也可以科学上网,直接从官网安装。

Python 相关文章推荐
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
Python中基础的socket编程实战攻略
Jun 01 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python读写/追加excel文件Demo分享
May 03 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
Python清空文件并替换内容的实例
Oct 22 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
浅析python redis的连接及相关操作
Nov 07 Python
Python包资源下载路径报404解决方案
Nov 05 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
python反扒机制的5种解决方法
Feb 06 #Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 #Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 #Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 #Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 #Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 #Python
Python第三方库安装缓慢的解决方法
Feb 06 #Python
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
php跨站攻击实例分析
2014/10/28 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
用jquery来定位
2007/02/20 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python并行分布式框架Celery详解
2018/10/15 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
《三亚落日》教学反思
2014/04/26 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
离婚协议书格式
2015/01/26 职场文书
四群教育工作总结
2015/08/10 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android