























期中的数分考试结束了,又有了更多的时间读论文,学习新知识了。今天要读的论文是《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)
我去询问了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流量共存
ATOP,全称 Automated Topology Optimization Pipeline,是论文提出的自动拓扑优化流水线。
它主要包括三个组件:
Topology Hyperparameterization Modeling:拓扑超参数化建模;
Topology Optimizer:拓扑优化器;
Topology Evaluator:拓扑评估器。
整体流程是:
首先给出每层的节点数量
对于第i,j层之间(i,j可任取):
首先将一层分为多个维度,赋予每个节点坐标X
在每个维度内:

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是用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个端口
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。