千卡训练的网络拓扑:从 Fat-Tree 到 Dragonfly+
AllReduce 阶段的尾延迟为何随集群规模呈非线性增长?基于 NCCL 拓扑感知重写,我们把 1024 卡集群的训练效率从 71% 提到 89%。
问题
客户做 100B 参数级别的全量预训练,用 1024 张 H100 跑 Megatron-LM,DP=8 / TP=4 / PP=32。初次上线时 MFU(model flops utilization)只有 71%,远低于宣传的 ~85%。profiler 显示 25% 时间花在 AllReduce,且尾延迟 P99 是 P50 的 4 倍。
初步定位
集群是经典 Fat-Tree——上联收敛 1:1,理论上无阻塞。但 NCCL 默认拓扑探测把 32 卡的 pipeline group 直接放到了一个 spine 下,AllReduce 跨 spine 频繁,命中尾延迟。
方案一:拓扑感知 NCCL
手写 NCCL_TOPO_FILE,把 DP / TP / PP 三层映射到 leaf / spine / superspine。NCCL 自动选 ring 内不跨 spine、ring 间分流,AllReduce 时延降到原来的 60%。
- MFU:71% → 82%
- 尾延迟 P99/P50:4× → 1.6×
方案二:上 Dragonfly+
继续往 89% 走,光靠 Fat-Tree 不够——再加一层 MPLS 也撑不住 4096+ 卡。九章新建的 IB 集群直接上 Dragonfly+:每个 group 内 24 个 leaf,全互联;group 间通过 high-radix all-to-all。32-pipeline group 全部落进同一个 Dragonfly group:
- MFU:82% → 89%
- 线缆减少 40%,机房成本下降明显
结论
千卡及以上规模,网络拓扑直接决定训练效率。建议训练任务上线前:
- 压测 AllReduce 尾延迟,对比 P99/P50 比值
- 用
NCCL_TOPO_FILE显式约束 - 规划期就把 Dragonfly+ 列入选型,不要等 Fat-Tree 扩到极限
九章 HyperTrain 平台默认开启拓扑感知调度,一键把同 pipeline 组放进同 leaf。
最后更新于
这篇文档对你有帮助吗?
