AI训练程序也是是导致GPU异常的最常见原因之一。训练深度神经网络对GPU施加的压力是巨大且持续的,远超大多数图形渲染或通用计算任务。
1.显存耗尽 (Out of Memory - OOM)
这是最常见的的原因。当训练程序(例如 TensorFlow, PyTorch)尝试分配超过GPU可用显存(VRAM)的缓冲区、张量或模型参数时发生。
主要包含以下原因:
模型太大(层数多、参数多)。
批量大小设置过大。
数据输入维度太高(如图像分辨率过大)。
复杂的计算图或中间激活值占用过多。
显存泄漏(编程错误导致已分配内存未释放)
通常GPU本身不会损坏,但训练进程会崩溃。需要减少模型大小、降低批量大小、使用梯度累积、启用混合精度训练、优化数据加载或使用模型并行/数据并行技术。
2.GPU内核执行超时 (Kernel Timeout)
GPU驱动程序为每个CUDA内核设置了最大执行时间限制(通常几秒)。如果一个内核运行时间过长,驱动程序会认为它挂起了,强制终止它并抛出错误。
主要包含以下原因:
编写了效率极低或包含死循环的自定义CUDA内核。
某个计算步骤异常复杂且耗时极长。
驱动程序的超时阈值设置过低
GPU通常会重置自身以恢复。需要优化或调试有问题的CUDA内核代码。
3.GPU硬件过热 (Overheating)
持续的100%负载会导致GPU温度急剧升高。如果散热不足(风扇故障、灰尘堆积、机箱通风不良、环境温度过高),GPU会触发热保护机制。
主要包含以下原因:
长时间高负载训练(数小时甚至数天)。
服务器散热设计不佳或维护不当(积灰)。
风扇故障或转速不足。
过度超频导致功耗和发热剧增。
GPU会降低频率(Thermal Throttling)以降温,严重时会导致进程崩溃或系统不稳定。长期过热会显著缩短GPU寿命甚至导致永久损坏。需要改善散热(清灰、增加风扇、优化风道)、降低环境温度、检查风扇状态、避免过度超频。
4.电源问题 (Power Issues)
训练高峰时GPU瞬时功耗可能极高。如果电源供应不足、不稳定,或电源线/连接器接触不良,会导致GPU供电不稳。
主要包含以下原因:
系统电源功率不足(特别是多卡训练时)。
电源老化或故障。
使用劣质转接线或未正确连接PCIe供电线(特别是未接满所有接口)。
电网电压波动。
GPU可能重置、系统可能重启或关机。严重且持续的供电问题可能损坏GPU。需要确保使用额定功率充足、品质可靠的电源,正确连接所有供电线,避免使用劣质转接线,必要时使用UPS。
5.驱动程序、CUDA库或框架Bug
GPU驱动程序、CUDA Toolkit库(cuDNN, cuBLAS等)或深度学习框架(PyTorch, TensorFlow)本身可能存在缺陷,在特定操作或环境下引发错误。
主要包含以下原因:
使用特定版本的驱动、CUDA或框架组合执行特定操作时触发。
与特定操作系统内核版本不兼容。
通常表现为进程崩溃。需要尝试更新驱动、CUDA库、框架到稳定版本,或降级到已知稳定的版本组合。
6.ECC显存错误 (ECC Memory Errors)
服务器级GPU(如 Tesla, A100, H100)通常配备支持纠错码的显存。当检测到无法纠正的多位错误时,会报告错误。
主要包含以下原因:
显存硬件本身存在缺陷或老化(硬错误)。
显存因过热或超频不稳定导致临时错误(软错误,可能可恢复)。
硬错误通常需要更换GPU。软错误可能通过重启或降低超频恢复。训练任务会中断。需要监控ECC错误计数,如果持续增长且为硬错误,需更换硬件。
7.多GPU通信问题 (Multi-GPU Communication Errors)
在数据并行或模型并行训练中,GPU之间需要频繁通过NVLink或PCIe交换数据。通信错误会导致同步失败。
主要包含以下原因:
NVLink连接器接触不良或损坏。
PCIe插槽或桥接芯片问题。
网络通信错误(在多机训练中)。
驱动或NCCL库的Bug。
训练进程崩溃或挂起,可能报告与通信相关的XID错误或框架自身的错误。需要检查物理连接(线缆、插槽)、更新NCCL库、尝试不同的通信后端。
8.硬件不稳定(超频导致)
对GPU核心或显存进行超频以追求更高性能,但设置过于激进导致在长期高负载下不稳定。
主要包含以下原因:
在超频状态下运行训练程序。
计算错误、进程崩溃、GPU重置。需要降低超频幅度,进行更严格的压力测试(如使用dcgmi或nvidia-smi压力测试),或恢复默认频率。
9.硬件故障 (Hardware Failure)
GPU本身或其组件(如显存、供电模块、核心)因老化、制造缺陷、物理损坏或长期高负载压力而出现故障。
主要包含以下原因:
可能在任何时候发生,但在高负载训练时更容易暴露出来。可能伴随各种XID错误、花屏、系统崩溃。
通常需要维修或更换GPU。
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1120
相关阅读
- 英伟达GPU XID Errors介绍和错误码整理
- 使用GPU时出现XID 119/XID 120错误导致GPU掉卡
- linux中使用mdadm工具更换软raid阵列中故障异常的磁盘
- 各型号GPU使用nccl-tests单机多卡性能测试基准参考
- 各型号GPU使用gpu-burn和cublasMatmulBench性能测试基准参考
- ubuntu22.04安装nvidia-fabricmanager
- ubuntu22.04使用containerd部署k8s集群
- k8s中修改containerd存储目录并将数据迁移到新磁盘目录
- linux下开启GPU Direct RDMA(GDR)的方法
- linux使用mdadm创建软raid阵列并挂载开机启动
评论列表