再谈 Ubuntu深度学习环境下,显卡突然丢失问题

在Ubuntu系统下进行模型训练会出现显卡突然消失的情形,有许多帖子说出现这个问题是由于显卡过热,或者驱动程序造成的,只要降低功率,提高散热效率就可以解决过热问题。更新驱动就可以解决第二个问题。但是,显卡的丢失往往并非是因为上述原因造成的。需要进行分析才能得出结论,继而找出相应的处理方法。今天我们用实例来分享分析过程。
        
        硬件平台:AMD R7  内存16GB 固态:1T 迷你主机
                       雷蛇外置显卡坞 TITAN RTX 显卡
        软件环境:Ubuntu22.04  CUDA12.3  VULKAN  Pytorch  C++     
        故障描述:系统在运行一段时间后会停止。查看信息显示没有显卡。出此之外,系统都运行正常。
        首先,我们需要考虑的是,机器是否因为环境影响造成灰尘堆积是的金手指氧化接触不良,引发偶然故障,其次有是不是因为过载运行,并且热量散发不出去造成温度过高,硬件自我保护而产生的故障,第三是否是因为驱动程序bug问题造成的该问题。于是我们开始按照上面的构思进行排查。
        经过除尘,清理、降低功率、提高散热、更新驱动、升级操作系统之后我们开始新一轮测试,但是在运行6个小时后依然出现显卡丢失的问题。由于可以看出,显卡的丢失是一个比较深层次的原因,需要从底层入手排查。
         排查流程:
         执行:
         nvidia-smi -pm 1 
            Persistence mode is already Enabled for GPU 00000000:06:00.0.
All done.

查看显卡运行日志确认是否过热保护造成显卡丢失
执行命令:nvidia-smi -q -l 2 -d TEMPERATURE -f nvidiatemp.log

调整显卡的性能,降低功率
        nvidia-smi -pl 200 
        
提高显卡转速后台记录日志
nohup     sudo  $(which coolgpus)    --speed 100 100     & 

输出内核启动环境信息
键入:vim /var/log/syslog
可以看到系统已经加载了eGPU,但是,提示出许多错误信息如下所示:

Nov 23 23:56:57 MINML kernel: [ 9418.843994] pcieport 0000:00:03.1: AER: Corrected error received: 0000:05:01.0
Nov 23 23:56:57 MINML kernel: [ 9418.844009] pcieport 0000:05:01.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID)
Nov 23 23:56:57 MINML kernel: [ 9418.844013] pcieport 0000:05:01.0:   device [8086:15da] error status/mask=00000080/00002000
Nov 23 23:56:57 MINML kernel: [ 9418.844018] pcieport 0000:05:01.0:    [ 7] BadDLLP 

由此可以断定,系统在运行时PCI总线错误,因此,我们查看一下系统加载内核信息。

键入
dmesg
显示如下信息:
Nov 23 23:56:57 MINML kernel: [ 9418.887698] pcieport 0000:05:01.0:    [ 7] BadDLLP               
Nov 23 23:56:57 MINML kernel: [ 9419.054679] pcieport 0000:00:03.1: AER: Corrected error received: 0000:05:01.0
Nov 23 23:56:57 MINML kernel: [ 9419.054697] pcieport 0000:05:01.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID)
Nov 23 23:56:57 MINML kernel: [ 9419.054701] pcieport 0000:05:01.0:   device [8086:15da] error status/mask=00000080/00002000

键入 lspci -D
0000:00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 14cd
由此我们可以看出,是AMD的PCI网桥出现问题,
在信息中我们看到 AER:Corrected error received: 0000:05:01.0说明是pci 校验错误引起的。
系统在运行中PCI边带信号校验发生错误时,会造成数据传输重传,若传输时间超过时钟周期,就会出现通信异常,使得eGPU与计算机传输中断,从而使得显卡在无任何信息输出时突然消失,至此我们找到了信息根源。
解决方法:

1. `sudo vim /etc/default/grub`
2. 编辑grub。 在`GRUB_CMDLINE_LINUX_DEFAULT`末尾添加`pci=noaer`
    
    `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=noaer"` 或者 pci=nomsi
    
3. `sudo update-grub`
    
4. 马上重启

什么是 nomsi与noaer呢?

        简而言之,`nomsi`禁用[MSI](https://en.wikipedia.org/wiki/Message_Signaled_Interrupts)(从硬件到内核的信号中断的特殊方式,如果我没记错的话)并`noaer`禁用[高级错误报告](https://www.kernel.org/doc/Documentation/PCI/pcieaer-howto.txt)。我怀疑高级错误报告会导致启动问题。我的猜测是有些硬件没有很好地实现 MSI,或者内核无法使用 MSI 与该硬件通信,但这只是一个猜测。
nomsi [MSI] 如果启用了 PCI_MSI 内核配置参数,则此内核引导选项可用于在系统范围内禁用 MSI 中断。
noaer [PCIE] 如果启用了 PCIEAER 内核配置参数,此内核引导选项可用于禁用 PCIE 高级错误报告的使用。
至此,我们对显卡丢失的问题分析完毕,关于AER错误方面的知识请参见下文

引用地址
https://zhuanlan.zhihu.com/p/613945823?utm_id=0

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Ubuntu上设置深度学习环境,您可以按照以下步骤进行操作: 1. 安装NVIDIA驱动程序(如果您的系统使用NVIDIA显卡): - 您可以通过运行以下命令来安装推荐的驱动程序版本: ``` sudo apt-get install nvidia-driver-<version> ``` - 安装完成后,通过运行以下命令来验证驱动程序是否正确安装: ``` nvidia-smi ``` 2. 安装CUDA(Compute Unified Device Architecture): - 深度学习框架通常需要使用CUDA进行加速。您可以从NVIDIA官方网站上下载适用于您的显卡和操作系统版本的CUDA安装程序。 - 下载完成后,按照官方文档提供的步骤进行安装。 3. 安装cuDNN(NVIDIA Deep Neural Network library): - cuDNN是一个针对深度学习任务进行优化的GPU加速库。您可以从NVIDIA开发者网站上下载适用于您的CUDA版本和操作系统版本的cuDNN库。 - 下载完成后,按照官方文档提供的步骤进行安装。 4. 安装深度学习框架: - 一旦您完成了NVIDIA驱动程序、CUDA和cuDNN的安装,您可以使用以下命令之一来安装常用的深度学习框架: - TensorFlow: ``` pip install tensorflow-gpu ``` - PyTorch: ``` pip install torch torchvision ``` - Keras: ``` pip install keras ``` - MXNet: ``` pip install mxnet-cu<version> ``` 通过按照以上步骤设置深度学习环境,您就可以在Ubuntu上开始进行深度学习任务了。请注意,具体的安装步骤可能会因为您的系统版本、显卡型号和需要使用的深度学习框架而有所不同,所以请确保参考官方文档并根据您的实际情况进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值