Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 8

基于 α-β 模型估算集合通信时间

Recommended resources

你好。本模块开始进入分布式训练的通信模型。对 5T MoE 强化学习训练框架而言,集合通信不是一个“库调用细节”:它直接决定并行维度能否扩展、专家并行能否落地,以及新 ASIC 的互联和通信库还缺哪些能力。

这一课建立一个足够实用的第一版性能模型:用 - 模型估算点对点通信,以及 AllReduce、AllGather、ReduceScatter 和 All-to-All 的时间;再把均匀拓扑上的公式转换为面对真实、分层且可能低带宽互联时的判断方法。学完后,你应当能把一次“通信很慢”的描述拆成:是启动延迟、有效带宽、拓扑瓶颈、算法选择,还是通信竞争造成的。


1. 从一条消息开始:- 模型

设一个设备向另一个设备发送 字节,最基本的通信时间模型为:

其中:

  • :每次消息启动成本,单位通常是秒或微秒。它综合反映运行时调度、同步、DMA 启动、网络协议和链路传播等固定成本。
  • :每字节传输时间,单位为秒每字节。
  • :有效带宽,单位为字节每秒。

所以也常写成:

这是一种端到端的抽象模型,不是芯片规格表的直接翻译。ASIC 宣称某链路带宽为 ,不代表训练进程真的能以它传输。实际有效带宽还会受到以下因素影响:

  • 设备到 NIC 的路径是否经过共享交换结构;
  • 多条通信流是否竞争同一条链路;
  • DMA、通信内核和运行时是否充分并发;
  • 数据是否需要额外打包、转置或中转;
  • 消息是否过小,导致 主导;
  • 是否同时发送和接收,以及链路是否全双工。

因此,在工程决策中,更可靠的量是针对具体通信组、具体消息尺寸、具体 collective测得的 和 。

两个极端帮助建立直觉:

这是延迟受限:减少通信轮数往往比提升峰值带宽更有效。

这是带宽受限:应关注链路利用率、分片、拓扑放置与通信计算重叠。

临界消息大小为:

例如 、 时,临界大小约为 。远大于这个量级的梯度分片或 MoE token 缓冲区,通常主要受带宽制约;小控制消息、很细的通信 bucket 或短序列下的小张量,则可能被延迟吞噬。



2. 五种通信操作:先明确“每个 rank 最后拿到什么”

设通信组有 个 rank。必须先定义 的含义,否则公式很容易被误用。

这里采用大消息、带宽优化实现中常用的约定:

  • 对 AllGather、AllReduce、All-to-All, 是每个 rank 的输出张量大小。
  • 对 ReduceScatter, 是每个 rank 的输入张量大小。
  • 对 P2P, 是这条消息的大小。
操作 每个 rank 的初始数据 每个 rank 的最终数据 是否执行规约
P2P 一个待发送缓冲区 对端得到同样的数据 否
AllGather 一个 大小分片 拼接后的 大小完整张量 否
ReduceScatter 一个 大小完整张量 规约后属于自己的 分片 是
AllReduce 一个 大小完整张量 规约后的 大小完整张量 是
All-to-All 一个 大小输入,按目的 rank 切分 从每个 peer 接收一段,合成 大小输出 否

注意:All-to-All 的输出大小保持为 ,不代表它等价于“简单复制”。每个 rank 需要和多个 peer 交换不同的数据片段,这一通信模式对拓扑和并发能力尤其敏感。

下面先用带宽优化的长消息模型。它是很有用的起点,但并不是所有通信库、所有消息尺寸和所有拓扑上的唯一公式。

操作 时间近似 主要含义
P2P 一次消息启动加上传输时间
AllGather 轮交换,累计移动接近一个完整输出张量
ReduceScatter 同样有 轮;每轮还做局部规约
AllReduce ReduceScatter 加 AllGather
All-to-All 面向不同 peer 的 轮交换,传输约一个本地张量量级

AllReduce 的模型可以写成:

这不是巧合,而是一个重要的实现结构:先把分片逐步规约到正确的 rank,再把规约好的分片传回所有 rank。

图中展示 4 个 GPU 的环形 ReduceScatter 与 AllGather:上半部分逐步传递并累加分片,使每个 GPU 留下一个规约结果;下半部分再环形传递这些结果分片,使所有 GPU 重建完整结果。这两段组合构成了常见环形 AllReduce 的核心。

在这张图中,ReduceScatter 的关键不是“每张卡最终数据更少”这么简单,而是:它把完整梯度的规约工作与分片保存结合起来。随后 AllGather 把已经正确规约的各分片重新拼成完整梯度。后续学习 FSDP/ZeRO 时,这正是理解“梯度分片”和“参数物化”通信代价的基础。

AutoDDL: Automatic Distributed Deep Learning with Near- ...

阅读论文的第 3.1 和 3.2 节。第 3.1 节给出本课使用的长消息集合通信复杂度;第 3.2 节说明为什么不能直接相信硬件标称带宽,而应通过实测拟合模型参数。

先阅读第 3.1 节 “Collective Performance based on the Alpha-Beta Model”,从 模型定义到表 2 的算法假设。重点核对 n 在不同 collective 中代表输入还是输出大小,并观察 AllReduce 相比 ReduceScatter 或 AllGather 多出的通信阶段。 接着阅读第 3.2 节 “Inferring Network Parameters on Real World Systems”,从 实测拟合方法。关注其测量多个消息大小和进程数、重复测量、再用最小二乘估计参数的流程;这将成为新 ASIC 通信验收的基本方法。



3. 手算一次:8 卡通信组上的时间量级

假设一个 8 卡通信组的实测有效参数为:

因此:

现在考虑 的通信张量。纯带宽传输一个完整张量所需时间为:

P2P

这里延迟只占很小一部分。

AllGather 或 ReduceScatter

虽然每个 rank 最后会拥有 的 AllGather 输出,但环形传输把数据拆分为 8 份,每个 rank 的累计传输量接近 个完整张量。

AllReduce

它接近 ReduceScatter 和 AllGather 的两倍,因为它确实包含两个阶段。

All-to-All

这个数字很容易让人误判:从带宽项看,All-to-All 似乎只比 P2P 多一点启动延迟;但在真实 MoE 路由里,它常常远比这个理想值糟糕。原因不在公式本身,而在公式默认了:

  1. 各 peer 的数据量大致均匀;
  2. 端点可以高并发地发送和接收;
  3. 路径没有严重竞争;
  4. 每轮通信都能接近有效带宽;
  5. 不存在额外的 token 重排、padding、打包和同步开销。

MoE 的路由分布、固定长度 whole-group All-to-All 限制,以及跨机链路的争用,都会逐项破坏这些假设。后续会专门分析这种偏差;本课先建立理想下界和可测基线。



4. 公式并不脱离拓扑: 与 必须属于一条具体路径

对新 ASIC 平台,不能只问“带宽是多少”,而要为候选通信组定义其通信路径。至少应区分:

候选通信域 常见路径特征 应单独测量的参数
单机、同一高速互联域 低延迟、高带宽,可能多路径并行 、
单机、跨交换域或共享总线 可能发生局部拥塞或中转 、
跨机、同一网络平面 受 NIC、RDMA 和交换网络限制 、
跨机且共享上行/超售链路 非均匀、竞争明显 在并发负载下的

假设一台机器内 8 卡的有效带宽为 ,跨机有效带宽仅为 。若你把通信组从单机 8 卡扩成两机 16 卡,并直接把一个扁平 ring 放到跨机路径上,那么用于初算的保守带宽不应仍取 ,而应接近跨机瓶颈:

对于大消息,带宽项会约扩大四倍。即使总设备数增加,通信时间也可能吃掉新增算力带来的收益。

这也是为什么“设备数量翻倍,吞吐应翻倍”在分布式训练中通常不成立。计算工作被更多设备分摊,而一次 AllReduce 的总带宽代价并不会按同样比例消失;All-to-All 更可能因端点数和跨域流量增加而恶化。

NCCL: High-Speed Inter-GPU Communication for Large-Scale Training - Sylvain Jeaugey, NVIDIA

观看 Sylvain Jeaugey 在 Coding Workflows 的演讲 “NCCL: High-Speed Inter-GPU Communication for Large-Scale Training” 中关于拓扑发现、环与树算法的一段。它将“公式里的带宽”放回真实设备、NIC 和交换网络组成的路径中理解。

在该视频的拓扑与算法部分,先看 拓扑建模:关注通信库为何要发现 GPU、交换结构和 NIC 的连接关系,以及机内互联如何影响跨机 NIC 带宽能否被聚合。然后看 环与树:重点比较 ring 的线性延迟增长与 tree 的对数级延迟特征,并把它与“消息大小决定算法选择”的判断联系起来。



5. Ring、Tree 与 Pairwise Exchange:公式背后有算法假设

同一个 collective 没有唯一时间公式,因为通信库可以选择不同算法。

Ring:带宽友好,但启动轮数随规模线性增长

环形算法中,每个 rank 通常只与相邻 rank 交换。对大消息,它能稳定地让链路持续传输,因此带宽项接近理想;但它需要大约 个通信轮次。

因此,ring 的特点可以概括为:

适合大张量、较稳定的拓扑和可充分流水化的传输。

Tree 或递归倍增:延迟友好,但带宽常数不同

使用递归倍增的 AllGather,其典型形式为:

对于较小消息, 通常优于 。例如 时:

如果消息很小,63 次启动与 6 次启动的差异可能远大于数据搬运量差异。

但不能由此简单宣布 tree 永远更好。大消息场景中,ring 常能通过稳定流水和全链路利用获得更高有效带宽。实际通信库通常会依据消息大小、通信组规模和拓扑,在 ring、tree 或其他变体间选择。

Pairwise Exchange:All-to-All 的常见思路

All-to-All 常以“每轮与一个不同 peer 通信”的 pairwise exchange 实现。它天然需要多个 peer 之间的交叉流量,因此其延迟项通常为:

对于均匀 All-to-All,每个 rank 向每个 peer 发送约 数据。理想公式中的带宽项为 ,表示每个 rank 总共需要注入或接收大约一个完整本地张量量级的数据。

但若很多 rank 的流量同时跨越同一台机器的 NIC 或同一条交换机上行链路,真正的瓶颈是割边带宽,而不是单个点到点链路带宽。一个必须检查的下界是:

其中:

  • :必须穿过某个机器边界、网络平面或交换机割边的总数据量;
  • :该割边在实际并发条件下可提供的聚合带宽。

这个下界对 MoE 专家并行特别重要。即使每块 ASIC 的单链路带宽不错,只要专家放置导致大量 token 跨机交换,而每台机器的 NIC 总带宽不足,All-to-All 就会被网络割边锁死。



6. 分层拓扑上的估算:不要把“峰值链路”当成“collective 带宽”

考虑 个设备,其中:

  • 每台机器有 个设备;
  • 一共有 台机器;
  • 机内与跨机互联的 明显不同。

对 AllReduce,一个常见的分层方案可以近似拆为:

  1. 每台机器内 ReduceScatter;
  2. 对每个分片在跨机组中 AllReduce;
  3. 每台机器内 AllGather。

其估算形式为:

这个式子的价值不在于它对每个通信库实现都精确,而在于它迫使你回答三个架构问题:

  1. 跨机阶段传的是多大的数据?
    分片后跨机传输的是 ,而不是每次都传完整 。

  2. 最慢链路发生在哪个阶段?
    机内阶段通常拥有更高带宽;跨机阶段则是更可能的瓶颈。

  3. 通信库是否真的实现了这个分层路径?
    若没有,扁平通信可能让机内和跨机路径混在一起,导致跨机瓶颈放大。

对于 AllGather、ReduceScatter 和 All-to-All,也可以按“机内阶段 + 跨机阶段 + 机内阶段”去分解,但必须依据实际数据布局和通信调度定义每一步的输入大小。不能机械地把某个 AllReduce 公式套上去。

特别是 All-to-All:其层次化实现往往需要先把“发往同一远端机器的数据”重组,再跨机发送,再在目的机器内分发。这样能减少跨机消息数量、提高 NIC 利用率,却可能引入额外的重排缓冲区、同步和机内通信。它是性能、内存和实现复杂度之间的交换,而不是免费优化。



7. 用模型服务架构决策:一张最小估算表

在平台拓扑尚未完全明确时,可先维护一张“假设可替换”的估算表。下面是适合当前阶段的模板。

项目 需要填入的量 目的
通信组大小 ,以及机内 、机器数 区分扁平与分层方案
张量语义 是输入、输出还是每 peer 分片 避免公式量纲正确但语义错误
数据类型 BF16、FP8 或其他 将元素数转换为字节数
小消息参数 判断控制面、细粒度 bucket 和小张量影响
大消息带宽 估算梯度、参数、token 缓冲区等主流量
并发条件 单 collective / 多组并发 / 训练计算并发 测试链路争用和可重叠性
路径位置 机内、跨机、跨交换域 暴露真正的慢链路
算法与实现 ring、tree、pairwise、分层 避免把算法差异误判为硬件差异

建议将预测写为区间,而不是单点:

其中乐观值使用独占带宽和理想均衡,保守值使用并发压力下的有效带宽、较高的启动成本,并显式加入必要的数据重排和同步开销。对新 ASIC 平台,这比基于标称带宽给出一个“精确到小数点后两位”的数字更可信。

最终,你要向集合通信库和运行时团队提出的不是笼统的“提升 All-to-All 性能”,而是可以验证的需求,例如:

  • 在 的通信组上,分别测量 P2P、AllReduce、AllGather、ReduceScatter、All-to-All;
  • 覆盖从延迟主导到带宽主导的一组消息大小;
  • 分开测量机内、跨机、分层和多通信组并发;
  • 报告算法、实际路径、bus bandwidth、端到端延迟及尾部延迟;
  • 用拟合后的 预测端到端训练通信时间,并用 trace 验证误差。


小结

本课的核心结论是:

  • 点对点通信的基本模型是

    描述每条消息的启动成本, 是每字节时间, 是有效带宽。

  • 对大消息的初步估算中,AllGather 和 ReduceScatter 约为

    AllReduce 可理解为二者串联;All-to-All 的理想带宽项约为一个本地张量,但它对拓扑竞争和负载不均高度敏感。

  • collective 的公式取决于算法。ring 通常偏带宽优化,tree/递归算法常降低小消息延迟;不能脱离消息大小与拓扑谈“哪个更快”。

  • 在真实新 ASIC 上,应该拟合并使用实测有效参数,而不是用标称带宽替代 。对跨机、共享链路和并发 collective,还必须检查网络割边带宽。

下一课将把通信模型放回训练迭代本身:分析数据并行如何复制模型、同步梯度、改变全局批量大小,以及它为什么在规模扩大时首先暴露 AllReduce 的成本。