错误信息
dcgmi diag -r 3
bash
Error: Diagnostic can only be performed on a homogeneous group of GPUs.
错误含义
DCGM 诊断要求在完全同构的 GPU 组上运行,同构指:
- ✅ 相同的 GPU 型号
- ✅ 相同的显存大小
- ✅ 相同的计算能力
- ✅ 相同的 VBIOS 版本
🛠️ 排查步骤
步骤1: 检查 GPU 基本信息
bash
# 查看所有GPU
nvidia-smi
检查点:
- 确认所有 GPU 型号是否相同
- 确认显存大小是否一致
步骤2: 检查 GPU 详细规格
bash
# 查看设备ID、显存和计算能力
~$ nvidia-smi --query-gpu=index,name,pci.device_id,memory.total,compute_cap --format=csv
index, name, pci.device_id, memory.total [MiB], compute_cap
0, NVIDIA GeForce RTX 4090, 0x268410DE, 24564 MiB, 8.9
1, NVIDIA GeForce RTX 4090, 0x268410DE, 24564 MiB, 8.9
......
检查点:
pci.device_id是否一致memory.total是否相同compute_cap是否相同
步骤3: 检查 VBIOS 版本
bash
# 查看每个GPU的VBIOS版本
~$ nvidia-smi --query-gpu=index,gpu_name,pci.bus_id,vbios_version,driver_version --format=csv
index, name, pci.bus_id, vbios_version, driver_version
0, NVIDIA GeForce RTX 4090, 00000000:01:00.0, 95.02.3C.08.1E, 550.54.15
1, NVIDIA GeForce RTX 4090, 00000000:24:00.0, 95.02.3C.00.EC, 550.54.15 ← 不同的VBIOS
2, NVIDIA GeForce RTX 4090, 00000000:41:00.0, 95.02.3C.08.1E, 550.54.15
3, NVIDIA GeForce RTX 4090, 00000000:61:00.0, 95.02.3C.08.1E, 550.54.15
......
示例输出(有问题):
0, NVIDIA GeForce RTX 4090, 95.02.3C.08.1E, 550.54.15
1, NVIDIA GeForce RTX 4090, 95.02.3C.00.EC, 550.54.15 ← 不同的VBIOS
2, NVIDIA GeForce RTX 4090, 95.02.3C.08.1E, 550.54.15
3, NVIDIA GeForce RTX 4090, 95.02.3C.08.1E, 550.54.15
...
检查点:
- ⚠️ 如果
vbios_version不一致,这就是问题根源!
步骤4: 验证 DCGM 检测到的 GPU
bash
# 查看DCGM发现的GPU列表
dcgmi discovery -l
# 查看DCGM的GPU分组
dcgmi group -l
检查点:
- 确认 DCGM 能看到所有 GPU
- 查看默认组
DCGM_ALL_SUPPORTED_GPUS包含哪些 GPU
🔧解决方法
🔧dcgmi group -l 无法找到GPU
bash
#检查nvidia-dcgm服务状态,不是运行中就restart
sudo systemctl status nvidia-dcgm.service
sudo systemctl restart nvidia-dcgm.service
🔧异构GPU导致
方案1: 单独对单个GPU进行诊断
bash
#-i参数指定GPU index
dcgmi diag r 3 -i 0
方案2: 创建同构 GPU 组进行诊断
如果只是部分 GPU 的 VBIOS 版本不同,可以创建只包含相同 VBIOS 版本 GPU 的组。
步骤A: 分析 VBIOS 版本分布
根据步骤3的输出,整理出哪些 GPU 的 VBIOS 版本相同:
示例:
- GPU 0, 2, 3, 4, 5: VBIOS 95.02.3C.08.1E (5个GPU)
- GPU 1, 6: VBIOS 95.02.3C.00.EC (2个GPU)
- GPU 7: VBIOS 95.02.3C.00.02 (1个GPU)
步骤B: 创建同构 GPU 组
bash
# 创建包含相同VBIOS版本GPU的组
# 选择数量最多的那一组,例如GPU 0,2,3,4,5
dcgmi group -c homogeneous_group -a 0,2,3,4,5
# 查看创建的组
dcgmi group -l
输出示例:
| -> 2 |
| -> Group ID | 2 |
| -> Group Name | homogeneous_group |
| -> Entities | GPU 0, GPU 2, GPU 3, GPU 4, GPU 5 |
步骤C: 对同构组运行诊断
bash
# 使用组ID(例如2)运行诊断
dcgmi diag -r 3 -g 2
步骤D: 清理测试组(可选)
bash
# 完成后删除测试组
dcgmi group -d 2