如何修复“断言错误:CUDA 不可用,请求的设备 0 无效”

Tom*_*tum 6 python deep-learning pytorch

我尝试使用 GPU 运行 YOLOR 模型,但不断收到错误:

Traceback (most recent call last):
  File "D:\yolor\detect.py", line 198, in <module>
    detect()
  File "D:\yolor\detect.py", line 41, in detect
    device = select_device(opt.device)
  File "D:\yolor\utils\torch_utils.py", line 47, in select_device
    assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device  # check availablity
AssertionError: CUDA unavailable, invalid device 0 requested
Run Code Online (Sandbox Code Playgroud)

当我尝试检查 CUDA 是否可用时:

python3
>>import torch
>>print(torch.cuda.is_available())
Run Code Online (Sandbox Code Playgroud)

我明白了False,这解释了问题。我尝试运行命令

py -m pip install torch1.9.0+cu111 torchvision0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
Run Code Online (Sandbox Code Playgroud)

我收到错误:ERROR: Invalid requirement: 'torch1.9.0+cu111'

运行nvcc --version,我得到:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
Run Code Online (Sandbox Code Playgroud)

因此,我不太确定问题是什么,或者如何解决它。

编辑:正如@Ivan 指出的,我添加了 == 符号,但False在检查 CUDA 是否可用时仍然得到。

Jam*_*Ngo 6

好吧,经过 1 周的痛苦,我找到了这个解决方案

1-下载 NVIDIA 驱动程序后:

  • 转到您的窗口并搜索“NVIDIA 控制面板”
  • 然后左下角应该有“系统信息”
  • 然后寻找“CUDA Cores”
  • 我的是 384(我的笔记本电脑是古董年份)(NVIDIA GeForce GT 750M)
  • 对于 CUDA 核心:384(对应于 CUDA Toolkit 9.0)
  • 对于 CUDA 核心:387(对应于 CUDA Toolkit 9.1)
  • 对于其他 CUDA 核心,您需要自己做更多研究,因为老实说,我不知道在哪里可以找到它(如果您对我在哪里找到上面的那个感到好奇,它位于第二条评论“https://github” .com/pytorch/pytorch/issues/4546”

2-(可选)下载 Anaconda

  • 这是我使用的系统,选择权在你
  • 如果您使用的是 Anaconda 并且已经安装和卸载来解决此问题。我建议您彻底卸载环境,因为在我的情况下,我的文件由于重复安装和卸载而崩溃
  • 这是向您展示如何操作的链接“https://www.youtube.com/watch?v=dcvdOuvWI-Q&t=107s”

3-为您的系统安装正确的 CUDA 工具包后

  • 转到“https://pytorch.org”
  • 输入您的系统详细信息并为您的系统安装正确的 PyTorch
  • (可选)如果您也使用 Tensorflow,请转到此处并为您的 CUDA 安装正确的版本

4-完成所有这些后,在您的 Anaconda 环境(或您正在使用的任何环境)中,键入:

  • 进口火炬
  • 打印(火炬.cuda.is_available())

如果返回 True 那么干得好

如果没有:祝你下周好运

希望它对你有帮助,祝你在 yolor 的旅程中好运(我也在学习)


Iva*_*van 2

==您忘记在软件包和版本号之间添加符号。根据PyTorch 安装页面

py -m pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
Run Code Online (Sandbox Code Playgroud)