解决[Unable to determine the device handle for GPU...: Unknown Error]问题
解决Ubuntu系统上的[Unable to determine the device handle for GPU…: Unknown Error]问题
服务器环境
环境 | 值 |
---|---|
操作系统 | Ubuntu-22.04 |
内核 | Linux 6.2.0-36-generic |
显卡 | NVIDIA GeForce RTX 3090(2张) |
问题描述
在跑一个大模型模块的训练时,发现GPU莫名奇妙地挂了,执行nvidia-smi
报了如下错误:
1 |
|
而在重启之后,又能执行nvidia-smi
显示所有显卡的信息,通过lspci
命令查看Linux
是否能正常读取PCI
总线上挂载的设备,可以看到开机后,两个显卡的信息都是能读取的:
1 |
|
其中需要注意到后面rev a1
信息都是正常的,当发生上诉错误后(即显卡爆出一个未知的错误),其中被使用的显卡,也就显卡1中的rev a1
变成了rev ff
,无法正常读取。
分析
首先考虑的是驱动问题,毕竟一般设备识别不出来,多半是驱动有点小bug。先去检查了原来的驱动,发现装的驱动版本是535.86.05
,比较新的一个版本。按照个人习惯,会选择比当前最新的版本退两三个版本(其实就是怕麻烦,旧一些的版本遇到问题可以从网上找到更多例子,而新版本可能还得官方指定网站去寻求答案),参照网上的安装流程成功地把原有驱动卸载了并装回了525.147.05
版本,并尝试继续跑算法,但是没能解决问题。在这里还遇到了另一个问题,也就是图形界面无法正常启动/渲染了,强制重启也没法进入系统了。个人猜测,主要是我更换驱动没做好配套工作,遇到这样的情况,我首先尝试在进入系统前利用ctrl+alt
+F1~F10
组合键进入到命令行界面,将现有驱动卸载了并装回原有驱动,成功进入界面(这里只有两个建议 1. 装显卡驱动一定要小心,多看文档再实操;2.备份驱动)。如果还是没法解决,可能就得重装系统了。
随后开始进一步分析问题,从被使用的显卡的版本信息由rev a1-> rev ff
知道显卡是在运行时被关闭了,在参考文章[1]列举的多种问题中,我大致猜到是GPU功率与电源相关的问题了,并从中跳转到了英伟达官网网站对应issue[2]词条下,发现利用执行如下命令暂时禁掉显卡1后能够执行nvidia-smi
获取显卡2的信息了:
1 |
|
这里的
-m
是指GPU的计算模式,默认是0,即default,;1是指PROHIBITED,即禁止任务在它上面执行。
再利用sudo nvidia-bug-report.sh
命令收集显卡的bug
信息,从中查找到了与该Issue一致的问题:
1 |
|
其中一位大佬提到原因如下:
Running ML workloads will cause heavy spikes in power usage, so rather get a better PSU.
在相关Issue[3]找到了解决方案,在该issue中大佬提到:
One of the gpus is shutting down. Since it’s not always the same one, I guess they’re not damaged but either overheating or lack of power occurs. Please monitor temperatures, check PSU.
简单来说就是: 多半是过热、缺电。对应的解决方案在下一节给出,也是上面的大佬提到的。
如果你想问PSU
是什么,参考文章[4]。
解决方案
执行如下命令调整显卡的时钟速度(实际就是锁住其最大功率):
1 |
|
-lgc
的作用:
1 |
|
该命令只是临时的,服务器重启后需要重新设置。可以往/etc/rc.local
开机自启配置文件,新增这一条命令。
如果没有这个文件,建议根据指定
ubuntu 2204
、开机自启等关键词从网上查找对应解决方案寻求答案。
参考文章
- NVIDIA显卡BUG解决 Unable to determine the device handle for GPU 0000:02:00.0: Unknown Error-CSDN博客 ↩
- Unable to determine the device handle for GPU 0000:02:00.0: Unknown Error - Graphics / Linux / Linux - NVIDIA Developer Forums ↩
- GPU fans go to max and graphics drivers hang - Graphics / Linux / Linux - NVIDIA Developer Forums ↩
- 电源供应器 - 维基百科,自由的百科全书 (wikipedia.org) ↩