Torus 拓扑
关联:总览.md — 名词定义与评估指标体系
基本结构
Torus(环面)是 $k$-ary $n$-cube 拓扑族的带环绕链路版本:每维 $k$ 个节点,$n$ 维,总节点 $N = k^n$。每个节点在每个维度上与相邻节点相连,且首尾相接形成环(环绕链路)。
以 2D Torus 为例:节点排列在一个 $k \times k$ 的网格上,每个节点与上下左右 4 个邻居相连,同时最左列与最右列相连、最上行与最下行相连,构成一个"甜甜圈"形状。3D Torus 则在此基础上增加第三维。
Mesh vs Torus 的区别:
- Mesh(无环绕链路):边界节点度数低于内部节点,Vertex-Transitive 性质不成立
- Torus(有环绕链路):所有节点度数相同($2n$),Vertex-Transitive,流量分布更均匀
关键参数
以 $k$-ary $n$-cube 统一表示:
Mesh(无环绕链路):
| 属性 | 值 |
|---|---|
| 度数 | $2n$(内部)、$n$-$2n$(边界) |
| 直径 | $n(k-1)$ |
| 链路数 | $n \cdot k^{n-1} \cdot (k-1)$ |
| 割集带宽 | $k^{n-1} \cdot b$ |
| Vertex-Transitive | No(边界节点度数不同) |
Torus(有环绕链路):
| 属性 | 值 |
|---|---|
| 度数 | $2n$(所有节点一致) |
| 直径 | $n \cdot \lfloor k/2 \rfloor$ |
| 链路数 | $n \cdot k^n$ |
| 割集带宽 | $2k^{n-1} \cdot b$ |
| Vertex-Transitive | Yes |
Torus 的环绕链路使割集带宽翻倍(沿某维切开,两侧各 $k^{n-1}$ 条链路被切断),同时将直径减半,且消除边界效应使流量分布更均匀。
维度对比:
| 维度 | 节点度 | 割集带宽 (Torus) | 直径 | 链路/节点 |
|---|---|---|---|---|
| 1D (Ring) | 2 | $2b$ | $k/2$ | 1 |
| 2D ($k \times k$) | 4 | $2k \cdot b = 2\sqrt{N} \cdot b$ | $k = \sqrt{N}$ | 2 |
| 3D ($k \times k \times k$) | 6 | $2k^2 \cdot b = 2N^{2/3} \cdot b$ | $\frac{3k}{2} = \frac{3}{2}N^{1/3}$ | 3 |
割集带宽随维度提升:$O(N^{(n-1)/n})$。3D Torus 在 $N=4096$ 时割集带宽为 Fat-tree 的 25%,但链路数仅为 Fat-tree 的 ~1/3。
Torus vs Fat-tree 割集带宽-成本权衡:
| $N$ | Fat-tree 割集带宽 | 3D Torus 割集带宽 | Torus/Fat-tree | Torus 链路数 / Fat-tree 链路数 |
|---|---|---|---|---|
| 256 | $128b$ | $80b$ | 63% | ~30% |
| 1,024 | $512b$ | $204b$ | 40% | ~25% |
| 4,096 | $2,048b$ | $512b$ | 25% | ~20% |
| 8,960 | $4,480b$ | $920b$ | 21% | ~18% |
Torus 是"带宽换成本"的工程权衡:相同成本下割集带宽更低,但每 dollar 的带宽更高。
路由算法
Dimension-Ordered Routing (DOR)
按固定维度顺序(X -> Y -> Z)逐维修正坐标:
源 (x1, y1, z1) -> 目标 (x2, y2, z2):
1. 沿 X 维从 x1 移到 x2
2. 沿 Y 维从 y1 移到 y2
3. 沿 Z 维从 z1 移到 z2
- Mesh 上 DOR 无死锁:路径严格按维度推进,不可能形成环
- Torus 上 DOR 有死锁风险:环绕链路形成环。解决方案:
- 虚通道 (Virtual Channels):每维使用 2 个 VC,dateline 机制打破环(来源:Dally & Seitz, "Deadlock-Free Message Routing", IEEE Trans. Computers, 1987)
- Bubble flow control:每维至少保留一个空闲 buffer slot,防止死锁
自适应路由:Duato 协议——一组 VC 做确定性 DOR(保证无死锁),另一组做自适应选路(提高吞吐)。
Valiant 路由:先路由到随机中间节点,再到目的地。路径长度翻倍但负载均衡。Google TPU v4 使用了 Valiant 变体应对非均匀流量(来源:Jouppi et al., ISCA 2023)。
通信性能特性
Dimension-Decomposition AllReduce
Torus 上 AllReduce 的核心方法:将 $n$-D Torus 的全局 AllReduce 分解为 $n$ 个沿各维的 1D Ring AllReduce。
在 3D Torus ($k_x \times k_y \times k_z$) 上:
$T_{\text{AllReduce}} \approx \sum_{d=1}^{3} \left[ 2(k_d - 1) \cdot \alpha + \frac{2(k_d - 1)}{k_d} \cdot \frac{M}{\beta_d} \right]$
总传输量 $= \frac{2(N-1)}{N} \cdot M$,与 Ring AllReduce 相同——带宽最优。
来源:Wan et al., "Synthesizing Optimal Collective Algorithms", PPoPP 2022
AllToAll on Torus
按维度分解,每维内做 AllToAll。在 MoE 工作负载中,3D Torus 的 AllToAll 受限于割集带宽。Google 在 TPU v4 上引入 OCS 光路交换动态重配拓扑以缓解此问题(来源:TPU v4 ISCA 2023)。
拥塞特性
DOR 路由的热点:角落到角落的流量沿维度交界处集中。2D Mesh 中心链路的流量是边缘的 $O(k)$ 倍。Torus 的环绕链路使流量更均匀。
AI 通信 pattern:
- AllReduce (TP/DP):dimension-decomposition 在 Torus 上完美均匀——每步每条链路恰好承载一条流
- AllToAll (MoE):流量模式不规则,容易造成局部拥塞。Google TPU v4 论文报告了 MoE AllToAll 在 3D Torus 上的性能瓶颈(来源:ISCA 2023)
Mesh vs Torus 拥塞对比:Mesh 的边界效应使靠近中心的链路承载更多流量,Torus 消除了这一不对称。但 Torus 的环绕链路需要长线缆(跨越整个维度),增加延迟和布线复杂度。
适用场景
Torus 最适合以下场景:
- 自研芯片生态:TPU 在芯片上集成 ICI 端口,可构建无交换机直连 Torus,成本极低
- PP + DP 为主的并行策略:Torus 在 AllReduce 上带宽最优,PP 的维度分布天然匹配
- AllToAll 需求低的工作负载:密集 Transformer(非 MoE),AllToAll 量少,Torus 割集带宽不是瓶颈
- 成本极敏感场景:Torus 的网络成本约为 Fat-tree 的 8-20%(无交换机)
局限性
- AllToAll 效率低:MoE 模型的全局 AllToAll 在 3D Torus 上产生 $O(\sqrt{N})$ 拥塞比,是致命弱点
- 割集带宽随规模快速下降:$N=8960$ 时仅为 Fat-tree 的 21%
- 增量扩展困难:改变维度大小需要重新布线,无法任意增量
- 环绕链路长线缆:Torus 的长程环绕链路需要光缆,增加成本。Google 通过 OCS 解决部分问题
- 死锁需要额外处理:Torus 的环绕链路形成环,需要虚通道或 bubble flow control
在大模型集群中的实际应用
Google TPU 是 Torus 在 AI 大规模集群中的唯一实际应用:
| 系统 | 拓扑 | 规模 | 维度配置 | 每芯片 I/O 带宽 |
|---|---|---|---|---|
| TPU v2 | 2D Torus | 256 | 16×16 | 4×500 Gbps (per-link) |
| TPU v3 | 2D Torus | 1,024 | 32×32 | 4×800 Gbps (per-link) |
| TPU v4 | 3D Torus | 4,096 | 4×4×4 cube,OCS 重配 | ~2.4 Tbps |
| TPU v5p | 3D Torus | 8,960 | 16×20×28 | ~4.8 Tbps |
| Trillium (v6e) | 2D Torus | 256 | 16×16 | ~6.4 Tbps |
| Ironwood (v7) | 3D Torus | 9,216 | 多维 | ~9.6 Tbps |
来源:TPU v4 ISCA 2023、Google Cloud TPU v5p
TPU 代际演进的拓扑选择逻辑:
- v2/v3:2D Torus,每芯片 4 个 ICI 端口(度数 4),适合中等规模 Pod
- v4/v5p:升级到 3D Torus,每芯片 6 个 ICI 端口,割集带宽从 $O(\sqrt{N})$ 提升到 $O(N^{2/3})$,支撑 4K-9K 芯片 Pod。v4 基本构建块为 4×4×4 cube(64 chips),通过 OCS 光路交换动态重配组合为更大 Pod;v5p 最大配置 16×20×28
- Trillium (v6e):回退到 2D Torus(256 chips/pod),ICI 带宽提升至 ~6.4 Tbps/chip,将大规模扩展交给跨 Pod OCS
- Ironwood (v7):3D Torus,9216 chips,ICI 带宽提升至 ~9.6 Tbps/chip
TPU v4 的 OCS 层:4×4×4 cube(64 chips)之间通过 OCS 光路交换灵活组合,可将 4096 芯片组合为不同形状的 Torus(如 4×4×256, 8×8×64, 4×16×64 等)。一个物理 SuperPod 可同时服务多个不同形状的逻辑集群(来源:ISCA 2023)。
Google 为何选择 Torus:
- 自研芯片可集成 ICI 端口——无需外部交换机,网络成本 <10% of TCO
- 带宽断崖消除——所有芯片等地位,同一 Torus 贯穿全 Pod
- AllReduce 带宽最优——Dimension-Decomposition 算法在 Torus 上完美均匀
- AllToAll 瓶颈通过 Expert 放置策略 + OCS 动态调整部分缓解
成本
- 链路数 $n \cdot k^n$(Torus),线性增长 $O(nN)$
- 无需交换机——直连网络,每节点固定 $2n$ 端口
- 对比 Fat-tree:3D Torus 链路数约为 Fat-tree 的 1/3-1/5,但割集带宽也低 3-5x
关键数据($N = 1024$,$k = 64$ 端口交换机,400G 链路):
- Fat-tree 网络成本:~$7.2M
- 3D Torus 网络成本:~$0.6M(无交换机,仅链路)
3D Torus 的性价比(带宽/$)是 Fat-tree 的 5 倍——但前提是 AllToAll 需求低且可以自研芯片集成 ICI。
参考资料
| 资料 | 关键内容 |
|---|---|
| Jouppi et al., "TPU v4", ISCA 2023 | 3D Torus + OCS 设计,MoE AllToAll 瓶颈 |
| Google Cloud TPU v5p | 16×20×28 Torus 配置 |
| Dally & Seitz, 1987 | Torus 死锁避免(虚通道) |
| Wan et al., PPoPP 2022 | Torus AllReduce 最优算法 |
| Fujitsu Fugaku | 6D Mesh/Torus(158,976 节点) |