之前一直使用 tensorflow 训练模型,第一次训练 pytorch 模型的时候,发现速度很慢,仔细观察,发现 GPU 内存占用为 0,基本没有使用 GPU.

AssertionError: CUDA unavailable, invalid device 0 requested

cuda不可用报错现实没有有效的驱动可使用

测试 cuda 是否配置正确

编写代码:

import torch
print(torch.cuda.is_available())

检测电脑的 GPU 能否被 PyTorch 调用, 如果结果返回 True , 则说明,cuda 可用,运行后输出的是 False,说明 cuda 有问题。

重新安装 cuda

检测本地 GPU cuda 版本

nvidia-smi

当前我的机器上 CUDA Version: 10.0 版本的,所以我们直接选择对应的 CUDA 版本下载。

pip3 install torch1.9.0+cu101 torchvision0.10.0+cu101 torchaudio=0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

当前 torchvision0.10.0+cu101 版本必须是匹配的。如果版本不匹配,如上面的命令,则会出现错误

我们打开网站 https://download.pytorch.org/whl/torch_stable.html,查看所有版本

cu101 表示需要的cuda版本
torchvision-0.2.1 可以看到我们可以适应的版本
其它字段信息,包含适配 python 版本,cpu 版本,或者是系统支持

我们使用命令行直接安装:

conda install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

如果安装还是报错的话

ERROR: Could not find a version that satisfies the requirement torch1.8.1+cu101...

我们可以换下面这种安装方式

conda install -i https://pypi.tuna.tsinghua.edu.cn/simple torch===1.8.1 torchvision===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

终于安装成功,满心欢心重新测试:

还是不对,这一次报错说我们的 CUDA 驱动版本太低了,而是 Pytorch 的版本和 CUDA 不匹配。

查看我们的 CUDA Version 为 10.0.130

在看下我们当前环境的 torch 版本

发现版本是 torch == 1.8.1 , torchvision == 0.9.1

打开 https://pytorch.org/get-started/previous-versions/ 查看 CUDA 和 pytorch 的一个对应关系

发现 1.8.0 版本对应的 CUDA 最低为 10.2 版本,确实比我们的要训练环境要高,重新调整我们本地虚拟环境版本,我们稍微降低一下版本,Torch 官网的版本只提供了 CUDA 9.2 和 CUDA 10.1 的版本,我的 cuda 是 10.0 的。所以这里版本不对应导致 Torch.cuda 加速无法运行。

这里支持 10.0 版本为 1.2.0 版本,感觉有点低,升级一下 CUDA 版本到 10.1 版本

重新检测后,结果显示成功


↙↙↙阅读原文可查看相关链接,并与作者交流