公众号记得加星标⭐️,第一时间看推送不会错过。
Frontier 模型训练依赖于可靠的超级计算机网络,该网络能够快速地在 GPU 之间传输数据。为了提高速度和效率,OpenAI 与 AMD、博通、英特尔、微软和英伟达合作开发了 MRC(多路径可靠连接):一种新型协议,可提升大型训练集群中 GPU 网络的性能和稳定性。我们今天发布了 MRC(Multi-path Reliable Connections),通过开放计算项目(OCP)使更广泛的行业能够使用它。
每周有超过 9 亿人使用 ChatGPT,我们的系统正成为人工智能的核心基础设施,帮助世界各地的人们和企业构建功能日益强大的模型。在Stargate项目启动之前,我们与合作伙伴密切合作,历经数年精心开发、部署和维护了前三代超级计算机。这段宝贵的经验让我们坚信,为了高效利用 Stargate 规模的计算资源并成功完成使命,我们需要重新思考并大幅降低堆栈每一层的复杂性——包括网络设计。
发布 MRC 规范是 OpenAI 整体计算战略的一部分:关键基础设施层的共享标准有助于更高效、更可靠地扩展 AI 系统,并覆盖更广泛的合作伙伴生态系统。本文将介绍 MRC 的设计,包括:i) 它如何帮助我们构建多平面高速网络,从而创建冗余以应对网络故障,同时减少组件数量和功耗;ii) MRC 的自适应数据包喷射技术如何几乎消除核心网络拥塞;以及 iii) 我们的部署如何利用静态源路由来绕过故障并消除整类路由故障。这些优势共同作用,使我们能够更快地为所有人提供更优质的模型。
为什么网络需要新的设计
在训练大型人工智能模型时,单个步骤可能涉及数百万次数据传输。一次传输延迟可能会影响整个训练任务,甚至导致GPU闲置。网络拥塞、链路故障和设备故障是造成数据传输延迟和抖动的最常见原因。
随着集群规模的增大,这些问题会变得更加频繁,也更难解决。因此,网络技术成为星际之门设计中的关键组成部分。
为了实现星际之门超级计算机目前的规模,我们面临着两大关键的网络挑战。首先,我们应该尽可能减少网络拥塞的可能性。当然,也存在一些不可避免的瓶颈,例如两块GPU同时向同一目的地发送数据。但除此之外,我们应该通过设计来避免拥塞。
其次,我们需要尽可能降低网络故障对训练任务本身的影响。在足够大的规模下,即使是最好的网络也会持续存在链路和交换机故障。以前,单个故障往往会导致训练任务崩溃,迫使从保存的检查点重新启动,或者在网络重新计算路径期间停滞数秒。此类中断会消耗大量的 GPU 周期和时间。对于同步预训练(即多台计算机上的多个 GPU 协同工作以同步方式训练同一个 AI 模型)而言,这一点尤为突出。我们运行的任务规模越大,任何单个链路抖动或故障的影响就越大。这些工作负载就像一个“故障放大器”,因此防止这种情况发生至关重要。
我们的答案:MRC
我们的目标不仅是构建一个快速的网络,而且还要构建一个即使在出现故障的情况下也能提供非常可预测的性能的网络,以保持训练任务的进行。
为了实现这种可靠性,过去两年,我们的扩展团队与AMD、博通、英特尔、微软以及英伟达合作,致力于开发一种构建和运营网络的新方法。这项努力的成果是一种我们称之为多路径可靠连接(Multipath Reliable Connection,简称MRC )的技术. 这是一种内置于最新 800Gb/s 网络接口中的新型网络协议,它允许我们将单个传输分散到数百条路径上,在微秒内绕过故障,并运行更简单的网络控制平面。
MRC扩展了基于融合以太网的RDMA(RoCE)——一项InfiniBand贸易协会(IBTA)标准,该标准支持GPU和CPU之间硬件加速的远程直接内存访问。它借鉴了超以太网联盟(UEC)开发的技术,并利用基于SRv6的源路由对其进行了扩展,以支持大规模AI网络架构。
MRC 已部署在我们用于训练前沿模型的所有 OpenAI 大型 NVIDIA GB200 超级计算机上,包括位于德克萨斯州阿比林的 Oracle 云基础设施 (OCI) 站点以及微软的 Fairwater 超级计算机。MRC 已用于训练多个 OpenAI 模型,并利用了 NVIDIA 和 Broadcom 的硬件。如今,MRC 规范已作为开放计算项目 (OCP) 的贡献提供给社区使用和开发。
基础:多层网络
构建高弹性网络需要我们从具有足够自然冗余性的网络拓扑结构开始,这样即使网络中的链路或交换机发生故障,所有数据流也能获得良好的性能。
我们不再将每个网络接口视为一条 800Gb/s 的链路,而是将其拆分成多条较小的链路。例如,一个接口可以连接到八个不同的交换机。这样,您就可以构建八个独立的并行网络(或称平面),每个网络运行速度为 100Gb/s,而不是构建一个单一的 800Gb/s 网络。
这一改变对集群的结构影响巨大。一台原本能以 800Gb/s 速率连接 64 个端口的交换机,现在可以以 100Gb/s 速率连接 512 个端口。这样一来,只需两层交换机,就能构建一个完全连接约 131,000 个 GPU 的网络。而传统的 800Gb/s 网络则需要三到四层交换机。
![]()
最终得到的网络成本更低、功耗更低,并且与传统网络设计相比,路径多样性更高。此外,它还允许更多流量在 Tier 0 交换机附近传输,从而提升网络性能。
然而,所有这些路径多样性都难以充分利用。用于人工智能训练的传统网络协议通常要求每次传输都遵循单一路径,以确保数据包按顺序到达。在大型多平面网络中,这会产生两个问题:不同的数据流可能在同一链路上发生冲突并造成拥塞,而且每个数据流只能使用一个可用平面。如果我们不做任何其他改变,多平面网络将导致严重的拥塞和整体性能下降。
![]()
MRC 的转变:在数百条路径上Spraying packets
MRC 从根本上改变了这种模型。MRC 不再将传输分配给一条路径,而是将来自单个传输的数据包分散到网络中数百条路径上,覆盖所有不同的平面。数据包可能乱序到达,但所有 MRC 数据包都包含其最终内存地址,因此目标地址可以在数据包到达时将其送入内存。
![]()
每个 MRC 连接都会为其使用的众多路径维护少量状态信息。如果检测到某条路径拥塞,它会将其替换为另一条路径,从而平衡整个网络的负载。如果丢包,它会采取安全措施:假定该路径上的某些环节可能发生了故障,并立即停止使用该路径,同时重新发送所有可能丢失的数据包。MRC 弃用某条路径后,会发送探测数据包来检查是否真的发生了故障,如果确实发生了故障,则检查该路径是否已恢复。
故障并非丢包的唯一原因;另一个常见的丢包原因是目的地拥塞。MRC 通过数据包修剪来解决这个问题。如果交换机因拥塞而丢弃数据包,它会修剪掉有效载荷,只将数据包头部转发到目的地,从而触发显式重传请求。数据包修剪可以减少误报,避免我们错误地认为丢包意味着路径故障。
这种多平面拓扑、spraying、负载均衡和修剪等技术的结合,使得 MRC 连接能够在微秒级的时间尺度上检测到网络故障并绕过故障路由,从而最大限度地减少对同步训练作业的影响。相比之下,传统的网络架构可能需要数秒甚至数十秒才能稳定下来并绕过故障路由。
用源路由替换动态路由
MRC 使我们能够进一步简化网络。
传统上,交换机运行动态路由协议,例如边界网关协议 (BGP),来计算可用路径并绕过故障。但交换机是运行复杂软件的复杂设备。当它们出现不易察觉的故障时,这些问题可能难以诊断,并且在修复之前会导致连接中断。
有了 MRC,动态路由的必要性就降低了。如果数据包在某个路径上丢失,MRC 会停止使用该路径。我们采取了更为彻底的方法,禁用动态路由,转而使用 IPv6 分段路由(SRv6)。SRv6 允许发送方直接指定每个数据包在网络中的传输路径。它通过将交换机标识符序列嵌入到每个数据包的目标地址中来实现这一点。
![]()
SRv6 允许发送方对每个数据包到达网络的完整路径进行编码。由于路径是确定性的,发送方可以独立地应对特定路径上的拥塞或丢包情况。
具体来说:转发数据包时,交换机会检查自身标识符是否存在。如果存在,它会通过移动目标地址来移除该标识符,从而显示下一个交换机的标识符。然后,交换机会在静态路由表中查找该标识符,以确定数据包的下一个转发目标。与动态路由不同,静态路由表在交换机首次配置时就已配置好,之后无需更改。
MRC 使用 SRv6 将数据包散布到所有网络平面,以及每个平面上的多条路径。如果某条路径发生故障,MRC 会停止使用该路径。交换机无需重新计算路由,只需盲目地遵循已配置的静态路由即可。
这在生产中看起来是这样的
我们的训练网络拥有数百万条链路。虽然这些网络质量很高,但在足够大的规模下,链路抖动在所难免。在训练过程中,我们观察到零层交换机和一级交换机之间每分钟都会发生多次链路抖动,但 MRC 确保这些抖动对我们的同步预训练任务没有造成任何可衡量的影响。事实上,它们的影响非常小,以至于我们甚至不需要优先修复这些链路。
不仅仅是链路会发生故障。在最近一次针对 ChatGPT 和 Codex 的前沿模型训练过程中,我们不得不重启四台一级交换机。以前,重启交换机需要运维团队非常小心,以免中断训练。而有了 MRC,我们甚至无需与集群中运行训练任务的团队协调。链路修复也是如此。过去,我们需要与运维团队协调,在需要进行维护工作时禁用链路。现在,我们可以在链路仍在运行的情况下进行修复。如果链路运行良好,MRC 会使用它。如果链路运行不佳,MRC 会避免使用它,直到链路修复为止。
![]()
在 MRC 出现之前,如果 GPU 网络接口与 0 层交换机之间的链路发生故障,训练任务就会失败。而有了 MRC,任务可以继续运行并保持合理的性能。如果一个 8 端口网络接口丢失一个端口,最大速率会降低八分之一。MRC 会检测到这种情况,重新计算路径以避开故障链路,并立即通知对等节点不要使用该链路传输入站流量。大多数故障链路会在一分钟内恢复,此时 MRC 会重新启用该链路。
因 GPU 接口连接丢失而导致的运行速度下降,在不同的训练任务中有所不同,但在实践中,这种下降往往远小于物理容量的损失。
主要改进
MRC最终为我们扩展超级计算机带来了三个关键优势。
首先,它允许我们仅使用两层以太网交换机,为拥有超过 10 万个 GPU 的超级计算机构建多层高速网络。这为我们提供了足够的冗余来应对网络故障,同时比同等的三层或四层单层网络消耗更少的电力。
其次,MRC的自适应数据包喷射机制实现了良好的负载均衡,使得网络核心几乎没有拥塞现象。这大大降低了同步训练期间不同数据流之间的吞吐量波动,而消除异常值对于提升性能至关重要。这也意味着,当多个作业共享集群时,它们不会相互影响性能。
最后,MRC 使用 SRv6 源路由快速绕过故障,仅通过正常工作的路径发送数据包。这使我们能够运行一个简单的静态网络控制平面,并消除所有类型的动态路由故障行为。
打开协议
MRC显著提升了我们训练前沿模型的能力,并确保我们的网络能够跟上研究人员雄心勃勃的人工智能路线图。它相比以往的方法有了显著改进,并有助于我们加速实现让所有人都能可靠地享受到通用人工智能(AGI)带来的益处的目标。我们为促成这一成果的跨行业合作感到自豪。
随着训练集群规模的不断扩大,网络设计越来越决定着可用计算资源的实际利用率。MRC 帮助我们在网络拥塞、链路故障和维护事件等以往会中断训练的情况下,保持 GPU 的协同运行。在实际规模下,这种可靠性和效率并非锦上添花,而是同步前沿模型训练得以实现的关键所在。
(来源:openAI)
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第4399内容,欢迎关注。
加星标⭐️第一时间看推送
![]()
![]()
求推荐
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.