图片

最近在看的这篇论文《RDMA over Ethernet for Distributed AI Training at Meta Scale》是由Meta公司发表在SIGCOMM2024会议上。论文主要介绍了 Meta 如何基于RoCE 网络构建分布式AI训练集群的设计、实现和运维。

要谈网络,始终绕不开拓扑、路由和流控这三个主题,从论文的ABSTRACT也可以看出来,基于RoCE构建的AI训练网络能够调整优化的也就以上三方面。

1、网络拓扑

1.1 节点内互连

图片

训练节点硬件采用Grand Teton平台,属于Meta自研,基于H100 GPU的产品。

从图上可以看到主要由CPU框、网络交换框和GPU框组成。

GPU使用NVSwitch完全连接。GPU和NIC之间有1:1的配比。对于使用少于8个GPU的训练作业,GPU在节点内无需网络操作即可相互通信。对于较大的作业,RDMA 网卡支持GPU Direct RDMA技术,因此GPU到GPU的流量可以绕过主机内存瓶颈。

1.2 节点间互连

训练集群依赖于两个独立的网络:

  • 前端网络(Frontend,FE)用于数据摄取、检查点和日志记录等任务。

  • 后端网络(Backend,BE)用于训练。

图片

图片

在后端网络选择上,Meta没有选择Multi-Rail多轨道部署,而是传统的单平面Spine-Leaf架构。

图6中的RTSW相当于Leaf交换机;CTSW就是Spine交换机;ATSW交换机用于连接两个AI Zone,将RoCE域扩展到单个AI Zone之外。

Leaf使用铜缆而非光纤跟机架内的GPU节点互连,节省了不少成本。

为了缓解跨AI Zone的性能瓶颈,Meta优化了训练作业调度器,在将训练节点划分为不同的AI Zone时找到了一个“最小切割”,从而减少了跨AI Zone的流量,从而缩短了集合通信的完成时间。

2、路由

具体来说,AI训练工作负载具有几个挑战性的特征:低熵、突发性、大象流。

低熵:与传统的数据中心工作负载相比,AI工作负载的流量数量和多样性要小得多,流量模式通常是重复和可预测的。

突发性:在时间维度上,流量通常在毫秒的时间粒度上表现出“On and off”的性质。

大象流量:对于每次流量爆发,每个流量的强度都可以达到NIC的线速。

2.1 ECMP

Meta最初考虑了业界广泛采用的ECMP方案,根据哈希值在五元组上随机分配流量:源和目标IP、源和目标UDP端口、协议。然而,正如预期的那样,由于低流量熵,ECMP在训练工作负载方面表现不佳。

这种不完美的负载均衡会导致大象流发生碰撞的可能性很高,从而导致严重的拥塞,降低网络吞吐量和作业性能。

2.2 Path Pinning

Meta表示当前的ECMP方案带来了hash冲突和性能影响,于是考虑了在Leaf交换机上采取将数据包路由到特定路径的方案。Path Pinning在面对单个训练任务,并且网络没有故障的时候,这玩意工作的挺好的。However, this was seldom true. 碎片化的作业分配带来的上行链路带宽不均衡和网络有故障时需要重新分配流量,这将导致训练性能下降30%以上。

此外,通过将Leaf上行链路的带宽提升2倍,来减轻这些流量冲突的直接影响。但是,带来了高昂的成本,Meta认为这只是一个短期的缓解方法。

2.3 E-ECMP(增强型ECMP)

将交换机配置为E-ECMP,以使用交换机ASIC的UDF功能对RoCE数据包的目标QP字段进行额外打散(需要基于交换机的SDK进行开发?),这增加了流量熵,与没有QP扩展的传统ECMP相比,E-ECMP的AllReduce性能提高了40%。

图片

2.4 Centralized Traffic Engineering,集中式的流量工程

图片

集中式流量工程(Centralized Traffic Engineering,简称TE)是Meta为了解决RoCE网络中因低熵流量模式导致的负载不均衡问题而设计的一种动态路由优化方案。

TE工作原理:

  • 实时拓扑构建:拓扑收集器通过整合静态拓扑和动态链路状态信息,构建出训练集群的实时网络拓扑。

  • 流量矩阵计算:TE引擎根据流量矩阵和作业调度信息,计算出当前网络的流量矩阵,并利用CSPF算法确定最优的流量路径分配。

  • 路由决策执行:交换机编程器将优化后的流量路径转换为具体的交换机配置,通过精确匹配表在数据平面中覆盖默认路由,实现对RDMA流量的动态路径优化。

采用TE的优势当然也很明显。

  • 性能提升:在非最优作业调度场景下,与ECMP相比,TE能够更有效地利用网络带宽,提高网络性能。

  • 适应性强:TE能够根据实时的网络状态和工作负载动态调整路由决策,更好地适应分布式AI训练任务的动态性和多样性需求。

  • 流量控制精细:通过精确匹配表实现基于<source port, destination prefix>元组的流量管理,提供了更细粒度的流量控制能力,有助于更精确地分配和管理网络资源。

论文中也提到了TE的局限性:

  • 对网络状态的依赖:TE的性能和有效性高度依赖于准确的网络拓扑和流量矩阵信息。如果这些信息不准确或不及时,可能会影响TE的优化效果。

  • 配置和维护复杂性:集中式TE架构需要对网络设备进行特定配置和编程,增加了网络的配置和维护复杂性。此外,TE的部署和管理需要专业的技术和工具支持。

  • 潜在的单点故障:TE控制器作为集中式的控制单元,可能存在单点故障的风险。如果TE控制器出现故障,可能会影响整个网络的路由优化和流量管理功能。

2.5 Flowlet switching

这一节讲的主要内容感觉就是Packet Spray......

Flowlet是将每个流划分成多个较小的片段,每个flowlet可以独立地被重定向到不同的网络路径上进行传输。其核心思想是利用微片之间的空隙来动态调整流量的传输路径,从而实现更精细的负载均衡和网络资源优化。

2.6 Discussion

由于ECMP的效率低下,Hash冲突导致链路利用率低,这引发了性能不一致的问题。为了缓解这种情况,Meta在不同阶段,尝试采用静态路由、动态路由和流量工程改进了路由,以实现一致和高性能的AI训练。但是呢,问题依然没有彻底解决,还需要继续研究。

3.传输层

这一章主要讲了像AlltoAll这样的集合通信流量模式会导致瞬时缓冲区堆积和微突发,需要流量控制和拥塞控制,通过避免流量下降和提供可预测的尾部延迟来实现可预测的性能。Meta首先描述了最初利用DCQCN的尝试,然后描述了如何从DCQCN转向集合通信库层的接收端驱动的准入控制来管理拥塞。

3.1 实现

由于没有芯片开发能力,就只能各种调参,通过多种传输层配置,以在RoCE中实现高带宽、低延迟和可预测的延迟。通过快速识别和隔离故障网元、链路,达到最优性能。

3.2 拥塞控制

Meta发现在200G网络环境中使用的PFC+DCQCN方案在400G网络中并不好使了。

使用默认的 DCQCN 设置,并将 ECN 阈值比 200G 网络提高一倍后,性能反而下降了。进一步调查发现,400G网卡固件中的 DCQCN 实现发生了变化,并引入了Bug.

DCQCN调优面临挑战,Meta决定利用集合通信库控制infligt流量总量。

图片

通过接收端发送CTS控制消息给发送端,并且在交换机上为CTS数据包实施了高优先级队列,以加快通知速度并减轻潜在的带宽不足。但是,GPU线程上并发计算操作的资源争用,通道数量有限,还需要针对不同的作业类型进行调整,实际调整起来还是存在不少挑战。

3.3 Discussion

拥塞控制一直是RDMA网络研究的重点。DCQCN一直是以存储为中心的网络的“黄金标准”。然而,Meta在分布式AI训练工作负载方面的经验为定制拥塞控制算法提供了不同的视角。尽管关闭了DCQCN,并且有多个RTSW向deep buffers CTSW发送PFC,但在过去4年中,没有遇到CTSW持续向RTSW发送PFC。

4. 路由和拓扑的影响

图片

 作者画了一张图,分阶段统计不同优化方案对性能的影响。

第一阶段RTSW到CTSW的收敛比为1:1,性能极不稳定。

第二阶段的拓扑收敛比为1:2,依然抖动。

第一阶段的性能较低且不稳定是由于静态路由流量冲突造成的。虽然第二阶段的收敛比解决了性能影响,但该解决方案投资了2倍的网络基础设施。

第三阶段开启了流量工程,同时保持 1:2 收敛比,可以观察到其性能与第 2 阶段相似,但波动范围更窄。

第四阶段引入集合通信库去进行流量管理,进一步将带宽收敛比降至 1:1.125,以应对链路故障,并重新利用 ctsw 硬件。

结论

Meta通过调整网络拓扑、引入集中流量控制、放弃DCQCN、引入Deep buffers交换机和魔改NCCL等方式对RoCE性能调优,但似乎没有从源头上去彻底解决问题,只是把问题转移了。。。各RoCE网卡和交换机厂商就没法做出一款开箱即用的产品?

 

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐