# 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 个模块: 1. GPU Information 2. Health Check 3. Memory Benchmark 4. Compute Benchmark 5. NCCL Test 6. GPU Stress Test 7. RDMA/IB Test 8. 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 Simulation - `aikubeworker0012` 没有成功启动 ## 要补齐到 PDF 验收口径,需要加的最小清单 1. 安装/修复 `nccl-tests`,确保真正输出 bus BW,而不是 torchrun fallback。 2. 安装/修复 `gpu-burn`,或把 PyTorch stress 改成真正高占用 FP16/BF16 GEMM,并支持 30/60 分钟。 3. 增加 NVLink 专项:`nvidia-smi nvlink -s/-c/-e`,按 18 条/卡、25GB/s、error=0 判定。 4. 增加 DCGM 专项:`dcgmi diag -r 3`,解析子项 PASS/FAIL。 5. 增加 telemetry 采样:stress 期间每 1 秒采温度、功耗、throttle、XID;计算稳态功耗、温差、抖动。 6. 修改 RDMA:支持指定 server/client、4MB 带宽、8B 延迟、双向 ibping、PFC/ECN 计数。 7. 修改 NCCL 配置:全 op 开启,按 1MB/256MB/2GB 三个 size,重复 3 次取最差值和标准差。 8. 修改 Compute:逐 GPU 分别跑,计算同 dtype 极差/均值;增加 FP64、INT8。 9. 修改 Training Simulation:明确 8 卡 1.5B synthetic 分布式训练,加入 tokens/s、step 抖动、显存、loss NaN/Inf 的 PASS/FAIL。 10. 修改最终 verdict:按 PDF 规则,任一子项 FAIL 就整机不通过。 ## 建议执行策略 现在直接跑: ```bash /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。