本教程介绍了如何解决pytorch 无法使用GPU 的问题,
问题描述:
之前我电脑已经安装好CUDA 10.1 的环境,驱动也是安装好的,安装了tensorflow-gpu ,并且可以正常使用tensorflow gpu 版来训练。今天有同学问我一些pytorch 的安装问题,我之前没有安装过,所以实践了一下,安装过程很顺利,找到官方网站,找到安装的地方,复制命令,使用anconda 进行了安装:
安装完成之后,我迫不及待的测试了一下是否安装成功和能否使用GPU:
import torch
print(torch.cuda.is_available())
结果返回的结果是False,也就是不可以使用GPU版本的pytorch,这让人很烦。
问题解决思路
根据以往tensorflow安装时候的问题解决思路,我猜测可能是cuda版本和pytorch 的版本对不上,我仔细对照了半天,发现不是这里的问题。所以问题可能出在cuda 和 显卡驱动上面。
我输入命令:nvidia-smi,正常的话会输出显卡驱动的相关信息,但是这里报错了,报错信息为:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
显卡驱动出问题了? 那重装一下驱动应该就可以解决问题,但是在ubuntu上安装驱动有点繁琐,所以我又测试了一下tensorflow-gpu 版本是否可以使用,输入一下代码:
import tensorflow as tf
发现竟然没有报错,陷入僵局了,这一句话没报错驱动应该没问题啊,我开始查找问题的答案,百度搜索了一下这个报错:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
最终得出的结论是就是显卡驱动坏了,我参考网上的解决办法,执行了以下命令,成功的解决了问题。
- 首先安装 dkms
sudo apt-get install dkms
- 然后查看自己驱动的版本
ls /usr/local
输出结果如下:
- 执行以下命令:
sudo dkms install -m nvidia -v 418.43
注意命令后的版本要和上图中的版本一致!
验证是否生效
nvidia-smi 命令执行正常了。
验证pytorch:
问题成功解决了
后记
刚刚提到了一个奇怪的现象,显卡驱动不正常,tensorflow-gpu 竟然可以成功的import,但是后来经过测试发现,虽然没有报错,但是训练过程使用了CPU,没有使用GPU,运行的时候会报错说 GPU驱动没有运行之类的错误,然后使用CPU进行了训练(直观感觉就是慢了很多)。
为什么会出现显卡驱动坏了的情况?猜测是系统更新造成的,因为之前我使用tensorflow-gpu的时候是正常的,并且没有做任何的改动,所以很有可能是更新造成的损坏。