高性能计算和深度学习工作负载对延迟极为敏感。数据包丢失会导致通信管道中的重传或停顿,从而直接增加延迟并中断 GPU 之间的同步。这可能会降低集合运算(例如 all-reduce 或 broadcast)的性能,因为这些运算需要每个 GPU 的参与才能进行。
本文重点介绍基于 NVIDIA 以太网的东西向 AI 网络解决方案 Spectrum-X。我从 AI 工作负载的角度讨论了 AI 结构的弹性、链路翼的后果、链路故障,以及 NVIDIA 集合通信库 (NCCL) 。
丢包灵敏度
NCCL 专为高速和低延迟环境而设计,通常通过支持 RDMA 的无损网络 (例如 InfiniBand、NVLink 或适用于 Ethernet 的 Spectrum-X) 实现。其性能可能会受到网络事件的显著影响:
- 延迟和抖动: NCCL 的集合运算依赖于 GPU 之间的紧密同步。高延迟或抖动可能会中断计时,并降低整体效率和 AI 工作负载性能。
- 数据包丢失和超时: NCCL 通常采用可靠 (lossless) 的传输层,并且不实施重度错误恢复机制。数据包丢失或超时可能会导致通信错误、性能降低或 NCCL 操作中断。
为获得最佳性能,NCCL 应在网络上运行,并尽可能减少延迟、抖动和丢包。
当我谈到 packet loss 和 timeouts 时,假设 fabric 完全无损。Spectrum-X 具有完美的 SPCX-CC 机制,因此 packet loss 的唯一来源是 link-failure 和 link-flap 事件。
链路故障和链路翼通常由数据平面和控制平面功能无法控制的外部因素引起。它们通常是由于环境条件造成的,例如连接器中的灰尘、光纤问题或光学组件和 IC 的过高温度或平均故障间隔时间 (MTBF) 导致的光模块故障。
得益于 Spectrum-X 拥塞控制,您可以避免无损网络中因队列和拥塞而导致的数据包丢弃。但是,您无法避免数据包丢弃,因为接口下降,甚至更糟的是,数据包丢失。这种下降可能会对 AI 工作负载和 NCCL 集合产生严重影响。
NCCL 依赖于自定义通信协议,这些协议承担近乎完美、可靠的数据传输。与使用鲁棒纠错或重传策略 (例如 TCP) 的协议不同,NCCL 设计期望尽可能减少数据包丢失以保持高性能。由于系统必须等待错误恢复,即使是少量的数据包丢失也会引发延迟,从而降低整体吞吐量和训练 LLM 所需的时间。
NCCL 还经常采用流聚合和流水线通信来更大限度地提高带宽利用率。丢包会中断这种流畅的数据流。当数据包丢失时,整个 pipeline 可能会停止,直到恢复机制开始运作,从而降低 pipelining 的优势,并导致有效吞吐量显著下降。
NCCL 通常部署在具有低丢包率的高性能数据中心网络结构 (例如 NVLink、InfiniBand 和基于 Ethernet 的 Spectrum-X) 上。
为实现这一目标,其 communication routines 得到简化,错误检查和恢复 overhead 最低。
当丢包接近于零时,此方法非常有效,但如果丢包,则没有太多的内置冗余来快速纠正它。当在丢包率较高的网络 (如传统 Ethernet 网络) 上使用时,或者由于链路翼导致丢包率不可避免的环境中使用时,系统可能会遇到 NCCL 设计中没有预见到的意外重传,从而导致过度的性能下降。
总之,NCCL 对丢包的敏感度源于其对紧密合的低延迟通信协议和优化的数据流策略的依赖。即使是轻微的数据包丢失也会中断同步、强制重传并导致性能显著下降,因此可靠、高质量的网络条件对于实现 NCCL 高性能至关重要。
提高 AI 数据中心网络的弹性
对于不可避免的丢包事件,例如链路故障或链路翼,您必须确保最大限度地减少网络收所需的时间,并且网络能够以一致和确定的方式收,而不管其规模和大小如何。从 NCCL 和 AI 工作负载的角度来看,这一点极其重要,因为它会影响训练时间以及 NCCL 根据每个故障事件的行为方式。
根据现代 AI 数据中心网络的设计,为了提供弹性和收敛,我们依赖于强大且可扩展的 BGP 及其功能。链路故障等事件会导致拓扑发生变化,并导致整个网络重新计算最佳路径、重新平衡 Equal-Cost Multipath Routing (ECMP) 组,以及更新和传播加权 ECMP 信息。
另一方面,BGP 在后端的运行方式可能会造成一些情况,从而阻碍要求严苛的 AI 网络的快速收敛目标。
随着 GPU 集群规模随着 GPU 数量的增加而扩大,BGP RIB 和路由表也在增长。集群中的 GPU 数量与路由表大小之间存在一对一的关系。
BGP 最初的设计方式是强制 BGP 重新计算每个前缀的最佳路径,并且此类信息需要在整个网络中传播。由此可见,集群规模越大,BGP 收敛速度越慢。加权 ECMP 数据的传播速度较慢。NCCL 经历中断的时间会增加。因此,LLM 训练作业需要更长的时间,并且无法在确定的时间范围内完成。
因此,您需要 BGP Prefix Independent Convergence (PIC) 等机制,并且可以使用它为您的 AI 结构利用最佳收敛时间。BGP PIC 的优势在于以 ECMP 或预先计算的备份路径的形式存在多个到达目的地的路径。
BGP PIC 简介
默认 BGP 收 vergence 依赖于 prefix,BGP 本身会按 prefix 处理和更新每个 route。
下面我们将深入探讨为什么会出现这种情况:
- 前缀路由处理
- 独立决策
- 计时器和传播延迟
- 可扩展性挑战
本质上,默认的 BGP 收依赖于前缀,因为协议旨在处理单个前缀级别的路由决策、更新和提取。这种设计虽然灵活且精细,但在大量前缀受网络事件影响时,会导致收速度变慢。
前缀路由处理
BGP 将每个网络前缀视为独立的路由。当发生更改(例如链路故障或策略更新)时,BGP 必须单独评估和更新每个受影响前缀的最佳路径。
如果故障影响多个前缀,则每个前缀都会经历各自的收敛过程。
独立决策
BGP 的最佳路径选择算法分别为每个前缀运行。按前缀评估本地偏好、AS 路径和 MED 等属性。没有适用于前缀组的集合决策过程,这有助于实现收的前缀依赖性。
计时器和传播延迟
每个前缀都应用了 Minimum Route Advertisement Interval (MRAI) 计时器等机制。
当路由被撤回或更新时,每个前缀可能会受到其自身 timer 延迟的影响,随着前缀数量的增加,这会进一步延长总体收敛时间。
可扩展性挑战
在具有数百万个前缀的大型网络中,需要单独处理每条路线可能会导致严重的延迟。这就是为什么开发 BGP PIC 是为了预计算备份路径,并实现更快的恢复,而无需等待每个前缀单独收敛。
总结
BGP PIC 为大规模 AI 网络结构中的弹性问题引入了一种新的解决方案。它可更大限度地减少超大规模 GPU 集群的收敛时间 (缩小到小型网络) ,使前缀数量独立于收敛时间。这使得 NVIDIA Spectrum-X 成为市场上独一无二的解决方案。
BGP PIC 和 Spectrum-X 使 NCCL 作业和 AI 工作负载在连接故障和 flaps 方面更具弹性,并且在训练 LLM 的时间方面具有确定性。
有关更多信息,请参阅以下资源: