From 017c981062a7d034706d8fb93b6f9ca9eaa04795 Mon Sep 17 00:00:00 2001 From: cs Date: Tue, 26 May 2026 00:44:56 +0800 Subject: [PATCH] Remove remaining report docs from PR --- H100_test_all_vs_PDF_覆盖对比.md | 85 --------------- H100验收_vs_test_all_差距分析.md | 100 ------------------ ...all_aikubeworker0016_中文结果与验收差距.md | 73 ------------- 3 files changed, 258 deletions(-) delete mode 100644 H100_test_all_vs_PDF_覆盖对比.md delete mode 100644 H100验收_vs_test_all_差距分析.md delete mode 100644 test_all_aikubeworker0016_中文结果与验收差距.md diff --git a/H100_test_all_vs_PDF_覆盖对比.md b/H100_test_all_vs_PDF_覆盖对比.md deleted file mode 100644 index f6d112a..0000000 --- a/H100_test_all_vs_PDF_覆盖对比.md +++ /dev/null @@ -1,85 +0,0 @@ -# H100 PDF 验收项 vs 当前 `test all` 覆盖对比 - -对比对象: - -- PDF:`/Users/d-robotics/Downloads/H100_production_acceptance.pdf` -- 当前脚本:`python gpu_tester.py --config configs/default.yaml --test all --report --format md` -- 范围:单节点 8 卡 H100。跨节点 NCCL/RDMA 暂不纳入本轮。 - -## 结论 - -当前 `test all` 已经从“功能巡检”扩成了“接近生产验收”的单节点套件:GPU 健康、NVLink/NVSwitch、HBM/PCIe/NVLink 带宽、计算、NCCL、压力、RDMA 本机端口、DCGM、训练模拟都会进入同一个 all。 - -最新 stress smoke 已确认 PyTorch BF16 GEMM 压力能把两台机器压到 PDF 要求的功耗区间: - -- `aikubeworker0012`:45 秒 smoke,稳态平均功耗约 `697-698W/卡`,TFLOPS jitter `4.07%`,XID `0`,但温差 `12C`、`clocks_throttle_reasons.active=0x4`,按 PDF 严格 FAIL。 -- `aikubeworker0016`:45 秒 smoke,稳态平均功耗约 `697-699W/卡`,TFLOPS jitter `3.77%`,XID `0`,但温差 `8C`、`clocks_throttle_reasons.active=0x4`,按 PDF 严格 FAIL。 - -也就是说,当前卡点已经不是“脚本压不满 H100”,而是机器在满功耗压力下没有满足 PDF 的 `温差 <=5C` 和 `Throttle Reasons 全程 0x0` 两个严格门槛。 - -但如果严格按 PDF 做最终验收,现在还差这些: - -1. 24 小时类指标未覆盖:PDF 要求 SBE 24h 增长率、长稳态观察;当前 `all` 是单次快照 + 30 分钟压力,不等于 24 小时老化。 -2. 跨节点项目本轮故意不测:PDF 的 IB/RDMA 生产验收通常要双端 `ib_write_bw/read_bw/lat`、`ibping`;当前按你的要求先做单节点,跨节点未纳入。 -3. PFC/ECN/AER 的覆盖依赖机器暴露的系统计数器:脚本会读能找到的 sysfs 计数器和 dmesg,但如果交换机侧 PFC/ECN 不在主机暴露,仍需要网络侧补证据。 -4. NCCL 1MB 档会被严格阈值打失败:实测 1MB AllReduce bus BW 约 23 GB/s,而 256MB AllReduce 已通过 `nccl-tests` 验证,约 421 GB/s;如果 PDF 要求 1MB 也达到 405 GB/s,这项不是“没测”,而是会被判 FAIL。 -5. Stress 已能达到功耗和 jitter 要求,但短测已经暴露温差和 throttle strict FAIL;完整 1800 秒只会给出更正式的证据,不会自动改变这个判据。 - -## 覆盖表 - -| PDF 验收项 | 当前 `test all` 状态 | 还少什么 | -|---|---:|---| -| GPU 基本信息、Driver/CUDA | 已覆盖 | 无;会记录 driver、CUDA、GPU 型号 | -| 温度阈值:稳态 ≤75C、峰值 ≤85C | 已覆盖健康快照;压力项覆盖 ≤80C | 24h 稳态曲线不在一次 all 内 | -| idle power ≤100W/card | 部分覆盖 | 当前 health 会采功耗,但 idle 判据还不是独立验收项 | -| stress power ≥630W/card | 已覆盖;短测两台约 697-699W/卡 | 完整 1800 秒仍待跑 | -| throttle reasons active=0x0 | 已覆盖;短测两台出现 0x4 | 按 PDF 严格判 FAIL;不是脚本跳过项 | -| DBE/SBE/retired pages | 部分覆盖 | retired pages 和内核错误已查;SBE 24h 增长率未覆盖 | -| PCIe Gen5 x16 | 部分覆盖 | GPU 信息/拓扑可见;Replay/AER 依赖 dmesg/sysfs,可能还需额外主板侧证据 | -| Fabric Manager active 且无 ERROR | 已覆盖 | 无;health 会查 systemd 和 journal | -| NVLink:18 links/GPU、25GB/s/link、错误为 0 | 已覆盖 | 无;新增 `nvlink` 项 | -| D2D/H2D/D2H 带宽 | 已覆盖 | 依赖 `nvbandwidth`,两台已具备 | -| 8x8 P2P matrix off-diagonal mean/min/deviation | 已覆盖 | 无;由 nvbandwidth JSON 解析 | -| Compute FP32/TF32/FP16/BF16/FP8/FP64/INT8 | 已覆盖 | INT8 为 PyTorch `_int_mm` 路径,若要供应商标准 INT8 kernel 需再换实现 | -| NCCL AllReduce/AllGather/ReduceScatter/Broadcast/SendRecv/AllToAll | 已覆盖 | 无;`nccl-tests` 已在两台编好 | -| NCCL 1MB/256MB/2GB,repeat 3,stddev ≤3% | 已覆盖 | 严格按 PDF 阈值时 1MB 档大概率 FAIL;256MB AllReduce 两台 `nccl-tests` 实测约 421GB/s | -| Stress ≥30min,BF16/FP16 GEMM 8192,1s telemetry | 已覆盖;默认 BF16 GEMM `24576`,1s telemetry,warmup 后稳态判定 | 完整 1800 秒待执行;短测已暴露温差/throttle FAIL | -| DCGM `dcgmi diag -r 3` | 已覆盖;DCGM 4.5.3 已安装,服务已启用 | 两台完整 `-r 3` 已 PASS;日志见 `/root/test_gpu_scripts/reports/dcgm_r3_*_20260522_17010*.log` | -| RDMA 端口 ACTIVE、400Gbps | 部分覆盖 | 单节点可查端口;严格双端吞吐/时延本轮不跑 | -| RDMA write/read bw ≥47GB/s、latency ≤2/3.5us | 部分覆盖 | 单机 localhost/perftest 不等价跨节点线速验收 | -| PFC/ECN errors=0、ibping 双向 OK | 部分覆盖 | 主机能读到的计数器会查;交换机侧/跨节点 ibping 未覆盖 | -| 1.5B synthetic Transformer BF16,8 卡,≥45k tokens/s | 已覆盖 DDP 路径 | 8 进程 DDP smoke 已通过;完整 50 step 长跑待执行 | -| 任一子项 FAIL 则总体验收 FAIL | 已覆盖 | `all` 现在会按 strict verdict 退出非 0 | - -## 如果现在直接跑 `all` - -推荐命令: - -```bash -cd /root/test_gpu_scripts -/root/gpu-test-venv/bin/python gpu_tester.py --config configs/default.yaml --test all --report --format json --output reports/h100_all_$(hostname)_$(date +%Y%m%d_%H%M%S).json -``` - -如果要直接生成中文 Markdown 报告,用这个: - -```bash -cd /root/test_gpu_scripts -/root/gpu-test-venv/bin/python gpu_tester.py --config configs/default.yaml --test all --report --format md --output reports/h100_all_$(hostname)_$(date +%Y%m%d_%H%M%S).md -``` - -预计行为: - -- 会跑完整单节点项目,压力默认 1800 秒,默认使用 PyTorch BF16 GEMM 压力并采 1 秒 telemetry/XID。 -- stress 默认矩阵为 `24576`,用于把 H100 压到 ≥630W/卡;PDF 只要求 `matrix_size >=8192`,这里是为了满足功耗门槛。 -- NCCL 会跑 6 个 op × 3 个 message size × 3 次 repeat。 -- DCGM 会跑 `dcgmi diag -r 3 -n gpu:8 -j`;DCGM 工具链已安装并启动,`diag -r 1` 与两台独立 `r3` 长跑均已 PASS。 -- NCCL 1MB 档按 405GB/s 阈值也会失败;256MB AllReduce 已验证走 `nccl-tests`,两台约 421GB/s。 -- stress 按 PDF 严格口径预计会 FAIL:当前短测证据显示温差超过 5C,且 throttle active 出现 `0x4`。 -- 跨节点 RDMA/NCCL 不在这次单节点 all 里。 - -## 当前最小补齐清单 - -1. 如果要严格 RDMA 生产验收,下一轮用两台机器做 server/client 双端测试。 -2. 执行完整 1.5B DDP 50 step 训练验收并归档 tokens/s、jitter、显存和 loss。 -3. 执行完整 1800 秒 stress 并归档 1 秒 telemetry、XID、throttle、功耗和温度;当前预期会因温差/throttle FAIL。 -4. 如果要 24 小时验收,增加一个 24h monitor 模式,记录 SBE 增长率、XID、温度、功耗、降频曲线。 diff --git a/H100验收_vs_test_all_差距分析.md b/H100验收_vs_test_all_差距分析.md deleted file mode 100644 index 5599d0c..0000000 --- a/H100验收_vs_test_all_差距分析.md +++ /dev/null @@ -1,100 +0,0 @@ -# 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。 diff --git a/test_all_aikubeworker0016_中文结果与验收差距.md b/test_all_aikubeworker0016_中文结果与验收差距.md deleted file mode 100644 index d05e25a..0000000 --- a/test_all_aikubeworker0016_中文结果与验收差距.md +++ /dev/null @@ -1,73 +0,0 @@ -# aikubeworker0016 `test all` 中文结果与 H100 验收差距 - -测试命令: - -```bash -/root/gpu-test-venv/bin/python gpu_tester.py --test all --report --format json --output reports_all/test_all.json -``` - -测试机器:`aikubeworker0016 / 172.72.8.16` - -原始结果:`reports_all_aikubeworker0016.json` - -## 先说结论 - -项目输出里最后显示 `Suite complete: 8/8 tests passed`,但这个结论不能直接当成生产验收 PASS。 - -原因是当前 `all` 的汇总逻辑主要看模块有没有抛 `error`,没有把 `nccl.passed=false` 和 `rdma.passed=false` 当成整套失败。因此按 PDF 的生产验收口径,这台机器目前不能算完整验收通过。 - -## 本次 `test all` 实际结果 - -| 模块 | 当前结果 | 关键数据 | 按 PDF 验收看 | -| --- | --- | --- | --- | -| GPU 信息 | 已覆盖 | 8 张 H100,Driver 580.159.03,CUDA 13.0 | 基础信息 OK,但 NVLink 链路专项不足 | -| 健康检查 | PASS | health.passed=true | 基础健康 OK,但缺 retired pages、AER/Replay、fabricmanager 日志、stress 期间采样 | -| Memory | 有结果 | H2D 55.5 GB/s,D2H 55.3 GB/s,D2D 486.5 GB/s | 单项看起来不错,但缺 8x8 P2P 矩阵验收 | -| Compute | 有结果 | FP32 51.9,TF32 357.0,FP16 664.0,BF16 700.1,FP8 1116.2 TFLOPS | 对 PDF 绝对门槛不全通过 | -| NCCL | 实际不合格 | source=torchrun_fallback,`nccl.passed=false`,无 bus BW 性能数据 | 不满足 PDF NCCL 性能验收 | -| Stress | PASS | PyTorch fallback,60 秒,8 GPU 状态 PASS | 不满足 PDF 的 30/60 分钟 burn-in;负载只有约 64MB/卡,压力明显不够 | -| RDMA/IB | 实际不合格 | ib_write_bw/read_bw 0.13 GB/s WARN;write_lat 4.10us PASS;read_lat 16us WARN | 当前是 localhost 单节点口径,不满足 PDF RDMA 生产验收 | -| Training | 有结果 | synthetic 1.47B,52471 tokens/s,peak 27.31GB,loss 0.0041 | tokens/s 过线,但代码实际不是 8 卡分布式训练验收 | - -## Compute 对 PDF 门槛的判断 - -PDF H100 PASS 门槛: - -| DType | 本次结果 | PDF PASS 门槛 | 判断 | -| --- | ---: | ---: | --- | -| FP32 | 51.9 TFLOPS | >= 54 | WARN | -| TF32 | 357.0 TFLOPS | >= 444 | FAIL | -| FP16 | 664.0 TFLOPS | >= 734 | WARN | -| BF16 | 700.1 TFLOPS | >= 745 | WARN | -| FP8 | 1116.2 TFLOPS | >= 1400 | FAIL | -| FP64 | 未测 | >= 63 | 缺失 | -| INT8 | 未测 | >= 1536 | 缺失 | - -说明:PDF 里 WARN 区间是 PASS 门槛的 90%-100%。TF32 和 FP8 低于 90% 门槛,所以按 PDF 是 FAIL。 - -## 如果只执行当前仓库 `test all`,少了什么 - -1. 少 NVLink 专项验收:没有逐卡检查 18 条链路、25GB/s 速率、CRC/Replay/Recovery error = 0。 -2. 少 DCGM 诊断:没有 `dcgmi diag -r 3`。 -3. 少长时间 burn-in:当前是 60 秒,不是 30/60 分钟。 -4. 少 stress 期间 1 秒级采样:温度、功耗、throttle、XID、TFLOPS 抖动都没按 PDF 统计。 -5. 少真正 NCCL 性能:当前退化到 torchrun fallback,没有 `nccl-tests` bus BW。 -6. 少 NCCL 全操作和三档消息:PDF 要 AllReduce/AllGather/ReduceScatter/Broadcast/SendRecv/AllToAll,且 1MB/256MB/2GB 都过线。 -7. 少 NCCL 重复 3 次取最差值和标准差 <=3%。 -8. 少完整 P2P 8x8 矩阵:没有非对角均值、最小值、偏差判断。 -9. 少逐 GPU compute 一致性:没有真正分别测 8 卡同 dtype 极差/均值 <=3%。 -10. 少 FP64 和 INT8。 -11. 少 RDMA 生产口径:当前 `localhost`,64KB message,阈值 10us;PDF 要 4MB BW、8B latency、write/read >=47GB/s、write_lat <=2us、read_lat <=3.5us。 -12. 少 PFC/ECN 错误计数和 ibping 双向。 -13. 少真正 8 卡分布式 Training Simulation 验收。 -14. 少严格最终 verdict:当前代码会把 `passed=false` 的模块也计入“通过”,这是验收逻辑漏洞。 - -## 建议 - -`test all` 可以继续作为快速初筛跑,但如果目标是对齐 `H100_production_acceptance.pdf`,需要把它升级成“生产验收模式”。优先级如下: - -1. 先修汇总 verdict:任何子模块 `passed=false` 必须导致整机 FAIL。 -2. 先装好 `nccl-tests` 和 `gpu-burn`,否则 NCCL/Stress 都不是生产口径。 -3. 增加 NVLink、DCGM、长时间 telemetry、P2P 矩阵。 -4. 改 RDMA 为生产参数,且支持跨节点。 -5. 改 compute/training 为逐 GPU/8 卡分布式验收。