diff --git a/reports_multinode_nccl_artifact_signal_analysis_20260523.md b/reports_multinode_nccl_artifact_signal_analysis_20260523.md new file mode 100644 index 0000000..1d8bc64 --- /dev/null +++ b/reports_multinode_nccl_artifact_signal_analysis_20260523.md @@ -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 rail,NCCL 正确性 `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` 平台。 diff --git a/reports_multinode_nccl_handoff_plan_20260523.md b/reports_multinode_nccl_handoff_plan_20260523.md index 2393c25..e91ff01 100644 --- a/reports_multinode_nccl_handoff_plan_20260523.md +++ b/reports_multinode_nccl_handoff_plan_20260523.md @@ -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 证据 | diff --git a/reports_multinode_nccl_latest_index_20260523.md b/reports_multinode_nccl_latest_index_20260523.md index 3864273..2ff15e1 100644 --- a/reports_multinode_nccl_latest_index_20260523.md +++ b/reports_multinode_nccl_latest_index_20260523.md @@ -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 速率摘要 |