6.5 KiB
6.5 KiB
H100 生产验收标准 vs 当前 gpu_tester.py --test all 覆盖差距
对比文件:/Users/d-robotics/Downloads/H100_production_acceptance.pdf
对比对象:当前仓库执行 python gpu_tester.py --test all --report --format md/json
结论
当前仓库的 test all 能覆盖验收文档里的大类框架,但还不是完整的 H100 生产验收。
它会跑 8 个模块:
- GPU Information
- Health Check
- Memory Benchmark
- Compute Benchmark
- NCCL Test
- GPU Stress Test
- RDMA/IB Test
- Training Simulation
但是按照 PDF 的生产验收标准,仍缺少这些关键项:
- NVLink 每卡 18 条链路的 active/速率/错误计数逐项验收
- DCGM
dcgmi diag -r 3 - 30-60 分钟 burn-in 和 1 秒级温度/功耗/throttle/XID 采样
- NCCL 官方
nccl-tests的性能验收,包括 1MB/256MB/2GB 三个消息大小、重复 3 次取最差值、标准差 - RDMA 生产口径:4MB 带宽、8B 延迟、PFC/ECN 错误、ibping 双向
- 8 卡逐卡 compute 一致性,要求同 dtype 极差/均值 <= 3%
- FP64、INT8 计算项
- 训练项应为 8 卡 1.5B synthetic Transformer,并按 45k tokens/s、step 抖动、显存、loss 健康度验收
覆盖矩阵
| PDF 验收项 | test all 是否覆盖 |
当前覆盖程度 | 主要缺口 |
|---|---|---|---|
| 1. 健康检查 | 部分覆盖 | 温度、功耗、ECC、PCIe、时钟、throttle、persistence、IB 设备 | idle 功耗 <=100W 未单独判定;stress 功耗 >=630W 未判定;retired pages 未查;24h SBE 增长率未查;AER/Replay errors 未查;fabricmanager 服务和 ERROR 日志未查 |
| 2. NVLink 拓扑与链路 | 部分覆盖 | GPU info 会保存 nvidia-smi topo -m |
未跑 nvidia-smi nvlink -s/-c/-e;未验证每卡 18 条 NVLink;未验证每条 25GB/s;未验证 CRC/Replay/Recovery error = 0 |
| 3. Memory Bandwidth | 部分覆盖 | 会用 nvbandwidth 测 H2D、D2H、D2D write/read/bidir | 未输出完整 8x8 P2P 矩阵;未验非对角均值 >=360GB/s、最小值 >=320GB/s、相对均值偏差 <=±5%;D2D 口径和 PDF 的单卡/P2P 验收口径还没完全对齐 |
| 4. Compute Throughput | 大部分覆盖 | 默认配置已是 matrix_size=8192、warmup=50、iterations=500、use_compile=true;H100 绝对 TFLOPS 阈值在 gpu_specs.py 里有 |
目前测试结果是整体/单进程口径,未真正逐 GPU 分别测出 8 卡极差/均值;未测 FP64、INT8 |
| 5. NCCL Multi-GPU | 部分覆盖,依赖工具 | 代码支持 nccl-tests;若缺 binary 会 fallback torchrun 功能连通性 | 当前远端没装好 nccl-tests,实际会退化成功能测试且失败/无性能数据;默认只启 allreduce/alltoall/broadcast,未启 allgather/reducescatter/sendrecv;消息大小不是 1MB/256MB/2GB 三点;未重复 3 次取 worst;未统计标准差 |
| 6. Stress/Burn-in | 部分覆盖 | 会跑 stress,默认 60 秒;无 gpu-burn 时用 PyTorch fallback | PDF 要 >=30min,推荐 60min;要 FP16/BF16 大 GEMM matrix >=8192;要每分钟 TFLOPS 抖动、温度 <=80、卡间温差 <=5、功耗 >=630W、throttle=0、XID=0;当前 PyTorch fallback 只分配约 64MB/卡,压力不够 |
| 7. DCGM 诊断 | 未覆盖 | 无 | 没有执行 dcgmi diag -r 3,也没有解析 Software/Deployment/Hardware/Integration/Stress/Power 子项 |
| 8. RDMA/IB | 部分覆盖 | 会发现 IB 设备,跑 ib_write_bw/read_bw/write_lat/read_lat | 当前脚本用 localhost,不是跨节点;msg_size 是 64KB,不是 4MB;latency 没指定 8B;阈值是 50GB/s 和 10us,不是 PDF 的 write/read >=47GB/s、write_lat <=2us、read_lat <=3.5us;未查 PFC/ECN、ibping 双向 |
| 9. Training Simulation | 部分覆盖 | 会跑 GPT-2 或 synthetic transformer,输出 tokens/s、step time、显存、loss | 当前 synthetic 是约 1.47B 参数但实际单进程 .cuda(),不是 8 卡分布式训练;未按 45k tokens/s、step 抖动 <=±3%、peak <=70GB/卡、NaN/Inf 做硬判定 |
| 10. 总体 Verdict | 部分覆盖 | report 有 summary | 当前 all 的 pass/fail 逻辑偏“模块是否报错”,不是 PDF 的任一子项 FAIL 即整机禁上生产 |
如果现在直接执行 test all,能得到什么
会得到一份“单节点综合体检/基准测试报告”,包含:
- 8 张 H100 的基础信息、驱动/CUDA、PCIe、显存、温度、功耗
- 健康检查结果
- nvbandwidth 的 H2D/D2H/D2D 汇总带宽
- FP32/TF32/FP16/BF16/FP8 计算吞吐
- NCCL 测试结果,如果 nccl-tests 缺失会退化到 torchrun fallback
- 60 秒 stress 结果
- 本机 localhost RDMA/IB 结果
- 训练模拟结果
这份报告能作为“快速冒烟 + 单机初筛”,不能直接作为 PDF 标准下的“生产验收合格报告”。
当前两台机器执行前置状态
已经确认:
nvbandwidth已装好并能被项目脚本调用- PyTorch CUDA 环境已装好
- RDMA perftest 工具已存在
nccl-tests和gpu-burn目前没有按 PDF 生产验收口径准备好
另外,我刚才误触发的 test all:
aikubeworker0016已经在跑单节点test all,当前到 Training Simulationaikubeworker0012没有成功启动
要补齐到 PDF 验收口径,需要加的最小清单
- 安装/修复
nccl-tests,确保真正输出 bus BW,而不是 torchrun fallback。 - 安装/修复
gpu-burn,或把 PyTorch stress 改成真正高占用 FP16/BF16 GEMM,并支持 30/60 分钟。 - 增加 NVLink 专项:
nvidia-smi nvlink -s/-c/-e,按 18 条/卡、25GB/s、error=0 判定。 - 增加 DCGM 专项:
dcgmi diag -r 3,解析子项 PASS/FAIL。 - 增加 telemetry 采样:stress 期间每 1 秒采温度、功耗、throttle、XID;计算稳态功耗、温差、抖动。
- 修改 RDMA:支持指定 server/client、4MB 带宽、8B 延迟、双向 ibping、PFC/ECN 计数。
- 修改 NCCL 配置:全 op 开启,按 1MB/256MB/2GB 三个 size,重复 3 次取最差值和标准差。
- 修改 Compute:逐 GPU 分别跑,计算同 dtype 极差/均值;增加 FP64、INT8。
- 修改 Training Simulation:明确 8 卡 1.5B synthetic 分布式训练,加入 tokens/s、step 抖动、显存、loss NaN/Inf 的 PASS/FAIL。
- 修改最终 verdict:按 PDF 规则,任一子项 FAIL 就整机不通过。
建议执行策略
现在直接跑:
/root/gpu-test-venv/bin/python gpu_tester.py --test all --report --format md --output reports_all/test_all.md
得到的是“当前仓库 all 覆盖范围报告”。
要拿来做生产验收,需要先补齐上面的缺口,尤其是 nccl-tests、gpu-burn、NVLink、DCGM、长时间 burn-in、跨节点 RDMA。