计算通信 Overlap
各并行策略 overlap 潜力差多少、临界条件是什么、实现需要哪三个前提
核心要点:
- Overlap 可行的三个必要条件
- 完全 Overlap 的临界条件 ($T_{\text{comm}} \le T_{\text{compute}}$)
- TP 关键路径阻塞 → SP 打开 Overlap 窗口的机制
- DP 反向 Bucket Overlap 为何收益最高
- 各并行策略的典型 Overlap 率与限制因素
Overlap 让通信延迟被计算时间隐藏,是大规模并行的核心优化手段。各并行策略的 Overlap 潜力差别很大:DP 最高 (0.70.95), TP 标准最低 (00.3), SP/EP 居中。
Overlap 为什么可行?
Overlap 依赖三个并发条件同时成立:
- 独立执行单元:计算核 (Tensor Core / Cube) 与 DMA 引擎 (Copy Engine / GDMA / CDMA) 是独立硬件模块,互不抢占
- 异步发起通信:软件通过异步 API 发出请求后立即返回,DMA 后台执行,计算核继续运行
- 多 Stream 并行:CUDA Stream 允许不同 Stream 上的操作在不同硬件单元同时推进,仅在数据依赖处显式同步
实现 Overlap 的三个必要前提:
- 数据依赖解耦:通信输入已就绪,通信结果不是当前计算的即时输入
- 硬件并发能力:芯片有独立 DMA 引擎,能与计算核同时工作
- 软件异步调度:通信操作提前异步发出,不阻塞等待
Overlap 节省多少时间?临界条件是什么?
统一公式:
$$\begin{equation} T_{\text{eff}} = T_{\text{compute}} + (1 - r) \cdot T_{\text{comm}} \label{eq:par-overlap-effective-latency} \end{equation}$$$r \in [0, 1]$ 是 overlap 率。三种情况:
| 场景 | 公式 | 说明 |
|---|---|---|
| 无 overlap ($r = 0$) | $T_{\text{eff}} = T_{\text{compute}} + T_{\text{comm}}$ | 串行执行,通信完全暴露 |
| 完全 overlap ($r = 1$) | $T_{\text{eff}} = T_{\text{compute}}$ | 通信被隐藏 |
| 部分 overlap | $T_{\text{eff}} = T_{\text{compute}} + (1-r) T_{\text{comm}}$ | 实际最常见 |
@tbl-overlap-01 Overlap 的理论收益
完全 overlap 的临界条件:$T_{\text{comm}} \le T_{\text{compute}}$。若通信超过计算时间,即使硬件支持并发,通信延迟仍在关键路径上:
$$\begin{equation} T_{\text{eff}} = T_{\text{comm}} + \max(0,\, T_{\text{comm}} - T_{\text{compute}}) \label{eq:par-overlap-comm-bound} \end{equation}$$计算量越大、通信量越小,overlap 收益越高。
为什么 TP 标准 AllReduce 难以 overlap?
TP AllReduce 在当前层与下一层之间的关键路径上,标准方式无法直接 overlap:
输入 X
→ [列并行 Linear W1]
→ GeLU
→ [行并行 Linear W2] 各设备产生部分积
→ AllReduce 合并部分积
→ 输出 (下一层输入)
- 当前层计算必须等 AllReduce 完成才有有效输出
- 下一层计算必须等 AllReduce 完成才能开始
数据依赖直接阻断 overlap。
SP 怎么打开 Overlap 窗口?
Megatron-LM 提出的 SP 把 AllReduce 拆成 AllGather + ReduceScatter,与 Attention/MLP 分块流水[1]:
[AllGather 输入序列分片]
│
▼ (AllGather 完成后开始计算)
[Attention / MLP 计算] ←→ [ReduceScatter 异步通信]
│
▼ (ReduceScatter 完成后, 输出分片就绪)
[LayerNorm / Dropout 在序列分片上操作]
│
▼
[AllGather 下一层输入] ←→ [下一层 Attention/MLP 计算]
关键:把权重按列分块,每算完一个 chunk 立即发起该 chunk 的 ReduceScatter,同时继续算下一个 chunk。通信和计算在时间轴上交叉推进。
详细原理见 4.1 总览。
TP Overlap 实际效果如何?
Overlap 可行性 = AllReduce 时间 / MatMul 时间,比值 < 1 时可完全 overlap。
典型分析 (BF16, $b=1$, $s=4096$, $h=7168$, TP=8):
| 量 | 典型值 |
|---|---|
| 单次 AllReduce 消息大小 | ~58.7 MB |
| NVLink 带宽 (节点内) | 400 ~ 900 GB/s |
| AllReduce 时间估算 | ~0.1 ~ 0.3 ms |
| 单层 MatMul 计算时间 (FP8) | ~0.5 ~ 2 ms |
| 比值 | 0.05 ~ 0.6 (通常可 overlap) |
@tbl-overlap-02 TP Overlap 的实际效果
TP 度越大,单设备计算分片越小,计算/通信比下降,overlap 收益减小。
PP 在哪里能 Overlap?
PP 的 P2P 与同 micro-batch 计算有强数据依赖,难以直接 overlap。两个机会窗口:
Pipeline Bubble 阶段
启动 / 排空阶段有设备空闲 (bubble), bubble 期间可以插入:
- DP 梯度 AllReduce (反向已积累完毕)
- EP AllToAll 待处理通信
- 下一个 global batch 的数据预取
Interleaved 1F1B (交错流水线)
每个 stage 切 $v$ 个 chunk, Bubble ratio 从 $\frac{p-1}{m}$ 降至 $\frac{1}{v} \cdot \frac{p-1}{m}$。chunk 间 P2P 窗口更小但更频繁,调度复杂但细粒度 overlap 机会增加。
PP P2P 通信特征
每次 stage 边界传输:
$$\begin{equation} M_{\text{PP-overlap}} = b \cdot s \cdot h \cdot \text{dtype\_size} \label{eq:par-overlap-pp-msg} \end{equation}$$与 TP AllReduce 同量级 (10~100 MB),但 P2P 仅涉及两相邻 stage,相邻 stage 同板 / 同机架内连接可压低 P2P 延迟对 bubble 的影响。
为什么 DP 的 Overlap 收益最高?
DP 是所有并行策略中 Overlap 潜力最高的:梯度 AllReduce 不阻塞当前 step 前向,且反向逐层进行,每层梯度算完即可立即发起 AllReduce,不需等所有层完成。
Bucket 机制 (PyTorch DDP)
反向传播: Layer N → Layer N-1 → ... → Layer 1
↓ 梯度就绪 ↓ 梯度就绪
AllReduce: [bucket 填满后触发] [bucket 填满后触发]
参数按通信顺序 (反向顺序) 分组到 bucket,每个 bucket 梯度满后立即 AllReduce,与后续层反向并行。这是大模型训练中最成熟的 overlap 优化。
ZeRO Stage 3 的 Overlap
ZeRO 把参数/梯度/优化器状态都分片,前向/反向动态重建:
- 前向前 AllGather (参数重建) 可以与前一层计算 overlap (Prefetch)
- 反向后 ReduceScatter (梯度归约 + 分片) 可以与后续层反向计算 overlap
ZeRO overlap 依赖精细 Prefetch 调度,通常需要框架内置支持 (DeepSpeed)。
EP 的 Overlap 在哪里?
MoE 层的 dispatch + Expert 计算 + combine 序列中,只有"Expert 计算 / combine"之间有 overlap 机会:
AllToAll (dispatch) → Expert 计算 → AllToAll (combine)
- Dispatch AllToAll 与前一层 MLP 输出有数据依赖,难 overlap
- Expert 计算与 Combine AllToAll 之间有 overlap 机会:Expert 处理完一批 token 后立即发起该批的 combine,与剩余 token 的 Expert 计算并行。需要 Expert batch 分块 (chunk)
AllToAll 消息 0.1~60 MB (远小于 DP AllReduce),通信时间短,overlap 绝对收益有限但对轻量 MoE 仍重要。
各并行策略 Overlap 率参考
核心问题:TP/SP/PP/DP/EP 五种并行策略的理论 Overlap 率上限分别是多少、各有什么前提条件?
| 并行策略 | 通信原语 | Overlap 潜力 | 典型 $r$ | 限制因素 |
|---|---|---|---|---|
| TP AllReduce (推理) | AllReduce | 低 | 0 ~ 0.3 | 关键路径,强数据依赖 |
| TP AllReduce (训练) | AllReduce | 中 | 0.3 ~ 0.7 | 反向可部分 overlap |
| SP AG + RS | AllGather + ReduceScatter | 高 | 0.7 ~ 0.9 | 需分块计算支持 |
| PP P2P | P2P Send/Recv | 中 | 0.3 ~ 0.6 | bubble 窗口有限 |
| DP AllReduce | AllReduce | 高 | 0.7 ~ 0.95 | bucket 大小设置 |
| EP AllToAll | AllToAll | 中 | 0.3 ~ 0.6 | Expert batch 需分块 |
@tbl-overlap-03 各并行策略的 Overlap 率参考
硬件能力如何影响 Overlap?
硬件并发能力决定 overlap 的上限:
| 指标 | 对 Overlap 的影响 |
|---|---|
| DMA 引擎数量 | 引擎越多,可同时处理的通信请求越多 |
| DMA 引擎峰值带宽 | 决定通信时间上限,影响 $T_{\text{comm}} / T_{\text{compute}}$ |
| NVLink / C2C 带宽 | 节点内高带宽可减小 $T_{\text{comm}}$,提升 overlap 可行性 |
| RDMA 支持 | 节点间通信通过 NIC DMA,不占用计算核资源 |
| 多 Stream 支持 | 软件并发发起多通信,需硬件并发 DMA |
@tbl-overlap-04 关键硬件指标
典型多引擎芯片 (如 SG2262 配置 GDMA / SDMA / 4× CDMA):CDMA 专用跨芯片通信,4 个引擎可并发处理不同方向的通信流,overlap 率 (compute_dma_overlap_rate) 在 typical workload 上可达 ~0.8,即通信时间 20% 暴露在关键路径上。实际值需 benchmark 标定,随负载类型 (计算密集 vs 访存密集) 与消息大小变化。
各并行策略 Overlap 能力总览
核心问题:一张表汇总五种并行策略的 Overlap 可行性、收益、前提条件和典型实现?
| 并行策略 | Overlap 机制 | 工程实现难度 | 推理收益 | 训练收益 |
|---|---|---|---|---|
| TP (标准) | 无 (关键路径阻塞) | — | 无 | 低 |
| TP + SP | AG / RS 与 Attention/MLP 分块流水 | 高 | 中 | 高 |
| PP (1F1B) | Bubble 期间插入其他通信 | 中 | 低 | 中 |
| PP (Interleaved) | 细粒度 chunk 间通信流水 | 高 | 中 | 高 |
| DP | Bucket 级 AllReduce 与反向流水 | 低 (框架内置) | 无 | 高 |
| EP | Expert batch 分块,combine 与计算流水 | 高 | 中 | 高 |
| ZeRO Stage 3 | Prefetch AllGather + 分块 ReduceScatter | 高 (需框架) | 无 | 高 |
@tbl-overlap-05 各并行策略的 Overlap 能力对比
推理与训练的 Overlap 机会差异
Overlap 收益在推理与训练上呈现完全不同的形态,根因是两者的工作负载和通信构成不同:
| 维度 | 推理 | 训练 |
|---|---|---|
| 主要通信 | TP AllReduce + EP AllToAll | DP AllReduce + TP AllReduce + EP AllToAll |
| DP 通信 | 无 (各副本独立处理请求) | 梯度 AllReduce (最大通信量) |
| 通信/计算比 | 高 (小 batch,计算量少) | 低 (大 batch,计算量大) |
| Overlap 机会 | 少 (前向无 Bucket 可掩盖) | 多 (反向可重叠梯度同步) |
| 延迟敏感性 | 极高 (直接影响 TTFT / TPOT) | 中等 (影响总训练时间) |
@tbl-overlap-train-infer 推理与训练的通信特征对比
关键非对称:推理只有前向,缺少最容易 overlap 的反向梯度 AllReduce,因此 DP overlap 收益最高这一结论只在训练成立;推理场景下 overlap 主要靠 SP 拆 AllReduce + EP combine 分块。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| Overlap 三前提 | 数据依赖解耦 + 硬件并发 + 软件异步 |
| 临界条件 | $T_{\text{comm}} \le T_{\text{compute}}$ 才能完全 overlap |
| TP 标准 | 关键路径阻塞,难 overlap |
| SP 收益 | 拆 AllReduce 为 AG + RS,与 chunked 计算流水 |
| DP 收益最高 | 反向逐层 Bucket AllReduce, $r$ 可达 0.95 |
| PP overlap | 在 bubble 期,或 Interleaved chunk 间 |
| EP overlap | combine 与 Expert 计算分块流水 |
| 硬件依赖 | 独立 DMA 引擎 + 多 Stream 是基础 |
@tbl-overlap-06 Overlap 核心知识点
参考资料
- Korthikanti et al., Reducing Activation Recomputation in Large Transformer Models, MLSys 2023. https://arxiv.org/abs/2205.05198