期中的数分考试结束了,又有了更多的时间读论文,学习新知识了。今天要读的论文是《From ATOP to ZCube: Automated Topology Optimization Pipeline and A Highly Cost-Effective Network Topology for Large Model Training》重点理解里面的ZCube拓扑
ZCube, compared to the previous state-of-the-art topologies, including ROFT, Rail-only, and dual-port designs for ROFT (HPN), improves end-to-end LLM training speed by 3% to 7% and reduces network hardware costs by 26% to 46%. We also construct ZCube on a real-world testbed. Results show that ZCube reduces hardware costs by 25% compared to Rail-Optimized Topology while maintaining the same all-reduce and all-to-all performance.
论文中如是介绍ZCube拓扑的性能。里面出现了我不认识的词ROFT, Rail-only, and dual-port designs for ROFT (HPN)
ROFT,HPN
我去询问了AI,看完之后我自己总结如下:
ROFT 的全称是 Rail-Optimized Fabric 这是一个拓扑模型,落地的实现就是High-Performance Network。这是阿里开发的。
怎么连接的呢?
-
先把GPU分成一个个rail,全部连接到一个交换机上,这个rail内部的通信是高速的。
-
但是这里是把GPU分成了一个个rail,那rail间通信怎么实现呢?一般是通过服务器内部NVLink转发
-
HPN是阿里的双平面增强版。平面就是物理隔离的网络。一个GPU有两个网卡,各连一个ToR,这两个ToR上联两组不同的汇聚层交换机
流量特征
论文里提出了对数据中心流量的观察:论文特别强调了一个很重要的流量特征:大多数跨服务器通信是 rail-aligned 的。
所谓 rail-aligned,是指跨服务器通信通常发生在相同 GPU index 之间。例如:
Server 1 的 GPU 2 和 Server 64 的 GPU 2 通信;
Server 3 的 GPU 5 和 Server 100 的 GPU 5 通信。
即便是 all-to-all,NCCL 的 PXN 机制也会先通过 NVLink 把数据转发到同 index 的 GPU,再从该 GPU 发往目标服务器。与之相对的是 inter-rail traffic,即不同 GPU index 之间跨服务器通信。论文认为当前大模型训练中的服务器间流量大多是 rail-aligned,因此拓扑设计应当利用这一特点。
作者还观察到MoE模型训练推理时EP并行常与DP并行流量共存,却少与PP流量共存
AOTP
ATOP,全称 Automated Topology Optimization Pipeline,是论文提出的自动拓扑优化流水线。
它主要包括三个组件:
-
Topology Hyperparameterization Modeling:拓扑超参数化建模;
-
Topology Optimizer:拓扑优化器;
-
Topology Evaluator:拓扑评估器。
整体流程是:
- 用户输入 GPU 数量、最大层数、最大维度、硬件约束、优化目标等;
- ATOP 用一组超参数生成候选拓扑;
- 优化器用 NSGA-II 多目标进化算法选择下一批候选拓扑;
- 评估器用模拟器和理论指标评估候选拓扑;
- 不断迭代,得到 Pareto-optimal 拓扑集合;
- 对 Pareto 集合进行更完整的大模型训练模拟,选出最终结果。
建模
- 将一个拓扑的构建拆分为11种参数
- 拓扑被分为数个Layer,并分别描述跨Layer的连接和Layer内部的连接
- 用户输入:GPU的数量,最大层数,层内的最大维数
层间连接
首先给出每层的节点数量
对于第i,j层之间(i,j可任取):
- 将i,j两层分别划分为若干个Block,并在block之间建立映射。使用参数H表示每层的block数量
- 定义每个block内,每个节点连出多少条线
- 定义链路的带宽
层内连接
首先将一层分为多个维度,赋予每个节点坐标X
在每个维度内:
- 定义这个维度中每个节点向外的连接数,以及带宽
- 对于坐标X的节点,在第k维内,第m条链路,连接到的坐标为X’,向量S代表每个维度的最大节点数。满足如下公式:

X'是需要连接的目标节点。Ak是一个变换矩阵,m是指当前连的是第几个节点,ak可以理解为步长,模S是为了循环
优化目标
JCT: job completion time 作业完成时间ForestColl all-gather: 计算理论All Gather通信完成时间COST: 成本,包含交换机,网卡,线缆,光模块等等Fault Tolerance: 在每个单交换机故障后,GPU 对之间最短路径长度的平均值。(具体的计算方式我没有研究)
关于集合通信这一块,我在集合通信原语学习里补了一点基础知识。
评估器
packet-level 模拟器如 NS-3 精度高,但在上万 GPU 规模下太慢、内存占用太大。因此论文实现了一个 flow-level 模拟器。
细节我也是没有研究
评估是双阶段评估,先跑典型片段,再选择一部分进行端到端模拟。
ZCube
ZCube是用AOTP找出的非对称拓扑。作者认为人类设计者会因为追求的对称化设计而忽略高性能的非对称拓扑。

这就是论文里的示意图
ZCube拓扑的构造比较复杂,因为它是递归形成的。
ZCube(x,y)中的x表示每个小单元里GPU的个数,y指层数。
依次来看:
ZCube(n,1)表示一个交换机,上面接了n个GPU
此后,每当层数y增加一层(到了y+1),有如下连接:
-
首先将ZCube(x,y)里的
x^y个GPU进行编号,编号相同的GPU同轨,这也意味着第i层上有x^(i-1)个交换机,为了表述方便,论文里把交换机层数从0开始计数。连接时,编号为i的GPU连接到y+1层交换机中的第i台。 -
对于交换机而言,x个ZCube(x,y)里每一组的顶层的
x^(y-1)个交换机,依次接入新加入的一层x^y个交换机中的x个。这样来看,组成ZCube(x,y+1)的子单位ZCube(x,y)也像是接入了一个Rail-only网络。
接法就是这样,这样看起来很简单,但是我花了好多时间才理解了。

这是一个ZCube(2,3)

这是讲怎么往上加层的,我当时就是盯着这个图才明白了交换机是怎么连的了。
非对称
上面提到了非对称,简单解释一下。在很多网络拓扑里,交换机都是一样的,至少端口数一样。但是在ZCube里:
底层:连接n个GPU,上联n个交换机,共2n个端口
最顶层:下联n个交换机,还要和n个GPU直接连接,共2n个端口
中间层:下联n个交换机,上联n个交换机,还要直接连接n个GPU,共3n个端口