在 GPU 集群运维(HPC/AI 基础设施场景)中,“坏卡” 是高频故障,核心可分为 硬件故障、软件驱动故障、物理环境 / 供电故障 三类,以下是具体故障场景、排查步骤及处理方案,均为可直接执行的操作手册式指南:
一、硬件故障(最常见,需物理更换或厂商维修)
1. 核心硬件损坏(GPU 芯片、显存、供电模块故障)
故障现象:
nvidia-smi无法识别 GPU(无输出或显示No devices were found);- 识别到 GPU 但状态显示
Error,或显存容量显示异常(如 80GB 显存显示为 0MB); - 运行任务时直接报
CUDA error: unknown error或CUDA out of memory(非真实显存不足); - 服务器开机时 GPU 风扇狂转、无显示输出,或主板 BIOS 未识别到 GPU。
排查步骤:
- 交叉验证(核心步骤):
- 将疑似坏卡拔下,插入另一台正常服务器(需相同 PCIe 版本、电源支持),用
nvidia-smi验证是否仍无法识别; - 同时将正常服务器的 GPU 插入疑似坏卡的插槽,验证是否能正常识别(排除主板 PCIe 插槽故障)。
- 将疑似坏卡拔下,插入另一台正常服务器(需相同 PCIe 版本、电源支持),用
- 检查物理连接:
- 断电后拔插 GPU 供电线(8Pin/16Pin),确保接口无松动、氧化(可用橡皮擦清洁金手指);
- 检查 GPU 散热片是否松动、显存颗粒是否有烧焦痕迹。
- BIOS 验证:
- 开机按 Del/F2 进入 BIOS,在
PCIe Configuration中查看是否识别到 GPU 设备。
- 开机按 Del/F2 进入 BIOS,在
处理方案:
- 若交叉验证后仍无法识别,或状态异常,判定为 GPU 硬件损坏,联系厂商(NVIDIA / 七彩虹 / 华硕等)走售后维修或更换;
- 若主板 PCIe 插槽故障,更换服务器主板或使用其他空闲插槽。
2. 显存错误(ECC 校验失败)
故障现象:
- 运行
nvidia-smi -q查看ECC Errors,显示Single-bit Errors或Double-bit Errors持续增长; - 训练模型时随机报错
CUDA error: CUBLAS_STATUS_EXECUTION_FAILED,或任务中途中断(无明确报错); - 多卡集群中单卡显存报错,其他卡正常。
排查步骤:
- 运行
nvidia-smi -q | grep -A 5 "ECC Errors"实时监控错误数; - 单独使用该卡运行压力测试(如
nvidia-smi pmon -s u或cuda-memcheck --leak-check full ./test_app),观察是否快速出现 ECC 错误。
处理方案:
- 单比特错误(Single-bit)可能是临时干扰,可重启服务器后观察;若错误数持续增长,需更换 GPU;
- 双比特错误(Double-bit)直接判定为显存损坏,必须更换 GPU(ECC 仅能修复单比特错误,双比特错误为不可修复);
- 若为 Tesla/V100/A100 等支持 ECC 显存的专业卡,确保在
nvidia-smi中开启 ECC(默认开启,部分场景可能被关闭)。
3. 风扇 / 散热故障
故障现象:
nvidia-smi显示 GPU 温度飙升至 90℃+,随后触发降频(算力下降)或自动关机;- 风扇完全不转,或转动时有异响(卡顿、啸叫);
- 任务运行中因过热触发
CUDA error: device-side assert triggered。
排查步骤:
- 运行
nvidia-smi -q -i 0 | grep -A 10 "Temperature"查看实时温度和风扇转速; - 断电后检查风扇是否被灰尘堵塞,或扇叶是否松动、断裂;
- 用测温枪检测 GPU 核心温度(若表面温度与软件显示差异大,可能是温度传感器故障)。
处理方案:
- 清理风扇灰尘(用压缩空气吹扫),若风扇损坏,更换同型号 GPU 风扇(可联系厂商售后或第三方维修);
- 若温度传感器故障,或散热模块老化(如硅脂干涸),需返厂更换散热模块;
- 临时解决方案:降低 GPU 功耗(
nvidia-smi -pl 250,将功耗墙设为 250W),避免过热关机。
二、软件 / 驱动故障(非硬件损坏,可通过配置修复)
1. 驱动版本不兼容或损坏
故障现象:
nvidia-smi报错Failed to initialize NVML: Driver/library version mismatch;- 识别到 GPU,但运行 CUDA 程序时报
CUDA error: no kernel image is available for execution on the device; - 驱动安装后无法启动(
systemctl status nvidia-persistenced显示失败)。
排查步骤:
- 检查驱动版本与内核版本兼容性:
nvidia-smi查看驱动版本(如 535.104.05),对照 NVIDIA 官网确认是否支持当前系统内核(如 Ubuntu 22.04 内核 5.15 需驱动 ≥ 515); - 检查是否存在驱动残留:
dpkg -l | grep nvidia(Debian/Ubuntu)或rpm -qa | grep nvidia(CentOS/RHEL),若有多个版本驱动,可能导致冲突。
处理方案:
- 彻底卸载旧驱动:
bash
运行
# Debian/Ubuntu sudo apt-get purge nvidia* nvidia-driver-* sudo apt-get autoremove && sudo apt-get autoclean # CentOS/RHEL sudo yum remove nvidia* sudo rm -rf /usr/local/cuda* - 安装兼容版本驱动(以 Ubuntu 22.04 安装 535 版本为例):
bash
运行
sudo apt-get update && sudo apt-get install gcc make sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-535 sudo reboot # 重启后生效 - 验证:
nvidia-smi正常显示 GPU 信息,驱动版本与 CUDA 版本匹配(如 CUDA 12.2 需驱动 ≥ 525)。
2. CUDA/CuDNN 版本不兼容
故障现象:
- GPU 识别正常,但运行深度学习框架(TensorFlow/PyTorch)时报错:
Could not load dynamic library 'libcudart.so.11.0'(CUDA 版本不匹配);CuDNN error: CUDNN_STATUS_INTERNAL_ERROR(CuDNN 版本与 CUDA 不兼容);
- 部分框架功能正常,部分功能报错(如推理正常,训练报错)。
排查步骤:
- 确认框架要求的 CUDA/CuDNN 版本(如 PyTorch 2.0 支持 CUDA 11.7/11.8/12.0);
- 运行
nvcc -V查看当前 CUDA 版本,cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2查看 CuDNN 版本。
处理方案:
- 卸载不兼容的 CUDA/CuDNN,安装框架推荐版本(参考 NVIDIA 官网 CUDA 下载页面);
- 推荐使用 Conda 隔离环境(避免系统级版本冲突):
bash
运行
conda create -n torch2.0 python=3.10 conda activate torch2.0 conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
3. GPU 被占用或显存泄漏
故障现象:
nvidia-smi显示 GPU 显存被占用(Used非 0),但无对应进程(Processes为空);- 多次运行任务后,显存占用持续增长,最终报
CUDA out of memory(即使重启任务也无法释放)。
排查步骤:
- 查看占用进程:
nvidia-smi pmon -s m(实时监控显存占用),或fuser -v /dev/nvidia*(查找占用 GPU 的进程 ID); - 若无进程但显存占用,判定为 显存泄漏(多由驱动或框架 bug 导致)。
处理方案:
- 杀死占用进程:
sudo kill -9 <PID>(PID 为fuser命令输出的进程号); - 释放显存泄漏:
sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm(无需重启服务器); - 若频繁出现,升级驱动至稳定版本(如 535.104.05 升级至 545.23.06),或修复框架 bug(如更新 PyTorch 版本)。
三、物理环境 / 供电故障(易被忽略)
1. 供电不足或不稳定
故障现象:
- 多卡集群中,启动高负载任务(如 8 卡 A100 同时训练)时,部分 GPU 突然离线(
nvidia-smi无法识别); - 服务器触发电源保护(自动关机、重启),或 GPU 供电线接口发热、烧焦;
nvidia-smi显示 GPU 功耗波动剧烈(如从 400W 骤降至 100W)。
排查步骤:
- 检查服务器电源规格:单卡 A100 功耗 400W,8 卡需电源额定功率 ≥ 4000W(冗余 ≥ 20%);
- 用万用表测量 GPU 供电线电压(12V 供电,正常波动范围 ±5%);
- 查看服务器电源日志(如 Dell iDRAC、HPE iLO),是否有供电异常告警。
处理方案:
- 更换更高功率的服务器电源(优先选择 80Plus 白金认证电源);
- 确保 GPU 供电线足额连接(如 A100 需 2 根 8Pin 供电,不可只接 1 根);
- 若机房供电不稳定,加装 UPS 不间断电源。
2. 环境温度过高
故障现象:
- 机房温度超过 28℃ 后,GPU 频繁触发过热降频(算力下降);
- 多卡密集部署时,中间卡温度显著高于边缘卡(温差 ≥ 10℃);
- 任务运行中因温度过高导致 GPU 离线。
排查步骤:
- 检查机房空调运行状态,用温湿度计测量机房温度(推荐控制在 20-25℃);
- 查看服务器散热风扇转速(
ipmitool sdr type fan),是否有风扇故障; - 检查 GPU 之间的散热间距(推荐 ≥ 2cm),是否有遮挡。
处理方案:
- 修复机房空调,增加空调制冷量;
- 更换故障的服务器散热风扇,或升级散热模块(如加装 GPU 散热导流罩);
- 调整 GPU 部署密度(如 4U 服务器最多部署 4 卡 A100,避免过度密集)。
四、集群场景特殊故障:GPU 通信故障(NVLink/InfiniBand)
故障现象:
- 多卡训练时,报
NCCL error: unhandled system error或NVLink communication failure; nvidia-smi nvlink --status显示部分 NVLink 链路状态Down;- 多卡数据并行训练速度异常缓慢(远低于理论值)。
排查步骤:
- 检查 NVLink 线缆连接:断电后拔插 NVLink 桥接器,确保接口无松动、氧化;
- 运行
nvidia-smi nvlink --status验证链路状态(正常显示Up); - 运行 NCCL 测试工具:
nccl-tests/build/all_reduce_perf -b 8MB -e 16GB -f 2,观察是否有通信错误。
处理方案:
- 更换故障的 NVLink 桥接器或线缆;
- 若 NVLink 接口损坏(GPU 硬件问题),需更换 GPU;
- 确保集群中所有 GPU 的 NVLink 版本一致(如均为 NVLink 3.0),避免混合部署。
五、故障排查工具清单(必备)
- 基础工具:
nvidia-smi:查看 GPU 状态、驱动版本、显存 / 功耗 / 温度;nvidia-smi -q:详细查询 GPU 信息(ECC 错误、NVLink 状态等);nvidia-debugdump:导出 GPU 故障日志(用于厂商售后分析)。
- 压力测试工具:
cuda-memcheck:检测 CUDA 内存错误;nvidia-smi pmon:实时监控 GPU 进程、显存、功耗;nccl-tests:验证多卡通信稳定性;gpu-burn:GPU 满负载压力测试(./gpu_burn 60运行 60 秒)。
- 系统工具:
ipmitool:监控服务器电源、风扇、温度;dmesg | grep nvidia:查看 GPU 驱动内核日志(排查驱动故障);lspci | grep -i nvidia:检查 PCIe 设备识别情况。
六、预防措施(降低坏卡概率)
- 硬件层面:
- 选择正规厂商的 GPU 和服务器(避免山寨产品);
- 多卡集群中,电源冗余 ≥ 20%,供电线足额连接;
- 定期清理 GPU 灰尘(每 3-6 个月一次),检查散热模块。
- 软件层面:
- 安装稳定版本的驱动(优先选择 NVIDIA 长期支持版本,如 535 系列);
- 避免混合部署不同型号、不同驱动版本的 GPU;
- 启用 GPU 健康监控(如 Prometheus + Grafana + nvidia-dcgm-exporter),设置温度、功耗、ECC 错误告警。
- 环境层面:
- 机房温度控制在 20-25℃,湿度 40%-60%;
- 避免服务器长期满负载运行(如 24 小时 100% 功耗),定期让 GPU 休息。
总结
GPU 故障优先通过 交叉验证 区分硬件 / 软件问题:
- 若交叉验证后仍无法识别 / 状态异常 → 硬件故障(更换 / 维修);
- 若仅在特定服务器 / 系统中故障 → 软件 / 驱动 / 供电问题(按上述步骤排查)。


被折叠的 条评论
为什么被折叠?



