Analyze multinode NCCL artifact signals

This commit is contained in:
cs 2026-05-23 19:50:51 +08:00
parent 18cebd8e06
commit 59621d26a0
3 changed files with 149 additions and 2 deletions

View File

@ -0,0 +1,141 @@
# 多机多卡 NCCL Artifacts 信号分析 2026-05-23
## 分析对象
- 本地 artifacts 解包目录:`/private/tmp/nccl_artifacts_113803/multinode_nccl_pdf_matrix_20260523_113803_artifacts`
- 远端原始报告:`/root/test_gpu_scripts/reports/multinode_nccl_pdf_matrix_20260523_113803.md`
- 远端 artifacts`/root/test_gpu_scripts/reports/multinode_nccl_pdf_matrix_20260523_113803_artifacts`
- 远端 artifacts tar`/root/test_gpu_scripts/reports/multinode_nccl_pdf_matrix_20260523_113803_artifacts.tar.gz`
- 本地 manifest`reports_multinode_nccl_pdf_matrix_artifacts_manifest_20260523_113803.md`
这份文档只看最新正式 PDF matrix 复跑产生的原始 `cmd/stdout/stderr/json`,目的是回答:当前多机多卡 NCCL 是否真的走了 IB/GDRDMA是否用到了正确 HCA是否有 SHARP/外部 NCCL net plugin 信号,以及 2x8 失败更像卡在哪一层。
## 一句话结论
最新 artifacts 证明本轮多机多卡测试不是 launch 失败、不是回退 TCP、不是 GDRDMA 没开,也不是 HCA 名字选错;所有 case 都走 `IB`,都识别并启用了 `mlx5_0,mlx5_1,mlx5_6,mlx5_7` 这 4 条 400G railNCCL 正确性 `wrong=0`。当前主要缺口仍然是:环境没有外部 NCCL net plugin / SHARP 证据,且 2x8 档位的 PDF 阈值明显高于当前 4 rail 环境可解释能力alltoall 还存在独立的跨 Leaf 多点通信效率问题。
## Artifacts 信号表
| Case | Peak | Threshold | Status | Plugin missing | NET/IB using | Using network IB | HCA set | GDR HCA set | GDRDMA edges | P2P/CUMEM | SHARP/CollNet | stdout KB |
|---|---:|---:|---|---:|---:|---:|---|---|---:|---:|---:|---:|
| allreduce_2x1 1_GPU | 47.29 | 48.90 | FAIL | 2 | 2 | 2 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 16 | 0 | 0 | 24 |
| allreduce_2x2 2_GPUs | 137.16 | 136.93 | PASS | 4 | 4 | 4 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 32 | 32 | 0 | 68 |
| allreduce_2x4 4_GPUs | 335.07 | 335.48 | FAIL | 8 | 8 | 8 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 256 | 0 | 0 | 259 |
| allreduce_2x8 8_GPUs | 353.85 | 491.84 | FAIL | 16 | 16 | 16 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 256 | 0 | 0 | 410 |
| alltoall_2x1 1_GPU | 24.85 | 27.25 | FAIL | 2 | 2 | 2 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 8 | 0 | 0 | 19 |
| alltoall_2x2 2_GPUs | 47.76 | 54.41 | FAIL | 4 | 4 | 4 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 24 | 8 | 0 | 52 |
| alltoall_2x4 4_GPUs | 72.74 | 73.73 | FAIL | 8 | 8 | 8 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 80 | 48 | 0 | 200 |
| alltoall_2x8 8_GPUs | 36.83 | 76.54 | FAIL | 16 | 16 | 16 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | mlx5_0,mlx5_1,mlx5_6,mlx5_7 | 512 | 224 | 0 | 603 |
字段解释:
- `Plugin missing`:日志里的 `NET/Plugin: Could not find: none libnccl-net-none.so.` 次数。当前命令显式设置了 `NCCL_NET_PLUGIN=none`,所以这个信号表示没有使用外部 NCCL net plugin而不是 NCCL 没有网络。
- `NET/IB using`:日志里的 `NET/IB : Using ...` 次数,说明每个 rank 初始化时看到的 IB HCA 列表。
- `Using network IB`NCCL 最终选择了 `IB` 网络。
- `GDR HCA set`:出现 `GPU Direct RDMA Enabled for HCA ...` 的 HCA 集合。
- `GDRDMA edges`NCCL graph/connection 中经由 `NET/IB/*/GDRDMA` 的跨节点边数量。
- `P2P/CUMEM`:节点内 GPU 间路径信号,不是跨节点 IB。
- `SHARP/CollNet`:日志中 `SHARP``CollNet``HCOLL` 相关信号计数。当前为 0。
## 已排除的问题
### 1. 不是 TCP 回退
所有 8 个 case 都有 `Using network IB`,且每个 rank 均有 `NET/IB : Using ...`。这说明 NCCL 通信路径不是 socket/TCP 回退。
### 2. 不是 HCA 名字选错
所有 case 的 HCA 集合都一致:
```text
mlx5_0, mlx5_1, mlx5_6, mlx5_7
```
这与当前配置里的 `NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_6,mlx5_7` 一致,也与前面环境快照中确认的 4 条 400G IB rail 一致。
### 3. 不是 GDRDMA 没开
所有 case 都出现 `GPU Direct RDMA Enabled for HCA ...`,并且跨节点连接里有 `NET/IB/*/GDRDMA` 边。2x8 alltoall 甚至有 512 条 `GDRDMA/Shared` 边,所以不能简单判断为 GDRDMA 被关掉。
### 4. 不是 NCCL 正确性失败
最新 manifest 中 8 个 case 全部:
```text
returncode = 0
wrong_count = 0
```
因此当前 FAIL 是严格 PDF 性能阈值失败,不是结果错误。
## 仍然成立的缺口
### 1. 外部 NCCL net plugin / SHARP 仍缺证据
当前命令中显式设置:
```text
NCCL_NET_PLUGIN=none
```
所有 case 均出现 `NET/Plugin: Could not find: none libnccl-net-none.so.`,同时 `SHARP/CollNet` 信号计数为 0。结合前面的环境检查没有找到 `libnccl-net*.so*` / `libsharp*.so*`,当前环境不能证明与 PDF 参考环境的软件栈等价。
### 2. 2x8 allreduce 更像被 4 rail 物理能力卡住
2x8 allreduce
```text
当前 busbw = 353.85 GB/s
PDF 阈值 = 491.84 GB/s
```
16 rank allreduce 的换算关系是:
```text
busbw = algbw * 1.875
```
当前实测反推:
```text
353.85 / 1.875 = 188.72 GB/s algbw
```
当前每节点 4 条 400G rail 的理论单向原始带宽约:
```text
4 * 400 Gb/s / 8 = 200 GB/s
```
所以 allreduce 已经接近 4 rail 的可解释上限;如果 PDF 阈值来自更多 400G rail 或带 SHARP/plugin 的环境,当前节点不应直接按该阈值判死。
### 3. 2x8 alltoall 是独立重点问题
2x8 alltoall
```text
当前 busbw = 36.83 GB/s
PDF 阈值 = 76.54 GB/s
```
alltoall 和 allreduce 使用同一组 HCA同样走 IB/GDRDMA但 2x8 alltoall 下降明显。这个现象更像多点到多点流量在当前跨 Leaf 网络、ECMP/adaptive routing、拥塞控制或 NCCL graph 策略下效率不够,而不是单纯 HCA 没起来。
## 下一步建议
1. 先不要继续盲扫 NCCL 小参数。已有 artifacts 说明基础链路已经起来,继续微调环境变量的收益大概率很低。
2. 向硬件/网络侧确认 PDF 参考环境每节点是否有 8 条 400G rail以及是否启用了 SHARP、HCOLL 或外部 NCCL net plugin。
3. 如果验收坚持 PDF 原阈值,应先补齐 plugin/SHARP 或换等价 8 rail 节点复测。
4. 如果当前硬件形态就是 4 条 400G rail则 allreduce 阈值应重新定标alltoall 单独作为跨 Leaf 多点通信效率问题继续排查。
5. 补齐 plugin/SHARP 后,优先复跑:
```bash
cd /root/test_gpu_scripts
bash scripts/run_multinode_nccl_pdf_matrix.sh
```
并对比新旧 artifacts 中:
- `Plugin missing` 是否消失。
- 是否出现外部 net plugin、SHARP 或 CollNet 信号。
- 2x8 allreduce 是否突破当前 `353-354 GB/s` 平台。
- 2x8 alltoall 是否突破当前 `36-37 GB/s` 平台。

View File

@ -15,6 +15,7 @@
| alltoall PXN disabled 后 rail 均衡但仍低 | 最新 PDF matrix 2x8 为 `36.83 GB/s busbw`,每条 rail 约 `19-20 GB/s` |
| 正式 PDF matrix 已复跑 | `reports_multinode_nccl_pdf_matrix_20260523_113803.md`,所有 case 正确性通过;除 2x2 allreduce 外,性能阈值仍 FAIL |
| 原始 artifacts 已归档 | `/root/test_gpu_scripts/reports/multinode_nccl_pdf_matrix_20260523_113803_artifacts`,每个 case 有完整 `cmd/stdout/stderr/json` |
| artifacts 信号已分析 | `reports_multinode_nccl_artifact_signal_analysis_20260523.md`,确认所有 case 都走 IB/GDRDMA 和 4 条 400G HCA未见 SHARP/CollNet |
| 没看到硬错误 | 未见 discard、RoCE retrans、slow restart、packet sequence error 等增长 |
| 当前缺外部 NCCL 网络组件 | 未找到 `libnccl-net*.so*` / `libsharp*.so*`,未见 SHARP/HCOLL 包 |
@ -171,6 +172,7 @@ OUT_DIR=/root/test_gpu_scripts/reports/nccl_deep_diag_plugin_check_$(date +%Y%m%
| `reports_multinode_nccl_pdf_matrix_20260523_113803.md` | 最新带 artifacts 的多机多卡 PDF matrix 原始报告 |
| `reports_multinode_nccl_pdf_matrix_run_20260523.md` | 最新多机多卡 PDF matrix 中文摘要 |
| `reports_multinode_nccl_pdf_matrix_artifacts_manifest_20260523_113803.md` | 最新 artifacts manifest 和 checksum |
| `reports_multinode_nccl_artifact_signal_analysis_20260523.md` | 最新 artifacts 的 IB/GDRDMA/HCA/plugin/SHARP 信号分析 |
| `reports_multinode_nccl_deep_diagnose_run_20260523.md` | 本轮深度复跑结果 |
| `reports_multinode_nccl_environment_gap_20260523.md` | 硬件/软件环境等价性缺口 |
| `reports_multinode_nccl_counter_probe_20260523.md` | RDMA rail/counter 证据 |

View File

@ -7,6 +7,7 @@
当前结论:
- 2026-05-23 `11:38` 已完成带 artifacts 的正式多机多卡 PDF matrix 复跑,原始报告为 `reports_multinode_nccl_pdf_matrix_20260523_113803.md`,中文结论为 `reports_multinode_nccl_pdf_matrix_run_20260523.md`artifact manifest 为 `reports_multinode_nccl_pdf_matrix_artifacts_manifest_20260523_113803.md`
- 已补充 artifacts 信号分析:`reports_multinode_nccl_artifact_signal_analysis_20260523.md`。结论是所有 case 都走 `IB`,都使用 `mlx5_0,mlx5_1,mlx5_6,mlx5_7`,都有 GDRDMA 信号,但没有 SHARP/CollNet/外部 NCCL net plugin 证据。
- 2 机 1/2/4 GPU per node 档位已接近 PDF 参考值,但严格按阈值仍 FAIL。
- 2 机 8 GPU 档位仍未达到 PDF 参考值:
- allreduce 实测 `353.85 GB/s busbw`PDF 目标 `491.84 GB/s`
@ -20,8 +21,9 @@
|---:|---|---|
| 1 | `reports_multinode_nccl_handoff_plan_20260523.md` | 给网络/硬件/环境侧的交接计划,包含决策树、要问的问题和复跑命令 |
| 2 | `reports_multinode_nccl_environment_gap_20260523.md` | 说明当前环境为什么不能证明与 PDF 等价,重点是 4 x 400G rail 和缺少 NCCL net plugin / SHARP |
| 3 | `reports_multinode_nccl_pdf_matrix_run_20260523.md` | 最新正式多机多卡 PDF matrix 结果摘要 |
| 4 | `reports_multinode_nccl_deep_diagnose_run_20260523.md` | 本轮完整深度诊断复跑结果,包含 counter、GRAPH、PXN sweep |
| 3 | `reports_multinode_nccl_artifact_signal_analysis_20260523.md` | 最新 artifacts 信号分析,确认 IB/GDRDMA/HCA 使用情况和 plugin/SHARP 缺口 |
| 4 | `reports_multinode_nccl_pdf_matrix_run_20260523.md` | 最新正式多机多卡 PDF matrix 结果摘要 |
| 5 | `reports_multinode_nccl_deep_diagnose_run_20260523.md` | 本轮完整深度诊断复跑结果,包含 counter、GRAPH、PXN sweep |
## 关键脚本
@ -85,6 +87,7 @@ OUT_DIR=/root/test_gpu_scripts/reports/nccl_deep_diag_plugin_check_$(date +%Y%m%
```text
/root/test_gpu_scripts/reports_multinode_nccl_handoff_plan_20260523.md
/root/test_gpu_scripts/reports_multinode_nccl_environment_gap_20260523.md
/root/test_gpu_scripts/reports_multinode_nccl_artifact_signal_analysis_20260523.md
/root/test_gpu_scripts/reports_multinode_nccl_deep_diagnose_run_20260523.md
```
@ -196,6 +199,7 @@ PXN disabled sweep 未发现有效参数:
| `reports_multinode_nccl_pdf_matrix_20260523_113803.md` | 最新带 artifacts 的正式 PDF matrix 原始报告 |
| `reports_multinode_nccl_pdf_matrix_run_20260523.md` | 最新正式 PDF matrix 中文摘要 |
| `reports_multinode_nccl_pdf_matrix_artifacts_manifest_20260523_113803.md` | 最新 artifacts manifest 和 checksum |
| `reports_multinode_nccl_artifact_signal_analysis_20260523.md` | 最新 artifacts 的 IB/GDRDMA/HCA/plugin/SHARP 信号分析 |
| `reports_multinode_nccl_counter_probe_20260523.md` | RDMA rail 和 counter 证据 |
| `reports_multinode_nccl_alltoall_tuning_20260523.md` | alltoall PXN 和参数 sweep 结论 |
| `reports_rdma_single_node_summary.md` | 单节点 RDMA/HCA 速率摘要 |