本博客的视频教程在这:
2.2阿里十万卡集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model_哔哩哔哩_bilibili
一、大模型训练的核心问题
1.1 流量模式的问题
大语言模型训练的流量模式问题可参考这个:
ECMP等价多路由机制,大模型训练负载均衡流量极化冲突原因,万卡(大规模)集群语言模型(LLM)训练流量拥塞特点_ecmp路由影响因素-CSDN博客
1.2 集群故障
大模型训练的集群故障特点:
a、大模型训练要多个GPU协同,故障敏感性高,一个GPU或链路故障了,可能会整个训练崩溃。
b、故障带来经济损失高,毕竟涉及成千上万张卡。
c、第一层交换机缺乏链路冗余,故障影响大。
具体点解释就是
a、故障敏感性高:LLM(Large Language Model,大语言模型)训练是一个同步过程,所有GPU协同完成一系列迭代;因此,任何GPU中的异常都可能延迟或崩溃整个训练过程。
b、故障带来的经济损失高:由于在LLM训练中生成检查点(checkpoint)需要大量存储(例如,每个GPU 30GB)和高开销(例如,100秒),我们的客户选择每隔几个小时生成一个检查点。LLM中的检查点生成间隔,通常在两到四个小时之间(即使在这些高间隔下,检查点引入的开销仍然在5%左右)。这意味着一旦出现故障,整个训练必须回滚到几个小时更早地接受再训练。考虑到使用3K GPU的训练任务每小时的训练成本为2万美元,失败可能会导致3万美元的经济损失。
c、第一层交换机(TOR(Top of Rack)指的是在每个服务器机柜上部署的交换机,直接连服务器网卡的交换机)故障影响大:如下图所示,第一层没有冗余链接,发生故障将带来巨大影响。虽然第2层和第3层具有丰富的冗余链路,但每个NIC都通过单个链路连接到ToR,从而带来单点故障风险。当访问链路(即连接NIC和ToR的链路)断开时,会导致相应的主机断开连接。更糟糕的是,ToR的故障可能会使数十甚至数百台主机不可用,导致服务质量严重下降。LLM训练需要数千个GPU协同训练,涉及数十个ToR和数千个光学模块和链路。由于规模如此之大,很难保证没有网络设备停机。监控和故障排除系统等工具可用于被动定位故障的根本原因,但无法防止训练崩溃。在我们的操作集群中,如图5所示,每月有0.057%的NIC ToR链路发生故障,约0.051%的ToR交换机遇到严重错误和崩溃。在这种高失败率下,一份训练工作每月会遇到1-2起事故。此外,每天都会发生5K-60K链路摆动的情况,也会导致暂时的性能下降。
二、阿里集群中心设计目标:
2.1 可扩展性。
为了适应未来更大规模训练需求的演变,我们设定了包含15K GPU的主要容量目标,这也符合主流LLM训练提供商(如谷歌、AWS、Azure和NVIDIA)为每个训练集群提供10K-30K GPU的要求。根据我们的经验,模型参数的数量在未来几年可能会继续增加一个数量级(即从1万亿个参数增加到10万亿个参数)。因此,我们数据中心的额外容量目标是能够支持100K GPU的规模。
2.2 高性能。
性能很重要。为了提高性能,我们的设计应该尽可能减少网络跳数。减少跳数不仅可以降低延迟,还可以减少ECMP哈希的次数,使路径选择方案更加精确。此外,我们的设计应该允许尽可能多的GPU到GPU的直接通信,而不是通过网络。
2.3 单ToR容错。
根据前面所提到的第一层交换机TOR故障影响大,可能影响LLM训练可靠性的最关键风险是单个ToR的错误。因此,我们的新网络架构应该从根本上避免拓扑级别的单个ToR故障。
三、阿里集群HPN拓扑架构设计:
3.1 网络架构总览
阿里的集群架构分为前端网络和后端网络(即训练网络)。
前端网络就是每台主机一个单独网卡的两个端口连接分别连接到前端两个ToR交换机。将存储流量与训练隔离开来,并兼容支持模型推理。
重点我们看下后端训练网络。
后端训练网络架构总结:
a、服务器内:GPU通过NVlink互联,每台主机配备了9个NIC,每个NIC具有2×200Gbps。这九个NIC中的一个(即图7中的NIC0)连接到前端网络,而其余八个NIC连接到后端网络,在LLM训练期间承载流量。这八个NIC中的每一个都服务于一个专用GPU,每个NIC两个端口。
b、Segment层(即服务器和ToR交换机连接层):每个GPU对应的NIC两个端口分别连接到不同的ToR交换机。每个Segment包含16个ToR交换机136个服务器超1000个GPU。
c、Pod层(将多个Segment层连接到一起):1个Pod包含15个Segment,约1万5千个GPU。1个Pod被划分为两个Plane(这个是防止ECMP流量冲突,后面细说)
d、Core层(将多个Pod连接到一起):支持10万GPU卡的集群。
3.2 架构优势
哈哈哈,NVlink的优势就不强调了啊,反正就是GPU直接连接带宽高,我们从Segment层开始。
A、Segment层优势
a1、容错:Segment层优势就是每个GPU对应的NIC两个端口分别连接到不同的ToR交换机。每个NIC的两个端口分别连接到不同的ToR,形成双ToR设计。这样就能容错了啊,一个链路挂了或者一个ToR交换机挂了,还有备份。
a2、通信优化:1千多个GPU卡通信,只经过一个交换机。如图下图红线所示,同一轨道中的NIC通过同一组双ToR交换机连接,如主机1中的GPU1想与主机3中的GPU1通信,主机1GPU1→ToR1→主机3中GPU1;不同轨道中的NIC可以通过主机内+主机间转发的组合进行通信。如下图中黄线所示,如果主机1中的GPU1想与主机3中的GPU2通信,则转发路径为主机1中GPU1→主机1中GPI2→ToR3→主机3中GPU2。
B、Pod层优势
b1、 避免ECMP流量冲突:如果只是在ToR交换机和Agg交换机(第二层交换机,或叫汇聚层交换机)之间部署一个典型的Clos(或说是spine leaf)拓扑,如下图12(a)标明Load imbalance处所示,哈希极化仍然存在。因此采用图12(b)的拓扑结构,采用双平面(分组)设计,即连接到同一万卡两个端口的两个ToR被分为两个单独的组。简单点讲就是Pod层分组设计,组与组的流量不会流到一起,不会冲突。
实验结果表明,这种分组(双平面)设计可以有效降低流量冲突,如下图所示,左图为Clos拓扑架构,流量冲突流量分布不均。右图为分平面拓扑设计,流量分布相对均匀。
b2、Pod层支持15K张GPU卡:分平面设计将ToR和Agg交换机之间的链路连接数量减半,使Agg交换机能够在同一Pod中支持更GPU。实现了在同一Pod中包含15K卡的目标,并为每个GPU提供400Gbps的网络访问容量。减少不必要的交换机和链路,成本节省了约30%。15K张GPU卡只需通过三个交换机进行通信。
C、Core层优势
c1、十万卡集群支持:增加核心层(core)交换机,支持十万卡集群的长期规划。
c2、根据并行策略降低Core层流量:DP数据并行、PP模型并行、TP张量并行训练时的流量大小如下表所示。PP产生的流量最低,并利用基本的发送/接收进行通信,这对网络带宽不敏感。因此,通过和工作调度器的适当合作,确保只有PP流量通过Core核心层,从而最大限度地减少多跳转发带来的副作用。
c3、减少流量冲突和负载不均衡:(1) 我们在Core核心层进行双平面设计。(2) 在每个Core交换机中,我们采用预先设置每个端口哈希来确保从物理端口流向Pod𝑖的流量将唯一地转发到端口𝑘(与5元组无关),从而消除了哈希极化。
参考资料
Alibaba HPN: A Data Center Network for Large Language Model Training (ennanzhai.github.io)