Ring 拓扑
关联:总览.md — 名词定义与评估指标体系
基本结构
Ring(环形)由 $N$ 个节点构成双向环 $C_N$:每个节点只与左右相邻节点直接相连,度数恒为 2。可视化为一个圆圈,节点均匀分布在圆周上,每条边连接相邻两节点,首尾相接。
Ring 是所有互联拓扑中结构最简单、成本最低的一种。其核心价值不在于作为独立的集群拓扑使用,而在于 Ring AllReduce 算法——这一算法设计完全针对环形流量模式,达到带宽理论下界。
关键参数
| 属性 | 值 |
|---|---|
| 度数 | 2 |
| 直径 | $\lfloor N/2 \rfloor$ |
| 链路数 | $N$ |
| 割集带宽 | $2b$(与 $N$ 无关) |
| Vertex-Transitive | Yes(循环群 $\mathbb{Z}_N$ 对称) |
致命缺陷:割集带宽恒为 $2b$,不随规模增长。将环从任意位置切开,必须切断恰好 2 条链路。$N$ 从 8 增到 1024,AllReduce 的可用带宽不增反降——步数 $O(N)$ 增长导致延迟累积,而割集带宽始终不变。
通信性能特性
Ring AllReduce(核心价值)
Ring AllReduce(Baidu, 2017)是 Ring 拓扑的核心价值所在:
分两阶段——ReduceScatter + AllGather,每阶段 $N-1$ 步,每步传输 $M/N$ 数据。
$T_{\text{Ring-AllReduce}} = 2(N-1) \cdot \left(\alpha + \frac{M}{N \cdot \beta}\right)$
总传输量 $= \frac{2(N-1)}{N} \cdot M$,达到带宽理论下界(来源:Thakur et al., 2005)。
带宽最优性:对于任意 AllReduce 算法,每个节点至少需要发送 $\frac{N-1}{N} \cdot M$ 字节数据(因为需要接收其他 $N-1$ 个节点的贡献),Ring AllReduce 恰好达到这个下界。
来源:Gibiansky, "Bringing HPC Techniques to Deep Learning", 2017
AllToAll on Ring
每步向右邻居发送一份数据、从左邻居接收,$N-1$ 步完成。远端节点对的数据必须经过多跳中转,效率受限于环带宽。
拥塞特性
- Ring AllReduce:每步恰好每条链路被一条流使用——完美流水线,零争用。这是 Ring 的最佳用例。
- 非均匀流量(如 P2P、AllToAll):中间链路成为热点。跨半环的流量使 $\lfloor N/2 \rfloor$ 条链路被同一条流占用。
路由算法
最短路径路由:沿较短方向转发,最多 $\lfloor N/2 \rfloor$ 跳。
死锁避免:单向 Ring 路由天然无死锁。双向路由可用 dateline 机制——在环上指定一条链路为"日期线",跨越时强制切换虚通道(来源:Dally & Seitz, 1987)。
适用场景
- Ring AllReduce 算法层面:适合大消息 AllReduce($M > 100$ MB),带宽利用率达到理论最优。NCCL 在 NVLink 环、PCIe 环上均实现了 Ring AllReduce 变体。
- 小规模同质集群:$N \leq 16$ 时,割集带宽绝对值不低,延迟步数尚可接受。
- 作为更大拓扑的子结构:Fat-tree 内的同 rack GPU 通过 NVLink 形成逻辑 Ring,运行 Ring AllReduce。
局限性
- 割集带宽不随规模增长:恒为 $2b$,是所有可扩展拓扑中最差的。$N = 1024$ 时割集带宽等于 $N = 4$ 时。
- 延迟 $O(N)$:AllReduce 的延迟项 $2(N-1)\alpha$ 随节点数线性增长,大规模时延迟极差。
- 小消息性能极差:延迟项主导时($M < 1$ MB),Ring 比 Tree AllReduce 慢 $O(N/\log N)$ 倍。
- 故障脆弱性:单链路故障将环分裂为链,割集带宽降至 $b$(减半);两个不同位置的链路故障将环断开,网络分裂。
在大模型集群中的实际应用
Ring 作为独立互联拓扑已基本被淘汰,但 Ring AllReduce 算法在所有拓扑上广泛使用:
| 系统 | 演进路径 | 说明 |
|---|---|---|
| DGX-1(2016) | 8× P100 构成混合 cube-mesh 拓扑 | 来源:NVIDIA DGX-1 Whitepaper |
| DGX-2(2018) | 升级为 NVSwitch 全互联 | Ring 作为独立拓扑淘汰 |
| 现代 GPU 集群 | NCCL 在 NVLink / IB 拓扑上运行 Ring AllReduce | 算法保留,拓扑变化 |
AMD MI300X 封装内环形:MI300X 的 8 个计算 Die (XCD) 通过 Infinity Fabric 4 (IF4) 以环形连接,相邻 XCD 间带宽 ~200 GB/s,非相邻 Die 间带宽衰减明显(~50-70 GB/s,经中间 XCD 转发)。这是现代系统中 Ring 作为节点内拓扑的典型案例,同时也是其缺陷的体现——与 NVSwitch 全互联相比,非相邻 Die 间带宽显著降低。
成本
$N$ 条链路、度数 2——所有拓扑中成本最低。但割集带宽不随规模增长,独立用于集群级互联仅适合极小规模($N \leq 8$)或作为更大拓扑中的子环结构。
参考资料
| 资料 | 关键内容 |
|---|---|
| Gibiansky, "Bringing HPC Techniques to Deep Learning", 2017 | Ring AllReduce 算法原始描述 |
| Thakur et al., 2005 | AllReduce 带宽下界证明 |
| NCCL | Ring AllReduce 在 GPU 集群上的实现 |
| Chips and Cheese, MI300X IF Topology | MI300X 环形拓扑带宽分析 |