如何构建连接数万个GPU的高效网络基础设施

Meta最近发布了一篇文章,强调了随着人工智能的迅速发展,通信需求迎来了新的挑战。特别是在分布式训练方面,这对数据中心的网络基础设施造成了巨大的压力。以生成式人工智能(GenAI)为例,其工作可能需要数周内协调数万个GPU,这就要求对数据中心的网络设计进行重新评估,以提供可靠且高效的基础设施。

在Meta引入基于GPU的分布式训练时,决定为这些GPU集群构建专用的数据中心网络。我们选择RDMA Over Converged Ethernet 第2版(RoCEv2)作为大部分AI任务节点间通信的传输协议。

通过不断扩展RoCE网络,我们成功地将原型从设计阶段推进到多个集群的部署,每个集群可容纳数千个GPU。这些RoCE集群支持广泛的生产分布式GPU训练工作负载,包括排名、内容推荐、内容理解、自然语言处理和GenAI模型的训练等。

网络拓扑的设计

为了支持分布式训练,我们专门构建了一个后端网络,使其可以独立于数据中心网络的其他部分进行发展、运行和扩展。针对大型语言模型(LLM),我们将后端网络扩展至数据中心规模,并在训练作业调度程序中加入拓扑感知功能。

网络的分离架构

训练集群依赖于两个独立的网络:前端(FE)网络用于数据提取、检查点和日志记录等任务,而后端(BE)网络则专注于训练过程。FE网络具有层次结构,包含机架交换机(RSW)、结构交换机(FSW)和存储仓库,为GPU提供所需的输入数据。我们确保机架上的交换机具备足够的入口带宽,以不影响训练工作负载。

BE网络是一种专用架构,连接所有RDMA网络接口卡(NIC),提供高带宽、低延迟和无损的传输服务,能够在集群中任意两个GPU之间实现高效通信。这一后端架构采用RoCEv2协议,允许RDMA服务通过UDP数据包进行网络传输。

AI专区的构建

我们的BE网络经历了数次演变。最初,GPU集群采用简单的星型拓扑,多个AI机架连接到中央以太网交换机,该交换机运行不可路由的RoCEv1协议。这种结构在GPU规模和交换机冗余方面存在明显限制,因此我们迅速转向基于结构的架构,以增强可扩展性和可用性。

我们为AI机架设计了一个两级Clos拓扑,称为AI Zone。机架训练交换机(RTSW)作为叶交换机,通过铜基DAC电缆为机架内的GPU提供连接,主干层由模块化集群训练交换机(CTSW)组成,为所有机架提供横向扩展的连接。CTSW具有深度缓冲区,RTSW通过单模光纤和400G可插拔收发器与CTSW相连。

AI区域旨在以非阻塞方式支持大量互连的GPU,但新的AI技术(如Llama等LLM)所需的GPU规模超出了单个AI区域的能力。为此,我们设计了一个聚合器训练交换机(ATSW)层,以连接数据中心建筑物中的CTSW,从而将RoCE域扩展到单个AI区域之外。

为了优化跨AI区域的流量性能,我们增强了训练作业调度程序,以在将训练节点划分至不同AI区域时寻找“最小割点”,从而减小跨区域的流量并缩短完成时间。调度程序通过学习GPU服务器在逻辑拓扑中的位置来实现优化分配。

高效路由与流量管理

在计算能力和网络拓扑扩展的背景下,我们面临一个关键问题:如何有效平衡和路由大量的训练流量。AI训练工作负载具有几个挑战特性:

  • 低熵:与传统数据中心工作负载相比,AI工作负载的流的数量和多样性较少,通常流模式具有重复性和可预测性。
  • 突发性:流量表现出毫秒级的“开启和关闭”特性,具有突发性。
  • 大流量:每次突发流量的强度可能达到网卡的线速率。

ECMP与路径固定

我们最初考虑广泛采用的ECMP技术。该技术根据五元组的哈希值随机分配流,但由于AI工作负载流的低熵特性,ECMP方案在实际应用中表现不佳。

因此,在最初的几年中,我们设计了路径固定方案,将数据包路由到特定路径。这种方法在每个机架完全分配给同一项工作时效果良好,但这种情况很少发生。最终,我们发现部分分配工作导致网络流量不均匀,进而影响训练性能。

为了缓解流量冲突的影响,我们将RTSW的上行链路带宽提升了两倍,这种解决方案虽然能改善性能,但需要额外的网络容量,因而我们认为这只是短期应对措施。

队列对扩展

随后,我们重新审视了ECMP,计划通过队列对(QP)扩展来增加流量。我们使交换机具备执行增强型ECMP(E-ECMP)的能力,以提升流量平衡的效果。经过评估,我们发现QP扩展和E-ECMP的结合,使得AllReduce等集体操作的性能提升了40%。

尽管通过QP扩展提高了ECMP性能,但哈希算法的概率性质依然是这一方案的短板,且需要针对不同工作负载定制QP扩展参数。

拥塞控制措施

在迁移到400G网络时,我们尝试调整DCQCN以适应新的网络拓扑,但性能却未如预期。最终,我们选择在400G部署中不使用DCQCN,而是依赖PFC来进行流量控制。实际上,我们发现训练集群的性能稳定,没有持续拥塞的现象。

为了进一步缓解高流量下的拥塞问题,我们共同设计了集体库和RoCE传输,通过接收方驱动的流量接纳机制,优化GPU之间的通信架构。这种机制有效限制了网络上的飞行流量,尤其是在拥塞开始累积时。

向前发展

我们已经发展出一种大规模RoCE网络的设计与运行模式,能够满足日益增长的计算密度和规模需求。通过分离FE和BE网络、采用多种路由方案和优化集体流量模式,我们成功构建了高效可靠的网络基础设施。这些设计和见解强调了深入理解训练工作负载的重要性,以及将其影响转化为网络组件设计的必要性,最终推动了分布式AI训练基础设施的进步。

随着GenAI工作负载的快速增长,我们的网络基础设施也将迅速演进。

参考链接

https://engineering.fb.com/2024/08/05/data-center-engineering/roce-network-distributed-ai-training-at-scale/