跳到主要内容

通信优化与拓扑

要解决的问题

千亿参数训练时,AllReduce / AllGather 耗时可达总步时间 30%~50% 以上。通信优化通过硬件拓扑感知、梯度压缩、计算-通信重叠、集合算法选择,在固定集群上挤出有效吞吐(tokens/s/GPU)。

核心概念

集合操作典型用途带宽敏感
AllReduceDDP 梯度
AllGatherZeRO-3 / FSDP 参数
ReduceScatterZeRO 分片梯度
AllToAllCP / MoE 路由很高

Ring AllReduce 通信量:

Datacomm=2K1Kθ\text{Data}_{\text{comm}} = 2 \frac{K-1}{K} \cdot |\theta|

KK 为参与 GPU 数。NVLink 域内带宽 >> 跨机 InfiniBand >> TCP。

α-β 模型:延迟 α\alpha + 传输量/带宽 β\beta,小消息受 α\alpha 主导,宜合并 bucket。

方法/算法

优化手段:

  1. 重叠:backward 中分层 AllReduce(DDP overlap_comm);FSDP forward_prefetch
  2. 梯度压缩:FP16 梯度、1-bit Adam(研究/谨慎);
  3. 拓扑:同机 8 卡 NVLink 全互联;跨机尽量 机内 TP、机间 DP
  4. SHARP / NCCL 调优NCCL_IB_HCANCCL_SOCKET_IFNAME 指定网卡;
  5. 消息融合:小 tensor 合并为大 bucket 减少 launch 次数。

工程实践

  • 监控torch.distributed 计时、nccl-tests all_reduce_perf、Prometheus + 集群监控。
  • 故障:挂起常因防火墙、错误 MASTER_PORT、GPU P2P 被禁。
  • 云环境:虚拟 NIC 带宽虚标,实测 tokens/s 再扩容。
  • 3.5.5 3D:PP bubble 与 comm 叠加,profile 后决定减 PP 或减 TP。

代表工作

局限与注意点

  • 压缩损精度:低 bit 梯度需与 loss spike 监控联动。
  • 多租户集群:网络争抢导致性能日波动。
  • 推理不同于训练:推理更重 KV 带宽,见 5.2
  • 法律/合规:与通信无关,但跨地域数据传输需注意数据驻留。

延伸说明

记录 NCCL_DEBUG=INFO 一次基线,排查 hang 与 slow rank。

实践检查清单

  • bucket
  • 重叠
  • IB

小结

本节核心:bucket 与全链路 重叠 协同;上线前用检查清单做回归。

多机作业前用 nccl-tests 实测 all_reduce,带宽异常节点应剔除。

相关章节