跳到主要内容

不规则与流水化 AllToAll

稀疏 MoE 场景下 Wave Scheduling 如何应对不规则发送与长尾延迟

核心要点

  • 经典 AllToAll 假设规则 $N \times N$ 同尺寸方阵,稀疏 MoE / V4 EP 取消该假设
  • 发送矩阵数据相关、稀疏、长尾,p95 link 数据量可达均值 2×+
  • Wave-scheduled 把单次 a2a 切 $W$ 个 wave 与 compute / combine 流水,最优 $W^* = \sqrt{M / (\alpha \beta)}$
  • 长尾延迟 → adaptive routing + 拥塞控制从"可选"变"必选"
  • 上游耦合 distributed top-k,下游耦合 expert compute / combine

经典 AllToAll 见 4.9 AllToAll。本节讨论取消静态 routing 约束后的稀疏 / wave-scheduled AllToAll。

经典 vs 不规则

核心问题:不规则与经典 a2a 差异在哪,为什么经典优化路径不能直接用?

维度经典 (dense)不规则 (sparse)
发送矩阵每对 $(i, j)$ 大小 $m$ 相同每对不同,可为 0
决定时机静态可知运行时由 routing 决定
典型场景经典 MoE (固定路由约束)DeepSeek V4 EP (无 routing target 约束)
库接口MPI_Alltoall / ncclAllToAllMPI_Alltoallv / 自定义 sparse send list
Link 利用均衡长尾,部分 link 瞬时拥塞
拥塞控制低需求高需求

@tbl-cc-sparse-a2a-vs-dense 经典 vs 不规则 AllToAll

EP 不规则 a2a 的来源

核心问题:MoE 中什么时候 a2a 会变不规则?

受约束情形 (V3 风格)

V3 强制每 token top-k expert 分布在固定 $k_{\text{node}} = 4$ 节点:

  • 每 token 命中节点数固定 → 发送矩阵接近均衡
  • Dispatch pattern 静态可规划
  • 代价:路由不自由,选不到真正最相关 expert

无约束情形 (V4 风格)

V4 取消 routing target node 约束,每 token 真自由选 top-k of $E$:

  • 命中节点集是数据相关 sparse subset
  • 发送矩阵稀疏,行 / 列长尾分布 (热门 expert 集中少数 node)
  • 库必须 Alltoallv 风格,传完整 send-count / recv-count 矩阵

长尾延迟问题

Batch 充分大时热门 expert 让某 link 瞬时数据量远超均值。设每 token 命中节点 $j$ 概率 $p_j$,多项分布正态近似下 95-th percentile link 数据量:

$$\begin{equation} m_{\text{p95}} \approx m_{\text{avg}} \cdot \left( 1 + 1.645 \sqrt{\frac{1}{B \bar{p}}} \right) \label{eq:cc-sparse-a2a-p95} \end{equation}$$

$\bar{p} = 1 / N$ 均匀路由期望,1.645 是标准正态 95% 分位数。多项分布 $\mathrm{Multinomial}(B, \bar{p})$ 单格方差 $\sigma^2 = B \bar{p} (1 - \bar{p}) \approx B \bar{p}$, p95 = mean + 1.645σ。

$B \bar{p} < 10$ (小 batch 或路由严重倾斜) 时正态近似失效,实际长尾更严重,p95 可达均值 2×+。同步式 a2a 关键路径由最慢 link 决定

Wave-Scheduled 流水化

核心问题:同步等所有 token dispatch 完才算太慢,能否流水?

调度模式

Expert 分 $W$ 个 wave,每 wave $E / W$, DeepSeek V4 MegaMoE:

时间 →
Wave 1: dispatch ──→ compute ──→ combine ──→
Wave 2: dispatch ──→ compute ──→ combine ──→
Wave 3: dispatch ──→ compute ──→ combine ──→

理想下 wave 间错开"dispatch 延迟"相位,加速比相对 naive 串行接近 $W / (W + 2)$

Wave 数与消息粒度

$W$单 wave 通信量Overlap网络要求
1 (无 wave)$M$大消息带宽
4$M / 4$中等消息延迟
8$M / 8$小消息低延迟
16+$M / 16$ 以下高,收益递减极低启动延迟

@tbl-cc-sparse-a2a-wave Wave 数与网络要求

$W$ 增大单消息变小,$\alpha$ 项占比上升,是 RDMA verbs / NVSHMEM 小消息性能拐点。

最优 wave 数

端到端时间:

$$\begin{equation} T(W) \approx W \alpha + \frac{M}{\beta} + \frac{M}{W \beta} \label{eq:cc-a2a-window-time} \end{equation}$$

三项含义:

  • $W \alpha$: $W$ 次 wave 启动延迟
  • $M / \beta$:通信总量在带宽上的下界
  • $M / (W \beta)$:流水尾部最后一 wave 无法重叠的残差

$W$ 求导 ($\alpha = M / (W^2 \beta)$) 得最优:

$$\begin{equation} W^* \approx \sqrt{\frac{M}{\alpha \beta}} \label{eq:cc-sparse-a2a-optimal-w} \end{equation}$$

NVLink 5.0 ($\beta \approx 50$ GB/s 单链路单向,$\alpha \approx 1 \mu s$, $M = 16$ MB) 下 $W^* \approx 18$,与 MegaMoE 实测 8–16 wave 一致 (实测略小因还需考虑 expert compute 时间)。

对硬件 / 通信库的新需求

核心问题:不规则 + 流水化让经典 a2a 优化路径失效,新需求在哪?

自适应路由

长尾发送矩阵让特定 link 短时间过载,静态最短路由形成持续拥塞。Dragonfly / Slim-Fly 类拓扑的 adaptive routing 在不规则 a2a 下从"可选"变"必选"。NVSwitch 内部多路径调度也属此。

流量隔离与 QoS

Wave 间需延迟可预测性:某 wave dispatch 不能被前一 wave combine 阻塞。需:

  • 多 channel / 多 QP 并发:不同 wave 走不同 hardware queue
  • 优先级调度:dispatch (关键路径) 优先于 combine (非关键路径)

细粒度集合通信原语

NCCL ncclAllToAllv 仍是单次同步调用,流水化需:

  • 异步分块 a2a:每 wave 独立发起 / 独立完成事件
  • 应用层在前一 wave 完成事件触发后立刻计算

与传统"先 a2a 再算"同步模型不同。NVSHMEM / GPUNetIO 类 device-initiated 通信是天然契合方向。

拥塞控制

IB ECN / Adaptive Routing、Ethernet DCQCN / HPCC 在大消息均衡 a2a 时几乎无效 (队列不积压)。小消息不规则 a2a 下特定 link 瞬时排队 → ECN 标记 → 上层调速率。RoCE v2 + 完善拥塞控制成为前提。

与其他原语的衔接

核心问题:不规则 AllToAll 如何与 AllReduce/AllGather 等其他原语衔接优化端到端性能?

不规则 a2a 常是前序 top-k 选择的下游

[token 计算 affinity]
→ distributed top-k (见 13-distributed-top-k)
→ 构造 sparse send list
→ sparse / wave-scheduled a2a 做 dispatch
→ expert compute
→ combine 阶段 sparse a2a (Expert 输出按原路径回送)

Top-k 输出的索引集合直接作为 a2a 的 send count 矩阵。两原语在端到端通信栈紧耦合

Takeaway

知识点核心结论
不规则 a2a 来源取消 routing 约束 (V4 风格),发送矩阵数据相关 + 长尾
长尾延迟关键路径由最慢 link 决定,p95 可达均值 2×
Wave scheduling$W$ wave 流水,dispatch / compute / combine 重叠
最优 $W^*$$\sqrt{M / (\alpha \beta)}$, NVLink 5.0 上 ~18
Adaptive routing从"可选"变"必选"
QoS多 channel / 多 QP + dispatch 优先
库接口需异步分块 + device-initiated
拥塞控制RoCE v2 + DCQCN / HPCC 成为前提
上游耦合distributed top-k 输出 = a2a send count 矩阵

@tbl-cc-sparse-a2a-takeaway 不规则 / 流水化 AllToAll 要点

参考资料