15 KiB
H100 test all 指标说明
本文解释 gpu_tester.py --test all 报告里每一项指标的意义、它在验收中代表什么,以及异常时通常应该优先排查什么。
适用报告:
reports_test_all_latest_aikubeworker0012_20260522_203246.mdreports_test_all_latest_aikubeworker0016_20260522_203447.mdreports_test_all_latest_summary_cn_20260523.md
总体判定
| 指标 | 意义 | 怎么看 |
|---|---|---|
Overall Acceptance Verdict |
整机验收结论 | 按 PDF 生产验收规则,任一必测子项 FAIL,则整机 FAIL |
Suite complete: x/10 tests passed |
10 个测试模块里通过了几个 | 用来快速看整体健康度,但最终以 Overall Acceptance Verdict 为准 |
PASS |
达到当前配置阈值 | 表示该指标在当前测试口径下通过 |
FAIL |
未达到当前配置阈值,或证据不足 | 表示该项不能作为生产验收通过证据 |
WARN |
旧报告或非强制警告口径 | 当前 PDF 生产验收里,关键性能未达标应按 FAIL 处理 |
GPU Info
GPU Info 是基础盘点项,用来确认机器硬件、驱动和 CUDA 环境是否符合预期。
| 指标 | 意义 | 异常影响 |
|---|---|---|
| GPU count | 当前系统识别到的 GPU 数量 | H100 8 卡机器如果不是 8 张,后续所有多卡测试都不可信 |
| GPU model | GPU 型号,例如 H100 | 型号不对会导致阈值、峰值、验收口径都不对 |
| Driver version | NVIDIA 驱动版本 | 版本过旧可能影响 CUDA、NCCL、DCGM、NVLink 工具 |
| CUDA version | CUDA 运行时或驱动支持版本 | CUDA 不匹配会导致 PyTorch、nccl-tests 或编译工具异常 |
| GPU UUID / PCI bus id | GPU 唯一标识和 PCIe 拓扑位置 | 用于定位具体故障卡、对应槽位和链路 |
这项通常不直接代表性能好坏,它是确认“测的是不是目标机器、目标 GPU、目标软件栈”。
Health Check
Health Check 是空闲或轻负载状态下的基础健康检查。
| 指标 | 意义 | 怎么看 |
|---|---|---|
| Temperature | 当前 GPU 温度 | 空闲温度过高可能说明散热、风道、环境温度异常 |
| Power | 当前功耗 | 空闲功耗异常高可能说明有残留进程或功耗状态异常 |
| ECC errors | 显存纠错错误 | 单比特错误过多或双比特错误通常需要重点关注硬件稳定性 |
| PCIe | PCIe 代际和宽度,例如 Gen5 x16 | 降速或降宽会影响 CPU-GPU、RDMA、部分数据搬运性能 |
| Throttle | 当前是否触发限速 | 空闲状态下非 idle throttle 不正常,可能影响后续性能 |
| XID / NVRM events | 驱动或 GPU 错误事件 | 出现新 XID 通常说明硬件、驱动、供电或内核态异常 |
Health PASS 只能说明基础状态正常,不代表满载性能一定达标。
Memory Bandwidth
Memory Bandwidth 衡量数据搬运能力,包括 CPU 到 GPU、GPU 到 CPU、GPU 到 GPU。
| 指标 | 意义 | 代表什么 |
|---|---|---|
| H2D | Host to Device,CPU 内存到 GPU 显存带宽 | 受 PCIe、NUMA、CPU 内存、驱动影响 |
| D2H | Device to Host,GPU 显存到 CPU 内存带宽 | 受 PCIe、NUMA、CPU 内存、驱动影响 |
| D2D | Device to Device,GPU 到 GPU 带宽 | 单节点多卡通常主要受 NVLink/NVSwitch 影响 |
| Efficiency | 实测值相对理论或配置阈值的比例 | 用于快速判断是否达到预期带宽 |
H2D/D2H 主要看 PCIe 和 CPU 侧链路是否正常。D2D 更接近多卡训练、NCCL 和 P2P 通信的基础能力。
Compute Throughput
Compute Throughput 衡量 GPU 在不同数值格式下的矩阵计算吞吐,单位通常是 TFLOPS。
| 指标 | 意义 | 常见用途 |
|---|---|---|
| FP32 | 32 位浮点性能 | 传统科学计算、部分模型训练和验证 |
| TF32 | TensorFloat-32 Tensor Core 性能 | NVIDIA Ampere/Hopper 上常见的 FP32 加速路径 |
| FP16 | 16 位浮点 Tensor Core 性能 | 深度学习训练和推理常用 |
| BF16 | bfloat16 Tensor Core 性能 | 大模型训练常用,数值范围比 FP16 更稳 |
| FP8 | 8 位浮点 Tensor Core 性能 | 新一代低精度训练/推理加速 |
| FP64 | 64 位双精度性能 | HPC、科学计算、仿真 |
| INT8 | 8 位整数性能 | 推理、量化模型 |
| Achieved | 实测吞吐 | 越接近峰值越好 |
| Peak | 理论峰值或规格峰值 | 用来计算效率 |
| Threshold | 当前验收阈值 | 低于阈值则 FAIL |
| Efficiency | Achieved / Peak |
衡量实测利用率 |
Compute Consistency
Consistency 是看同一种 dtype 下,不同 GPU 之间性能是否均衡。
| 指标 | 意义 | 异常含义 |
|---|---|---|
| Min | 8 张 GPU 里最慢卡的实测值 | 用于发现拖后腿的卡 |
| Mean | 8 张 GPU 平均值 | 用于看整体水平 |
| Max | 8 张 GPU 里最快卡的实测值 | 和 Min 一起计算离散度 |
| Spread | (Max - Min) / Mean |
反映卡间性能差异 |
Spread 超过阈值通常说明某些卡受温度、功耗、PCIe、后台负载、时钟策略或硬件状态影响。即使平均性能还可以,卡间差异过大也会拖慢分布式训练。
NVLink / NVSwitch
NVLink/NVSwitch 测试确认 GPU 间高速互联是否完整、速率是否正确、错误计数是否干净。
| 指标 | 意义 | 怎么看 |
|---|---|---|
| Active Links | 每张 GPU 当前活跃 NVLink 数 | H100 8 卡 SXM 常见期望是每卡 18 条 |
| Expected Links | 配置期望链路数 | 少一条都可能影响拓扑和 NCCL 性能 |
| Link speed | 单条链路速率 | 速率不对说明链路降级或识别异常 |
| Error counters | NVLink 错误计数,例如 CRC/replay/recovery | 非零可能说明链路质量或硬件问题 |
NVLink PASS 表示链路状态看起来正常,但 NCCL 仍可能因算法、拓扑、消息大小、NCCL 参数或系统噪声而不达标。
DCGM Diagnostic
DCGM 是 NVIDIA 官方诊断工具。dcgmi diag -r 3 是比较完整的生产诊断级别。
| 子项 | 意义 |
|---|---|
| Deployment/software | 驱动、库、系统软件依赖检查 |
| Hardware/memory | GPU 显存健康检查 |
| Hardware/diagnostic | GPU 硬件基础诊断 |
| Hardware/nvbandwidth | GPU/NVLink/NVSwitch 带宽诊断 |
| Integration/pcie | PCIe 集成和链路相关检查 |
| Stress/targeted_stress | DCGM 自带目标压力测试 |
| Stress/targeted_power | DCGM 自带目标功耗压力测试 |
| summary | 该分类汇总结果 |
DCGM PASS 是强证据,说明官方诊断没有发现明显硬件故障。但它不替代项目里的 NCCL、RDMA、长时间 telemetry 和训练模拟验收。
NCCL Multi-GPU
NCCL 测试衡量单节点多 GPU 集合通信能力。它直接关系到多卡训练效率。
| 指标 | 意义 | 为什么重要 |
|---|---|---|
| source | 测试来源 | 必须是 nccl-tests 才有真实 bus BW;torchrun_fallback 只能说明功能连通,不是性能验收 |
| bus BW | NCCL 报告的总线等效带宽 | 用来衡量通信是否吃满 NVLink/NVSwitch |
| message size | 消息大小,例如 1M、256M、2G | 小消息看延迟和调度,中大消息看带宽 |
| repeats | 重复次数 | 减少偶然波动,当前按 3 次取样 |
| worst bus BW | 多次结果里的最差值 | 生产验收更关注最差情况 |
| mean bus BW | 多次平均值 | 反映稳定水平 |
| stddev | 标准差或波动 | 波动大说明通信稳定性不足 |
NCCL op 含义
| Op | 意义 | 常见场景 |
|---|---|---|
| allreduce | 每张卡都有一份数据,做规约后每张卡都拿到结果 | 数据并行梯度同步最常见 |
| allgather | 每张卡收集所有卡的数据分片 | 模型并行、张量并行、参数/激活收集 |
| reducescatter | 先规约再把结果切分给各卡 | ZeRO、优化器状态切分、分布式训练常用 |
| broadcast | 一张卡把数据广播给其他卡 | 参数同步、初始化权重分发 |
| sendrecv | 点对点发送和接收 | pipeline、定制通信、拓扑验证 |
| alltoall | 每张卡向每张卡交换不同数据 | MoE、专家并行、shuffle 类通信 |
NCCL 小消息失败常见于延迟、调度或阈值口径较严;大消息失败更偏向链路带宽、拓扑、NCCL 参数或 NVSwitch/PCIe/NUMA 配置问题。
Stress Test
Stress Test 是长时间高负载稳定性测试。它不是只看“能不能跑完”,还要看满载期间的温度、功耗、限速和错误事件。
| 指标 | 意义 | 怎么看 |
|---|---|---|
| duration | 实际压力测试时长 | 生产验收通常需要 30/60 分钟 |
| source | 压力来源,例如 pytorch 或 gpu-burn |
说明用什么负载压 GPU |
| dtype | 压力计算的数据类型,例如 BF16 | 影响 Tensor Core、功耗和温度 |
| matrix_size | GEMM 矩阵边长 | 越大越容易形成持续高占用 |
| memory_pct | 目标显存占用比例 | 避免只测很小负载 |
| Avg steady power | 稳态平均功耗 | 判断是否真的把卡压起来 |
| Max steady temp | 稳态最高温度 | 判断散热上限 |
| Temp delta | 8 卡之间最高温和最低温的差 | 差异过大说明风道、散热或卡位不均衡 |
| TFLOPS jitter | 稳态吞吐波动 | 波动大说明性能不稳定 |
| Throttle events | 限速事件数量 | 非 idle throttle 会影响性能稳定性 |
| XID events | 压测期间新增 XID 错误 | 出现 XID 通常是严重风险 |
Throttle 常见含义
| 代码 | 常见含义 | 解释 |
|---|---|---|
0x1 |
idle throttle | 空闲状态限速,通常不算真实问题 |
0x4 |
sw_power_cap |
达到软件功耗上限,性能可能被功耗墙限制 |
0x8 |
hardware slowdown | 硬件触发降速 |
0x10 |
thermal slowdown | 温度触发降速 |
0x20 |
power brake | 外部供电或硬件功率保护 |
0x40 |
software thermal slowdown | 软件温度策略触发降速 |
当前报告里的 sw_power_cap 表示负载确实压到了功耗墙附近,但验收口径把非 idle throttle 作为失败原因之一,因为它会影响长时间稳定输出。
RDMA / InfiniBand
RDMA 测试衡量 IB 网卡和网络链路性能。单节点 loopback 和跨节点 server/client 是两种不同证据,不能混用。
| 指标 | 意义 | 怎么看 |
|---|---|---|
| Device | IB 设备名,例如 mlx5_0 |
对应具体 HCA/端口 |
| Port | 端口号 | 通常是 port 1 |
| State | 端口状态,例如 ACTIVE/DOWN | ACTIVE 才能作为可用链路 |
| Rate | 端口速率,例如 400 Gb/sec | 低于期望说明链路降级或接错网络 |
| GID/LID | IB 寻址信息 | ibping 和跨节点定位会用到 |
| ib_write_bw | RDMA write 带宽 | 客户端向远端写数据的吞吐 |
| ib_read_bw | RDMA read 带宽 | 客户端从远端读数据的吞吐 |
| ib_write_lat | RDMA write 延迟 | 小消息写延迟 |
| ib_read_lat | RDMA read 延迟 | 小消息读延迟 |
| ibping | IB 层连通性测试 | 看 LID/GID 层是否可达 |
| PFC/ECN/CNP counters | 拥塞和流控相关计数 | 非零或增长可能说明网络拥塞/丢包/流控问题 |
单节点与跨节点的区别
| 口径 | 意义 | 能证明什么 | 不能证明什么 |
|---|---|---|---|
local_loopback |
在同一台机器本地启动 perftest server/client | 工具、设备、单机端口基本可用 | 不能证明两台机器之间 RDMA 网络达标 |
| server/client 跨节点 | 一台做 server,另一台做 client | 能证明实际跨节点 RDMA 带宽/延迟 | 需要明确 server_addr、ib_device、ib_port、ibping_target |
RDMA read 带宽低于 write 带宽很常见,但生产验收会给 read/write 各自设置阈值。read 不过线时,需要排查 HCA 固件、BIOS、PCIe、NUMA、RoCE/IB 配置、交换机、PFC/ECN、线缆和端口速率。
Training Simulation
Training Simulation 用一个合成 1.5B Transformer 训练负载验证 8 卡分布式训练是否能稳定运行。
| 指标 | 意义 | 怎么看 |
|---|---|---|
| Model | 模型类型 | 当前是 synthetic 1.5B,不依赖真实数据集 |
| Parameters | 参数量 | 用来确认负载规模是否达到预期 |
| GPU Count | 参与训练的 GPU 数 | 生产口径要求 8 卡 DDP |
| DType | 训练数值格式,例如 BF16 | 大模型训练常用 BF16 |
| Batch Size | 每步 batch 大小 | 影响吞吐和显存 |
| Seq Length | 序列长度 | 影响计算量和显存 |
| Steps | 计入统计的训练步数 | 步数太少会导致统计不稳 |
| Warmup Steps | 预热步数 | 避免把 CUDA 初始化、编译、缓存冷启动计入性能 |
| Avg Step Time | 平均每步耗时 | 越低越好 |
| Throughput | tokens/sec | 训练吞吐核心指标 |
| Samples/sec | 每秒样本数 | 辅助衡量数据处理速度 |
| Peak Memory | 峰值显存 | 看是否接近 OOM 或显存利用不足 |
| Final Loss | 最后 loss | 用于确认数值是有限值,没有 NaN/Inf |
| Step Jitter | step 时间抖动 | 抖动大说明训练不稳定 |
| Distributed Mode | 分布式模式 | 必须是 ddp 才满足 8 卡分布式口径 |
Training PASS 说明 8 卡 DDP 训练路径、NCCL 功能连通、PyTorch CUDA 和基本数值稳定性都没问题。但它不能替代 NCCL 性能测试,因为训练负载可能没有覆盖所有通信模式和消息大小。
常见误读
DCGM PASS不等于整机验收 PASS。DCGM 是官方诊断的一部分,不覆盖全部业务性能门槛。Training PASS不等于 NCCL 性能 PASS。训练能跑,只说明功能链路通;NCCL bus BW 仍可能不达标。NVLink PASS不等于 NCCL PASS。链路数量和错误计数正常,不代表所有 NCCL op/size 都达到阈值。ibping PASS不等于 RDMA 带宽 PASS。ibping只证明连通性,不证明吞吐和延迟达标。local_loopback不能当作跨节点 RDMA 证据。跨节点验收必须有 server/client 两端证据。- Stress 跑满 30 分钟不等于 PASS。温差、功耗、throttle、XID、jitter 都要一起看。
- 小消息 NCCL 低不一定是链路断了,可能是延迟、算法、启动开销或阈值口径导致;但生产验收仍按阈值判定。
排查优先级建议
| 失败项 | 优先看什么 |
|---|---|
| Compute FAIL | GPU 时钟、功耗策略、MIG/MPS、后台进程、PyTorch/CUDA 版本、benchmark 算法是否用到目标 Tensor Core 路径 |
| NCCL FAIL | NCCL_DEBUG=INFO、拓扑、NVSwitch/NVLink、NCCL 算法、消息大小、PCIe/NUMA、进程绑核 |
| Stress FAIL | 机箱风道、风扇、环境温度、功耗上限、nvidia-smi -q -d POWER,CLOCK,TEMPERATURE |
| RDMA FAIL | 端口速率、HCA 固件、线缆、交换机、PFC/ECN、NUMA、BIOS、跨节点 server/client 配置 |
| Training FAIL | torchrun、NCCL 环境变量、CUDA OOM、loss NaN/Inf、DDP 初始化、网络/共享内存 |
一句话版
这套报告不是只看 GPU 能不能亮、训练能不能跑,而是同时验证:硬件识别、基础健康、显存和互联带宽、计算吞吐、多卡通信、长时间满载稳定性、IB/RDMA 网络、官方 DCGM 诊断和 8 卡训练业务路径。任何一个关键项 FAIL,按生产验收都应判整机不通过。