关于torch.cuda.is_available() 返回False 详细说明及解决
一 cuda 环境检测失败

cuda 环境检测代码:

import torch

print(torch.version)
print(torch.cuda.is_available())
print(torch.version.cuda)
cuda 环境检测代码执行结果如下图:

关键代码print(torch.cuda.is_available()) 返回 False 通常表示当前环境下CUDA 设备不可用。这可能电脑没有安装 CUDA 驱动程序或者安装的 PyTorch 版本不支持 CUDA

二 解决思路,先了解问题的本质
1 什么是CUDA,cuda与gpu与PyTorch的关系

CUDA(Compute Unified Device Architecture)是由 NVIDIA 开发的用于并行计算的平台(通用计算构建的运算平台,是建立GPU显卡驱动层之上,必须与之相匹配。cuda的上层通常是各种机器学习库如PyTorch,cuDNN)。cuda作用是利用 NVIDIA GPU(图形处理单元)的强大计算能力来加速各种科学计算、数值模拟和深度学习任务。cuda与gpu与PyTorch的关系图如下:

上图关键项详细说明:

  1. gpu显卡驱动,作为显卡硬件的接口,操作系统只能通过这个接口来控制显卡进行2D/3D渲染或计算。
  2. CUDA:是“GPU通用计算”构建的运算平台,允许开发人员编写C/C++代码,利用GPU的并行性来执行任务。
  3. PyTorch和cuDNN:流行的深度学习框架,支持CUDA,用于训练和推理深度神经网络。
2 找出问题与解决

根据我们用的框架PyTorch从上面关系图中可以看出torch.cuda.is_available()返回False的原因无非就只有这 几个关系

从上图分析造成的原因:
cuda与显卡驱动的匹配。
cuda与Tytorch版本的匹配。
gpu驱动与显卡匹配。(在window平台下最不可能发生)
1 cuda与显卡驱动匹配问题(最常见之一)
如果显卡驱动不是最新的,建议下载最新的显卡驱动,
在官网找到合适版本的cuda:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

一般根据操作系统平台和版本号 匹配合适版本的cuda下载安装即可。
安装完成查看安装版本

nvcc --version

执行后看到版本信息,我当前环境cuda版本是v11.6,如下图:

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查到v11.6版本行

查看驱动版本

nvidia-smi

执行后查看到的版本号是537.13, 从上图中 cuda 11.6.x参数要求是大于或等于452.39,所以是cuda与显卡驱动是匹配的正常的。如下图:

2 cuda与pytorch版本的匹配问题(最常见之二)
假设在最新cuda版本的环境上安装旧版本的PyTorch,那么旧版本的PyTorch可能不会支持。此 时需要删除旧的版本,从官网下载新版本或指定版本的PyTorch即可。
PyTorch官网:
重新安装后,验证pytorch安装成功:

import torch

print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)

执行上面代码后,安装验证通过如下图:

3 排查gpu驱动与显卡匹配

在window平台最不可能发生,如果有问题只要在官网选择驱动下载重新安装最新的显卡驱动就可解决。
排查也简单,看一下任务管理器中的gpu情况就知道安装是否正确,如下图:

显卡驱动官方下载:https://www.nvidia.com/Download/index.aspx?lang=en-us

3 总结

此次错误PyTorch 的版本None,没有安装成功,重新在PyTorch官网下载安装后即正常使用。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐