跳到主要内容

多跳拓扑建模

AI 集群的互联网络是分层的——NVLink(节点内)、InfiniBand 或以太网(节点间)、光纤(机柜间)构成多层级链路。不同并行策略的集合通信在不同层级链路上运行,需要分层建模才能得到准确的延迟预测。


多跳 $\alpha$ 累加

点对点通信经过 $H$ 跳时,每一跳都贡献独立的启动延迟和传播延迟:

$T_{\text{multihop}} = \sum_{i=1}^{H} \left(\alpha_i + \frac{M}{\beta_i}\right)$

其中 $\alpha_i$$\beta_i$ 分别是第 $i$ 跳的启动延迟和带宽。

在 cut-through 交换模式下(当前数据包的第一个 flit 到达时即开始转发),可以优化为:

$T_{\text{cutthrough}} = \alpha_1 + \frac{M}{\beta_{\min}} + \sum_{i=2}^{H} \alpha_i$

其中 $\beta_{\min}$ 为路径上的瓶颈带宽,后续跳的 $\alpha$ 与上一跳传输部分重叠。

简化形式:当各跳带宽差异不大时,可近似为:

$T_{\text{multihop}} \approx \alpha_{\text{total}} + \frac{M}{\beta_{\text{bottleneck}}}$

其中 $\alpha_{\text{total}} = \sum_i \alpha_i$ 为各跳启动延迟之和,$\beta_{\text{bottleneck}}$ 为路径最窄带宽。

$\alpha$ 的物理分解(各跳来源):

$\alpha = \alpha_{\text{sw}} + \alpha_{\text{NoC}} + \alpha_{\text{DMA}} + \alpha_{\text{PHY}} + \alpha_{\text{link}} + \sum_{j} \alpha_{\text{switch}_j} + \alpha_{\text{mem}}$

分量物理来源典型值
$\alpha_{\text{sw}}$通信库调用 + 描述符准备(NCCL kernel launch)1–5 $\mu s$
$\alpha_{\text{NoC}}$片上网络路由(计算核 → DMA 引擎)0.05–0.5 $\mu s$
$\alpha_{\text{DMA}}$DMA 引擎启动 + IOMMU 地址翻译0.2–1 $\mu s$
$\alpha_{\text{PHY}}$SerDes 编解码 + PLL 锁定0.005–0.02 $\mu s$
$\alpha_{\text{link}}$物理链路传播(电/光,$d/v$0.005–5 $\mu s$
$\alpha_{\text{switch}}$交换机转发延迟(查表 + 缓冲 + 仲裁)0.1–1 $\mu s$
$\alpha_{\text{mem}}$目的端内存写入首次延迟0.03–0.08 $\mu s$

两层拓扑分层公式

AI 集群中最常见的两层拓扑:节点内高带宽互联(NVLink/C2C)+ 节点间低带宽互联(InfiniBand/Ethernet)。

两层拓扑的根本差异:NVLink 带宽约 300–900 GB/s,跨节点 IB/RoCE 带宽约 25–100 GB/s,差异 9–36 倍。若用统一的 $\beta$ 参数建模,误差高达数十倍。

分层 AllReduce 公式(以 $N_g$ 个节点、每节点 $G_s$ 个 GPU 为例,NCCL 三阶段串行):

$T = T_1 + T_2 + T_3 + T_{sw}$

三个阶段串行执行(Phase 2 的输入依赖 Phase 1 的输出):

Phase 1 — 节点内 ReduceScatter$G_s - 1$ 步,走 NVLink):

$T_1 = \frac{G_s - 1}{G_s} \cdot \frac{M}{\beta_{NV}} + \alpha_{nv}$

Phase 2 — 节点间 AllReduce(仅传 $M/G_s$,走 IB):

$T_2 = \frac{2(N_g - 1)}{N_g} \cdot \frac{M/G_s}{\beta_{IB}} + \alpha_{ib}$

$T_2$ 只传 $M/G_s$ 的原因:Phase 1 完成后每个 GPU 仅保留 $1/G_s$ 的数据分片,跨节点只需同步该部分,IB 流量压缩 $G_s$ 倍。

Phase 3 — 节点内 AllGather$G_s - 1$ 步,走 NVLink):

$T_3 = \frac{G_s - 1}{G_s} \cdot \frac{M}{\beta_{NV}} + \alpha_{nv}$

合并后的闭合公式

$\boxed{T = \underbrace{2\alpha_{nv} + \alpha_{ib} + T_{sw}}_{C} + M \cdot \left(\frac{7/4}{\beta_{NV}} + \frac{1/8}{\beta_{IB}}\right)}$

(以 $N_g = 2$$G_s = 8$ 为例,其中系数 $7/4 = 2 \times (G_s-1)/G_s = 2 \times 7/8$$1/8 = 1/G_s$

分层与单层拓扑的带宽贡献对比$G_s = 8$):

阶段带宽参数系数说明
NVLink(两趟)$\beta_{NV} \approx 360\ \text{GB/s}$$7/4 = 1.75$ReduceScatter + AllGather 各 7/8
IB(一趟)$\beta_{IB} \approx 22\ \text{GB/s}$$1/8 = 0.125$仅传 $M/8$,流量压缩后系数小

NVLink 阶段贡献约 $1.75 \times M / 360 = M/206$,IB 阶段贡献约 $0.125 \times M / 22 = M/176$,两者量级相近——尽管 IB 带宽是 NVLink 的 1/16,但 IB 阶段的传输量也仅为 $M/8$,大大减轻了 IB 的负担。


带宽竞争建模

$\alpha$-$\beta$ 基础模型假设每条链路独占,无竞争。实际上多个并发通信流共享物理链路,有效带宽按流数比例缩减。

静态竞争(可在分析模型中处理)

多个通信流共享同一物理链路,有效带宽 = 链路带宽 / 并发流数:

$\beta_{\text{eff},i} = \frac{\beta_i}{\max(1,\ F_i / C_i)}$

其中 $F_i$ 为链路 $i$ 上的并发流量(单位:链路容量的倍数),$C_i$ 为链路容量(即 $C_i = 1$)。

竞争来源

  • Ring AllReduce 中多个 chunk 同时在环上传输
  • MoE EP AllToAll 中所有 $N \times N$ 节点对同时通信
  • DP AllReduce 与 TP AllReduce 并发(若不同并行组共享物理链路)

精度改善:加入静态竞争建模后,大规模场景(512 GPU AllGather)的误差可从 >500% 降至 10–30%(来源:SimAI, NSDI'25)。剩余误差来自动态拥塞(DCQCN/PFC),需包级仿真才能消除。

动态拥塞(分析模型的结构性局限)

拥塞控制算法(DCQCN/HPCC)的瞬态行为——速率振荡、收敛延迟、PFC 级联传播——是非线性动态系统行为$\alpha$-$\beta$ 从根本上无法捕捉:

类别能否在分析模型中处理精度改善方案
静态竞争可以(追踪并发流数,缩减 $\beta$误差 10–30% → 5–10%
动态拥塞不可以(结构性缺陷)需包级仿真(NS-3/SimAI)

Multi-Rail 建模粒度

建模方式描述适用场景
汇聚所有链路合并为单一等效带宽均匀流量,精度约 5%
按平面每个 NVSwitch 平面独立建模交换机级流量竞争
按链路每条物理链路独立 + 路由非均匀流量(MoE AllToAll、ECMP 冲突)

汇聚模型在以下场景失效:ECMP 哈希冲突(导致流量非均衡)、MoE AllToAll 的 $N \times N$ 竞争、混合操作并发时的链路争用。


参考文献