test_gpu_scripts/reports_multinode_nccl_handoff_plan_20260523.md

7.8 KiB
Raw Blame History

多节点 NCCL 交接计划 2026-05-23

当前一句话结论

当前 2 机 8 卡 NCCL 已经排除旧 NCCL、GDR disabled、HCA 选择错误、SSH/mpirun launch、明显链路错误等问题剩余差距集中在 硬件 rail 数量是否与 PDF 等价NCCL net plugin / SHARP 是否缺失、以及 alltoall 在当前跨 Leaf 网络下的图策略/交换路径效率

已经验证的事实

事实 当前证据
两台机器可用于 NCCL 的 400G IB rail 是 4 条 mlx5_0,mlx5_1,mlx5_6,mlx5_7 均为 400 Gb/sec (4X NDR)
其他 HCA 不等价 mlx5_4/5 为 100G IBmlx5_2/8 为 25G Ethernetmlx5_3/9 DOWN
NCCL 2.27.7 GDR 可用 GRAPH/NET 日志中 GDR enabled
allreduce 已接近当前 4 rail 物理上限 最新 PDF matrix 2x8 为 353.85 GB/s busbw,反推 188.72 GB/s algbw,接近 4 x 400G 的 200 GB/s 单向原始带宽
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
没看到硬错误 未见 discard、RoCE retrans、slow restart、packet sequence error 等增长
当前缺外部 NCCL 网络组件 未找到 libnccl-net*.so* / libsharp*.so*,未见 SHARP/HCOLL 包

PDF 目标与当前物理能力的冲突

PDF 2 机 16 GPU allreduce 目标是:

491.84 GB/s busbw

16 ranks allreduce 换算关系:

busbw = algbw * 1.875

因此 PDF 目标反推:

491.84 / 1.875 = 262.31 GB/s algbw

当前每节点 4 条 400G rail 的理论单向原始带宽:

4 * 400Gb/s / 8 = 200 GB/s

所以如果 PDF 环境有更多有效 400G rail或启用了 SHARP/NCCL net plugin而当前环境没有则当前节点不应直接按 PDF 2x8 目标判定。

决策树

A. 如果验收坚持 PDF 原始阈值

必须先证明当前环境与 PDF 等价:

  1. 每节点是否有 8 条 400G IB rail 可用?
  2. PDF 命令中的 HCA 在参考环境里是否全部是 400G IB ACTIVE
  3. PDF 环境是否启用了 SHARP / NCCL net plugin / HCOLL / UCX plugin
  4. 当前跨 Leaf 交换网络策略是否与 PDF 环境一致?

如果任一答案是否定或未知,应先补齐硬件/软件/网络环境再复测,不应继续靠 NCCL 小参数追 491.84/76.54 GB/s

B. 如果验收按当前硬件形态重新定标

建议把当前 2x8 allreduce 的可解释目标按 4 x 400G rail 物理能力重新评估:

  • allreduce 当前 353.85 GB/s busbw,反推 188.72 GB/s algbw,接近 200 GB/s 单向原始上限。
  • alltoall 当前 36.83 GB/s 仍偏低,需要作为独立问题继续排查。

最新 PDF matrix 结果

Topology AllReduce AllReduce Target AllToAll AllToAll Target
2 nodes x 1 GPU 47.29 48.90 24.85 27.25
2 nodes x 2 GPUs 137.16 136.93 47.76 54.41
2 nodes x 4 GPUs 335.07 335.48 72.74 73.73
2 nodes x 8 GPUs 353.85 491.84 36.83 76.54

所有 case 的 return code 为 0NCCL Out of bounds values0 OK。因此本轮 FAIL 是性能阈值失败,不是 NCCL 正确性或启动链路失败。

C. 如果要继续优化 alltoall

不要继续盲扫以下参数:

  • NCCL_IB_QPS_PER_CONNECTION
  • NCCL_IB_SPLIT_DATA_ON_QPS
  • NCCL_NCHANNELS_PER_NET_PEER
  • NCCL_BUFFSIZE
  • NCCL_P2P_NET_CHUNKSIZE
  • NCCL_IB_AR_THRESHOLD

已有 sweep 表明它们没有稳定正收益,部分明显负向。

优先做:

  1. 补齐并验证 libnccl-net.so / SHARP 环境。
  2. 让网络侧查跨 Leaf ECMP / adaptive routing / congestion control / credit wait。
  3. scripts/multinode_nccl_deep_diagnose.sh graph 对比启用 plugin 前后的 NCCL graph。
  4. 如有等价 8 rail 节点,迁移同一脚本复测,确认 allreduce 物理上限是否抬升。

给网络/硬件/环境侧的问题

请直接确认下面这些问题:

  1. 这两台机器是否本来应该有 8 条 400G IB rail如果是为什么当前只有 4 条?
  2. mlx5_4/5 当前只有 100G是配置、线缆、模块、交换机端口还是硬件限制
  3. mlx5_2/8 为什么是 Ethernet 25G是否预期不参与 IB NCCL
  4. mlx5_3/9 DOWN 是否符合预期?
  5. PDF 参考环境是否安装了 SHARP、HCOLL 或 NCCL net plugin
  6. 当前交换机是否开启 adaptive routing并且对 alltoall 这种多点到多点流量友好?
  7. 当前跨 Leaf 路径是否存在 ECMP hash 不均、PFC/credit wait、拥塞控制参数差异

后续复跑命令

轻量检查

cd /root/test_gpu_scripts
bash scripts/multinode_nccl_deep_diagnose.sh preflight

单节点环境等价性快照

cd /root/test_gpu_scripts
bash scripts/nccl_environment_snapshot.sh reports/nccl_environment_snapshot_$(hostname)_$(date +%Y%m%d_%H%M%S).md

单节点 H100 原始 all 报告

cd /root/test_gpu_scripts
bash scripts/run_h100_single_node_all.sh

多机多卡 PDF 矩阵

cd /root/test_gpu_scripts
bash scripts/run_multinode_nccl_pdf_matrix.sh

完整深度诊断

cd /root/test_gpu_scripts
OUT_DIR=/root/test_gpu_scripts/reports/nccl_deep_diag_$(date +%Y%m%d_%H%M%S) \
  bash scripts/multinode_nccl_deep_diagnose.sh all

启用新 NCCL plugin / SHARP 后的最小复核

cd /root/test_gpu_scripts
OUT_DIR=/root/test_gpu_scripts/reports/nccl_deep_diag_plugin_check_$(date +%Y%m%d_%H%M%S) \
  bash scripts/multinode_nccl_deep_diagnose.sh graph

复核重点:

  • plugin_missing 是否消失或明显减少。
  • NCCL 日志是否出现外部 net plugin。
  • alltoall graph 中 P2P/CUMEMNET/IB/*/GDRDMAchannel_edge_lines 是否变化。
  • alltoall busbw 是否突破 36-37 GB/s 平台。

关键文件

文件 用途
reports_multinode_nccl_diagnosis_20260523.md 总诊断报告
reports_multinode_nccl_pdf_matrix_20260523_112247.md 上一次多机多卡 PDF matrix 原始报告
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_deep_diagnose_run_20260523.md 本轮深度复跑结果
reports_multinode_nccl_environment_gap_20260523.md 硬件/软件环境等价性缺口
reports_multinode_nccl_counter_probe_20260523.md RDMA rail/counter 证据
reports_multinode_nccl_alltoall_tuning_20260523.md alltoall 参数 sweep 和结论
docs/multinode_nccl_deep_diagnose_runbook.md 诊断脚本 runbook
scripts/multinode_nccl_deep_diagnose.sh 可复跑诊断脚本
scripts/nccl_environment_snapshot.sh 单节点 HCA/plugin/topo 快照脚本
scripts/run_h100_single_node_all.sh 单节点原始 test all 报告入口
scripts/run_multinode_nccl_pdf_matrix.sh 多机多卡 PDF 矩阵报告入口;复跑时额外归档每个 case 的完整 cmd/stdout/stderr/json
configs/multinode_nccl_nccl227_pdf_matrix.yaml 多机多卡 PDF 矩阵配置

当前建议

当前不建议继续把精力放在 NCCL 环境变量微调上。更高价值的动作是:

  1. 确认 PDF 参考环境的 rail 数量、速率和 SHARP/plugin 状态。
  2. 补齐或明确排除 NCCL net plugin / SHARP。
  3. 让网络侧针对 alltoall 多点通信模式查跨 Leaf 路径和拥塞策略。
  4. 如果硬件不等价,调整验收阈值或换等价节点重测。