test_gpu_scripts/reports_multinode_nccl_alltoall_tuning_20260523.md
2026-05-26 00:12:55 +08:00

8.5 KiB
Raw Blame History

多机 NCCL 8 卡 alltoall 网络参数 sweep

  • 日期2026-05-23
  • 主机:aikubeworker0012 / 172.72.8.12aikubeworker0016 / 172.72.8.16
  • NCCL临时 2.27.7+cuda12.4
  • 测试2 nodes x 8 GPUsalltoall_perf -b 16G -e 16G
  • HCAmlx5_0,mlx5_1,mlx5_6,mlx5_7

结论

NCCL_PXN_DISABLE=1 是本轮唯一有效正向参数,可以把 8 卡 alltoall 从约 30.06 GB/s 提升到约 37.24 GB/s。纳入正式 PDF 矩阵配置后8 卡 alltoall 原始报告结果为 36.70 GB/s peak / 36.74 GB/s avg

补充计数器探测显示,NCCL_PXN_DISABLE=1 的实际作用是把 alltoall 流量重新均匀分配到 4 条 400G rail 上。baseline 下 mlx5_0/6mlx5_1/7 的流量约为 3:1禁用 PXN 后四条 HCA 均衡。但每条 rail 的实际吞吐仍只有约 19-20 GB/s,没有打满 400G rail。

复测错误/拥塞 counter 后,没有看到 discard、链路错误、RoCE 重传、slow restart 或 packet sequence error 增长;主要非零异常是部分端口 port_xmit_wait。不过 allreduce 对照在 354 GB/s busbw 时也会出现同类 port_xmit_wait,所以当前不支持“链路坏包/重传导致慢”的判断,也不能只用 port_xmit_wait 解释 alltoall 低吞吐。更可能的方向是 NCCL internal alltoall 通信模式效率、交换侧调度/拥塞控制,或缺少 NCCL net plugin/SHARP。

这个提升有实际价值,但仍远低于 PDF 参考 76.54 GB/s。在 NCCL_PXN_DISABLE=1 之前做过一轮参数 sweep其他参数没有改善部分明显变差

Case Avg Bus BW 结论
baseline 30.0633 GB/s 基线
NCCL_PXN_DISABLE=1 37.2421 GB/s 有效提升
NCCL_P2P_PXN_LEVEL=0 20.1205 GB/s 明显变差
NCCL_P2P_PXN_LEVEL=1 30.0588 GB/s 无改善
NCCL_P2P_PXN_LEVEL=2 30.0437 GB/s 无改善
NCCL_NET_SHARED_COMMS=0 27.3889 GB/s 变差
NCCL_NET_SHARED_BUFFERS=0 28.2389 GB/s 变差
NCCL_NET_SHARED_COMMS=0 NCCL_NET_SHARED_BUFFERS=0 28.2279 GB/s 变差
NCCL_NCHANNELS_PER_NET_PEER=2 30.0281 GB/s 无改善
NCCL_NCHANNELS_PER_NET_PEER=4 29.9802 GB/s 无改善
NCCL_IB_ADAPTIVE_ROUTING=1 NCCL_IB_AR_THRESHOLD=0 30.0526 GB/s 无改善
NCCL_IB_ADAPTIVE_ROUTING=0 30.0535 GB/s 无改善
NCCL_IB_PCI_RELAXED_ORDERING=0 未完成 明显异常,不建议

NCCL_PXN_DISABLE=1 作为基线后又补跑了一轮叠加参数 sweep。短测窗口里 NVLS_ENABLE=0P2P_NET_CHUNKSIZE=4M 有小幅波动式提升,但更长 -w 10 -n 10 复测没有复现,不能作为稳定优化项。

Case Avg Bus BW 结论
NCCL_PXN_DISABLE=1 37.0069 GB/s 短测基线
+ NCCL_NVLS_ENABLE=0 37.2217 GB/s 小幅波动,不稳定
+ NCCL_P2P_NET_CHUNKSIZE=4194304 37.2522 GB/s 小幅波动,不稳定
+ NCCL_BUFFSIZE=8388608 37.0911 GB/s 无实质改善
+ NCCL_MIN_NCHANNELS=16 NCCL_MAX_NCHANNELS=16 37.0189 GB/s 无实质改善
+ NCCL_IB_AR_THRESHOLD=0 37.0843 GB/s 无实质改善
+ NCCL_IB_QPS_PER_CONNECTION=4 NCCL_IB_SPLIT_DATA_ON_QPS=0 35.9847 GB/s 变差
+ NCCL_IB_QPS_PER_CONNECTION=4 NCCL_IB_SPLIT_DATA_ON_QPS=1 29.8406 GB/s 明显变差
+ NCCL_IB_QPS_PER_CONNECTION=8 NCCL_IB_SPLIT_DATA_ON_QPS=1 24.1183 GB/s 明显变差
+ NCCL_NCHANNELS_PER_NET_PEER=8 29.8904 GB/s 明显变差

长测复核:

Case Avg Bus BW 结论
NCCL_PXN_DISABLE=1 32.7280 GB/s 当前窗口基线下滑
+ NCCL_P2P_NET_CHUNKSIZE=4194304 31.9340 GB/s 未复现短测提升
+ NCCL_NVLS_ENABLE=0 NCCL_P2P_NET_CHUNKSIZE=4194304 27.6585 GB/s 明显变差

补充 ENV/INIT/NET 日志确认,性能波动时仍是 NCCL 2.27.7+cuda12.4、4 条 400G HCA、GDR enabled、internal IB plugin不是退回旧 NCCL、HCA 选择错误或 GDR 失效。

NCCL GRAPH/TUNING 对照

为避免只看带宽结果,补抓了 allreduce 与 PXN disabled alltoall 的 NCCL_DEBUG_SUBSYS=INIT,NET,GRAPH,TUNING,COLL 日志。该日志采样使用短迭代,只用于看 NCCL 图和通道选择,不作为性能结论。

共同点:

观察项 allreduce alltoall + NCCL_PXN_DISABLE=1
NCCL version 2.27.7+cuda12.4 2.27.7+cuda12.4
HCA mlx5_0,mlx5_1,mlx5_6,mlx5_7 mlx5_0,mlx5_1,mlx5_6,mlx5_7
GDR enabled enabled
external net plugin missing, internal IB missing, internal IB
channels 16 coll / 16 nvls / 16 p2p 16 coll / 16 nvls / 16 p2p
p2p channels per peer 2 2
P2P chunk 131072 131072

差异:

观察项 allreduce alltoall + NCCL_PXN_DISABLE=1
Pattern 4 crossNic 0, type NVL/PXN, nChannels 8 crossNic 2, type NVL/PIX, nChannels 8
NET/IB/*/GDRDMA channel edge lines 256 512
P2P/CUMEM channel edge lines 0 224
total NET/P2P channel edge lines 256 736

判断PXN disabled 后 4 条 IB/GDRDMA rail 都仍被使用,且通道数没有少;但 alltoall 的 NCCL graph 明显更复杂,并混入大量本机 P2P/CUMEM 路径。这个结果进一步支持:剩余差距不是 HCA/GDR 基础环境没有生效,而是 alltoall collective graph、P2P/NET 组合方式、internal IB plugin 能力或交换网络策略的问题。

PXN disabled 端口计数器

NCCL_PXN_DISABLE=18 卡 alltoall 输出:

Metric Value
algbw 39.37 / 39.46 GB/s
busbw 36.91 / 37.00 GB/s
Avg bus bandwidth 36.9518 GB/s

端口计数器:

Host HCA Xmit GB Recv GB Xmit GB/s Recv GB/s
172.72.8.12 mlx5_0 590.98 590.91 19.82 19.82
172.72.8.12 mlx5_1 590.98 590.98 19.82 19.82
172.72.8.12 mlx5_6 590.98 590.90 19.82 19.82
172.72.8.12 mlx5_7 590.98 590.98 19.82 19.82
172.72.8.16 mlx5_0 590.94 590.98 19.82 19.82
172.72.8.16 mlx5_1 590.94 590.98 19.82 19.82
172.72.8.16 mlx5_6 590.94 590.98 19.82 19.82
172.72.8.16 mlx5_7 590.94 590.98 19.82 19.82

对比 baseline

Case Rail 分布 Avg Bus BW
baseline mlx5_0/6885 GBmlx5_1/7295 GB 30.04 GB/s
NCCL_PXN_DISABLE=1 四条 HCA 均约 591 GB 36.95 GB/s

错误/等待 counter 复测

PXN disabled 复测结果:

观察项 结果
Avg bus bandwidth 36.4512 GB/s
每条 HCA 流量 712.18-712.28 GiB,四条 rail 均衡
discard / rcv error / symbol error / link down / link recovery 0 增量
RoCE retrans / slow restart / packet sequence error / out of sequence 0 增量
port_xmit_wait mlx5_1mlx5_7 有增长,约 15.65M-23.49M

allreduce 对照:

观察项 结果
Avg bus bandwidth 354.366 GB/s
每条 HCA 流量 178.03-178.07 GiB,四条 rail 均衡
错误/重传类 counter 0 增量
port_xmit_wait mlx5_1mlx5_7 有增长,约 6.11M-6.59M

正式配置更新

configs/multinode_nccl_nccl227_pdf_matrix.yaml 已对 2 nodes x 8 GPUs 的 alltoall 增加:

op_env:
  alltoall:
    NCCL_PXN_DISABLE: 1

正式矩阵报告:reports_multinode_nccl_pdf_matrix_nccl227.md

Topology alltoall Peak Bus BW alltoall Avg Bus BW PDF Reference Status
2 nodes x 8 GPUs 36.70 GB/s 36.74 GB/s 76.54 GB/s FAIL

判断

  1. PXN 在当前拓扑下对 8 卡 alltoall 有负面影响,禁用后有约 22-24% 提升。
  2. 禁用 PXN 可以修复 rail 分布不均衡,但无法打满每条 400G rail。
  3. PXN disabled 基线上继续叠加 NVLS、P2P chunk、buffer、channel、QP/split、AR 等参数没有稳定收益QP/split 和 NCCL_NCHANNELS_PER_NET_PEER=8 反而明显变差。
  4. 禁用 PXN 后仍只有 PDF 目标的一半左右,剩余差距不是单一 NCCL 环境变量可以补齐。
  5. 后续重点仍应放在 NCCL net plugin/SHARP、交换网络策略和 NCCL internal alltoall 实现效率;port_xmit_wait 需要结合 allreduce 对照解读,不能单独作为 alltoall 根因。