TE-CCL
如何用 MILP 离线求解集合通信的最优路径与发送时序
核心要点:
- 把集合通信调度建模为 Multi-Commodity Flow + Time-Expanded Graph
- MILP + A* 搜索离线求最优 makespan,运行时按表执行无动态决策
- 显式建模 α 延迟(time-expanded 边权重),优于 SCCL/TACCL 的隐式假设
- 与 ECMP/AR/DQPLB 互补:TE-CCL 管规律 collective,运行时路由管 background traffic
TE-CCL(Traffic Engineering for Collective Communication,Microsoft SIGCOMM 2024)将集合通信调度建模为 Multi-Commodity Flow(MCF)问题[1],通过 MILP + A* 搜索离线求解"每个 chunk 走哪条路径、何时发"。与 ECMP / AR / DQPLB 的根本区别在决策时机——前者运行时反应式调度,TE-CCL 在拓扑和流量矩阵确定下做一次全局优化。
为什么集合通信适合离线求解最优调度?
为什么 ECMP / AR / DQPLB 不是最优
ECMP / AR / DQPLB 这一类运行时路由策略本质上是 reactive——它们对每条流的处理都是局部的:
- ECMP:哈希入口决定,全程对全网拥塞无感
- AR:本地队列深度感知,对下游路径无感
- DQPLB:CQE 反馈感知,但每个 QP 之间相互独立
但 AI 训练的 collective communication 流量具有三个特殊性:
- 流量矩阵完全已知:AllReduce / AllToAll / ReduceScatter 的源-目-数据量在 op 启动前完全确定
- 流量模式高度重复:训练每一步的通信模式几乎相同(除 KV cache 类动态部分)
- 拓扑已知:物理网络拓扑、链路容量、α-β 参数在部署时确定
这三点意味着:集合通信的最优调度可以离线一次性求解——运行时不需要做任何决策,只按计划执行即可。TE-CCL 正是利用这一观察。
流量工程视角
把集合通信看作一个 traffic engineering 问题:
- 网络:GPU 互联拓扑(DAG),每条边有容量限制
- 需求:每对 GPU 间需要传输的 chunk 数据量
- 目标:最小化所有 chunk 全部到达目的地的总耗时(后续节统一记为 makespan $T$)
这正是经典的 Multi-Commodity Flow with Makespan Objective。求解后得到每个 chunk 的完整路径 + 时间表,运行时按表执行即可。
TE-CCL 如何把集合通信形式化为 MCF?
Multi-Commodity Flow 简介
MCF 是网络优化领域的经典问题:给定有向图 $G = (V, E)$、每条边的容量 $c_e$、$K$ 条流量需求 $\{(s_k, t_k, d_k)\}$(源、汇、需求量),求每条流在各边上的分配 $f_{k,e}$,满足容量约束和流守恒约束,并优化目标函数(如总传输完成时间、链路利用率等)。
TE-CCL 把每个 chunk 当作一个 commodity,最小化 makespan。
Time-Expanded Graph
普通 MCF 不能直接表达"时间"——它只关心稳态流量分配。但集合通信的关键正是时序:chunk A 必须先到达节点 X 才能从 X 转发出去。
TE-CCL 用 time-expanded graph(时间展开图)解决:
原图: 节点 A --(链路)--> 节点 B
时间展开(时间步 t = 0, 1, 2, ...):
A@t=0 ----[传输边]----> B@t=1
A@t=1 ----[传输边]----> B@t=2
A@t=2 ----[传输边]----> B@t=3
...
A@t=0 ----[buffer 边]--> A@t=1 (留在原节点)
A@t=1 ----[buffer 边]--> A@t=2
...
- 每个原节点在每个 epoch $t \in \{0, 1, \ldots, T_{\max}\}$ 都有一个副本 $v@t$(一个 epoch 是离散化的最小时间粒度 $T_{\text{epoch}}$,由求解器配置)
- 链路 $(u, v)$ 变为时间边 $(u@t, v@{t + \Delta_{(u,v)}})$,其中 $\Delta_{(u,v)}$ 是按 α-β 模型计算出的"传输 epoch 数":
其中 $\alpha_{(u,v)}$、$\beta_{(u,v)}$ 为链路 $(u,v)$ 的 α-β 参数(见 6.2 Alpha-Beta 模型),$s_{\text{chunk}}$ 为 chunk 大小。高带宽短链路 $\Delta = 1$,低带宽长链路(如 cross-DC)可能跨多个 epoch。
- 同节点不同 epoch 之间用 buffer 边连接,表示 chunk 可以"停在原节点等下一个 epoch 再发"
时间展开后,MCF 求解器自然处理时序约束——chunk 的发出时刻、传输用时、到达时刻在图结构中显式编码,这正是 TE-CCL 相对 SCCL/TACCL 能显式建模 α 延迟的根本原因。
三类核心约束
TE-CCL 的 MILP 形式化包含三类约束:
1. 容量约束:每条物理链路在每个 epoch 上承载的 chunk 数不超过其传输能力。设 $T_{\text{epoch}}$ 为单 epoch 时长,则链路容量为
$$\begin{equation} c_{(u,v)} = \left\lfloor \beta_{(u,v)} \cdot T_{\text{epoch}} / s_{\text{chunk}} \right\rfloor \label{eq:route-te-ccl-chunk-capacity} \end{equation}$$容量约束:
$$\begin{equation} \sum_{k} f_{k, (u@t, v@{t+\Delta_{(u,v)}})} \le c_{(u,v)} \quad \forall (u,v) \in E, \forall t \label{eq:route-teccl-capacity} \end{equation}$$2. 流守恒约束:每个中间节点的入流量 = 出流量(不能凭空产生或消失)
$$\begin{equation} \sum_{e \in \text{in}(v@t)} f_{k,e} = \sum_{e \in \text{out}(v@t)} f_{k,e} \quad \forall v \notin \{s_k, t_k\}, \forall t \label{eq:route-teccl-conservation} \end{equation}$$3. 目的地约束:每条 chunk 必须在最终时间 $T$ 之前到达所有目的节点
$$\begin{equation} \sum_{t \le T} \sum_{e \in \text{in}(t_k @ t)} f_{k,e} \ge d_k \quad \forall k \label{eq:route-teccl-destination} \end{equation}$$目标函数
TE-CCL 最小化 makespan $T$(最晚 chunk 到达的 epoch 编号),约束为前述 $\eqref{eq:route-teccl-capacity}$、$\eqref{eq:route-teccl-conservation}$、$\eqref{eq:route-teccl-destination}$:
$$\begin{equation} \min T \label{eq:route-teccl-objective} \end{equation}$$$T$ 是 MILP 中的整数决策变量——这正是问题为什么不是纯 LP 而是 MILP 的根本原因。
求解器和部署流程是怎样的?
MILP + A* 搜索
直接求解上述 MILP 在大规模拓扑(如 1024 GPU)上的复杂度过高。TE-CCL 采用混合策略:
- MILP 求解器(Gurobi 等):处理容量、守恒、目的地约束
- A* 搜索:在 chunk 数量维度上做剪枝——按 chunk 大小排序,逐步增加 chunk 数直到无法在更短 makespan 内放下,避免穷举所有 chunk 划分
两种 Switch 模型
TE-CCL 支持两种交换机抽象,对应不同硬件能力:
| Switch 模型 | 描述 | 对应硬件 |
|---|---|---|
| Copying switch | 交换机可以复制 chunk给多个出口 | 支持 SHARP 协议的交换机(InfiniBand Quantum 系列) |
| Non-copying switch | 交换机只能转发,不复制 | 普通以太网/IB 交换机(类似 TACCL 的 hyper-edge model) |
@tbl-route-teccl-switch-models 两种 switch 抽象与对应硬件
复制能力对 AllReduce / Broadcast 类操作影响显著——SHARP 交换机能在路径上做规约和复制,TE-CCL 能利用这一点找到更短的 makespan 方案。
输入与输出
输入:
- 网络拓扑 G = (V, E) 与每条边的 α (μs)、β (GB/s)
- 集合通信原语类型(AllReduce / AllToAll / Broadcast 等)
- chunk 划分粒度(chunk size,例如 25 KB)
- switch 模型(copying / non-copying)
输出:
- 完整 schedule:对每个 chunk c,给出
* 路径序列 (source -> hop1 -> hop2 -> ... -> destination)
* 每跳的发出时刻 t
- 总 makespan T*
离线优化 + 运行时部署
部署流程:
1. 离线阶段(一次性):
输入拓扑 + α/β 参数 + collective op 类型 ->
MILP 求解 -> 调度表 schedule.json
2. 编译阶段:
schedule.json -> NCCL/RCCL 可执行的 algo plugin
3. 运行时:
训练步骤启动 collective -> 按 plugin 表执行
(不做任何动态决策,与 ECMP/AR/DQPLB 完全不同)
求解时间在分钟到小时级(取决于拓扑规模和 chunk 数),但分摊到训练全程(数天到数周)几乎可忽略。
TE-CCL 与运行时路由的根本区别在哪?
| 维度 | TE-CCL | ECMP | AR | DQPLB |
|---|---|---|---|---|
| 决策时机 | 离线(编译时) | 运行时(入口哈希) | 运行时(每包) | 运行时(每 segment) |
| 全局视野 | 完整(全网拓扑) | 局部(一跳) | 局部(本交换机) | 局部(本连接) |
| 流量矩阵假设 | 已知且静态 | 未知 | 未知 | 已知(每对节点) |
| 拥塞响应 | 无(计划已避免拥塞) | 无 | 有 | 有 |
| 适用场景 | collective comm(流量规律) | 通用 | 通用 | collective comm |
| 求解开销 | 分钟-小时(一次性) | 0 | 0 | 0 |
@tbl-route-teccl-vs-runtime TE-CCL 与运行时路由的对比
TE-CCL 不是 ECMP/AR 的替代方案,而是补集——TE-CCL 适合规律的 collective,运行时路由适合 background traffic 和不可预测的流量。生产部署中两者通常共存。
TE-CCL 比 TACCL / SCCL 提升在哪?
TE-CCL 之前的工作 SCCL[2] 和 TACCL[3] 也用优化方法生成 collective schedule,但形式化和求解策略不同:
| 维度 | SCCL | TACCL | TE-CCL |
|---|---|---|---|
| 形式化 | Step-based SMT (Z3) | Sketch + MILP(用户引导搜索空间) | Time-expanded MCF |
| α 延迟建模 | 隐式(每步固定开销) | 隐式 | 显式(time-expanded 边权重 + epoch) |
| 流水线 | 强制 barrier(步间同步) | 受限流水线 | 完全流水线 |
| 求解策略 | SMT 求解器 | MILP(受 sketch 约束) | MILP + A* |
| 拓扑泛化 | 弱(需要规则拓扑) | 中 | 强(任意 DAG) |
@tbl-route-teccl-vs-prior TE-CCL 与 SCCL / TACCL 对比
注意三者都是基于求解器的优化方法(SCCL 用 SMT,TACCL/TE-CCL 用 MILP),不是启发式——它们的真正差异在于问题建模方式(步数 vs sketch vs time-expanded flow)和对时序与流水线的处理粒度。
实测改进
TE-CCL 论文[1]披露的 benchmark 数据(指标为 algorithm bandwidth (algbw) = 数据量 / makespan。algbw 与 makespan 数学上恒为倒数;但在小消息场景下 makespan 的下降幅度被 α 部分摊平,因此"algbw $k\times$ 改进"约等于"makespan 缩短 $k\times$"仅在大消息场景下成立,小消息下应直接看 makespan 数值):
| 对比对象 | 拓扑 / 场景 | 改进幅度 |
|---|---|---|
| TACCL | TACCL 支持的拓扑(小规模) | algbw 2× |
| TACCL | GPU testbed | algbw 2.14× |
| RCCL | GPU testbed | algbw 3.18× |
| SCCL | chunk > 1 的所有场景 | TE-CCL 始终更优(流水线 vs barrier) |
@tbl-route-teccl-results TE-CCL 实测改进
关键归因:TE-CCL 的流水线传输 vs SCCL 的barrier-based 步进——SCCL 要求一步内所有 chunk 都到达才能进入下一步,TE-CCL 允许 chunk 边到边发,时间利用更紧凑。
TE-CCL 综合性能特性?
| 指标 | TE-CCL | ECMP(对照) | DQPLB(对照) |
|---|---|---|---|
| 大规模 AllReduce 完成时间 | 理论最优(MILP 求解) | 受哈希碰撞限制 | 高(动态平衡) |
| 拥塞响应 | 无(计划已避免拥塞) | 无 | 有 |
| 拓扑适应性 | 任意 DAG | Fat-tree / Clos | Rail-Optimized |
| 流量矩阵变化适应 | 弱(需重新求解) | 强 | 强 |
| 求解开销 | 分钟-小时(离线) | 0 | 0 |
| 部署门槛 | 高(求解器 + plugin 集成) | 低 | 中(通信库改造) |
@tbl-route-teccl-perf 性能特性对比
何时该用 TE-CCL,何时不该?
适用场景:
- 流量矩阵高度规律的训练场景(标准 LLM 训练)
- 拓扑稳定的集群(拓扑变更后需要重新求解)
- 大消息 AllReduce / AllToAll(chunk 数足够多让 MILP 收益明显)
- 有 SHARP 支持的 InfiniBand 集群(copying switch 模型收益最大)
局限:
- 求解扩展性:MILP 求解时间随节点数和 chunk 数快速增长,TE-CCL 论文[1]实测 AllToAll 拓扑规模上限约 128 节点,AllGather 在 A* 剪枝下可处理更大规模,但仍远小于 10K+ GPU 训练集群
- 流量矩阵变化敏感:流量需求变化需要重新求解,不适合动态 workload
- 依赖准确的 α/β 参数:参数标定误差直接影响 schedule 最优性(见 6.2 Alpha-Beta 模型)
- 集成开销:需要把求解结果编译为 NCCL/RCCL 算法 plugin(MSCCL plugin 格式)
选型建议:
- 标准 LLM 训练(拓扑稳定 + 流量规律):TE-CCL 是离线最优方案,与运行时路由(DQPLB / AR)共存
- 拓扑频繁变化或多租户场景:使用运行时路由(DQPLB / AR)
- 小规模集群(< 256 GPU):TACCL 已足够,TE-CCL 的求解开销不划算
- 大规模生产集群(> 10K GPU):当前 MILP 求解器扩展性受限,仍以运行时路由为主
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 离线性前提 | collective comm 的流量矩阵 + 拓扑 + α/β 都是已知静态量 |
| 形式化 | Time-Expanded Graph + MCF MILP,显式建模时序与 α 延迟 |
| 目标函数 | $\min T$(makespan),$T$ 是整数变量(MILP 而非纯 LP 的原因) |
| 求解策略 | MILP + A* 在 chunk 数维度剪枝,分钟-小时级离线求解 |
| Switch 模型 | copying(SHARP)/ non-copying,决定 Broadcast/AllReduce 收益 |
| vs SCCL/TACCL | 流水线传输 vs barrier 步进;显式 α vs 隐式步开销 |
| 实测改进 | algbw 2× vs TACCL,3.18× vs RCCL;大消息场景 |
| 主要局限 | MILP 扩展性受限(AllToAll ~128 节点);流量变化需重解 |
| 部署关系 | 与运行时路由互补共存,不互相替代 |
参考资料
- Liu et al., Rethinking Machine Learning Collective Communication as a Multi-Commodity Flow Problem, SIGCOMM 2024. https://dl.acm.org/doi/10.1145/3651890.3672249
- Cai et al., Synthesizing Optimal Collective Algorithms, PPoPP 2021. https://dl.acm.org/doi/10.1145/3437801.3441620
- Shah et al., TACCL: Guiding Collective Algorithm Synthesis using Communication Sketches, NSDI 2023. https://arxiv.org/abs/2111.04867
延伸阅读
- TE-CCL GitHub Repository, Microsoft Research, 2024. https://github.com/microsoft/TE-CCL
- Efficient all-to-all Schedules for ML, UW 2024. https://homes.cs.washington.edu/~arvind/papers/all2all-dc.pdf