本文主要探讨网络在人工智能(AI)/机器学习(ML)工作负载,特别是训练和推理工作负载中的核心作用,包括数据传输协议以及拥塞控制方面的内容。
在AI/ML领域,处理大规模数据集是一项至关重要的挑战。将计算密集型任务转移至GPU已成为加速这一过程的普遍做法。然而,由于数据量和模型复杂度(如大型语言模型LLM)往往超出单个GPU的内存限制,因此,通常需要多个GPU协同工作,以确保合理的作业完成时间,这在训练阶段尤为显著。
为了应对这一挑战,我们需要根据特定的AI/ML框架和实际应用场景,灵活地在GPU节点集群中分配数据和计算资源。在此过程中,一个不可忽视的问题是AI数据中心的高昂成本,这主要源于大量GPU的使用。因此,构建一个高效连接GPU节点的高性能网络显得尤为重要。任何网络层的延迟都可能降低GPU的利用率,进而延长作业完成时间。
远程直接内存访问(RDMA)技术,这一源自高性能计算(HPC)领域的创新,现已在AI/ML集群通信中得到了广泛应用。RDMA技术能够在多个计算资源与GPU(GPU节点)的远程内存之间实现零拷贝传输,从而显著提升数据传输效率。这一技术依赖于网络接口卡(NIC)中实现的可靠连接(RC)传输协议,该协议几乎不会对CPU或GPU造成额外负担。值得注意的是,RC协议最初是为InfiniBand网络设计的,它要求网络必须是无损的,并且数据包必须按顺序传输。
在AI/ML训练集群网络领域,以太网正逐渐被视为InfiniBand的有力竞争者。为了在以太网上实现RDMA功能,RDMA over Converged Ethernet诞生了,目前已迭代至ROCEv2。这一方案巧妙地将RDMA/RC协议数据包封装在UDP数据包中,使得数据能够顺利地在以太网上传输。
以太网架构常采用Clos拓扑,包含Leaf层和Spine层。为了提供无阻塞网络,所有Leaf到节点端口的累计带宽必须小于或等于所有Leaf到Spine上行链路端口的总带宽。这样的设计旨在保障每个节点都能充分利用其带宽资源,而不会因Leaf和Spine交换机之间的连接而减慢速度。
在Spine-Leaf架构中,拥塞主要表现在三个方面:
1.Leaf->Spine之间(Leaf端口向Spine的TX队列):从Leaf交换机到Spine交换机的数据传输过程中出现拥塞。Leaf端口的 TX 队列可能会出现拥塞,从而影响这些交换机之间的通信。
2.Spine->Leaf之间(Spine端口向Leaf的TX队列):拥塞发生在从Spine交换机向Leaf交换机传输数据的过程中。Spine端口的TX队列可能会遇到拥塞,从而影响这些交换机之间的通信。
3.Leaf与节点之间(Leaf端口向节点的 TX 队列):从Leaf交换机到各个节点的数据流可能会发生拥塞。Leaf端口的 TX 队列可能会发生拥塞,从而影响Leaf交换机与所连接节点之间的通信。
在此示例中,连接到一个Leaf交换机的 GPU 节点有两条潜在路由,用于与链接到另一个Leaf交换机的 GPU 节点进行通信。GPU 节点 1 和 2 可以通过“Leaf 1、Spine 1 和Leaf 2”或“Leaf 1、Spine 2 和Leaf 2”与 GPU 节点 3 和 4 建立连接。Leaf交换机采用等价多路径 (ECMP) 负载平衡算法来决定要采用的路径。
ECMP 通过根据传入数据包的特定属性(例如源/目标 IP 地址、源/目标端口和协议)生成哈希来运行。具有匹配哈希的后续数据包将被定向到通往Spine的相同上行链路,形成 ECMP 中所谓的“流”。可以使用各种方法(如哈希阈值映射或模数 N 映射)确定此流到上行链路的映射。ECMP 旨在将数据包均匀分布在可用的上行链路上,同时保留每个流内的数据包顺序。此方法对于典型的基于 TCP 的应用程序非常有效,在这些应用程序中,分布在多个节点上的大量短暂会话会为每个会话创建不同的哈希,从而确保分布在不同的上行链路上。
然而,长寿命流也带来了挑战。在多个高带宽流被散列以共享同一上行链路的情况下,它们可能会超出该特定链路的可用带宽,从而导致拥塞问题。
查看上图,Leaf到Spine层在两条路径上提供 200Gbps 的总带宽。GPU 节点 1 生成两个长寿命流:一个通过第一条路径消耗 70Gbps,另一个通过第二条路径消耗 30Gbps。GPU 节点 2 生成利用 70Gbps 的长寿命流。虽然第二条路径有足够的容量来处理此流,但 ECMP 算法可能会将其放在第一条路径上,而第一条路径只剩下 30Gbps 的容量。这种不匹配可能会使第一条路径过载,导致Leaf端口的 TX 队列拥塞,并最终导致数据包丢失。这种次优分布的根本原因在于 ECMP 的简单性,它在路径选择中缺乏对链路利用率和质量的考虑,而是依赖于基于流计数的基本机制。
在此配置中,链接到Leaf 2 的 GPU 节点 2 和连接到Leaf 3 的 GPU 节点 3 正在同时以全带宽传输数据,每个节点都向连接到Leaf 1 的 GPU 节点 1 贡献 100Gbps 流量。Leaf 1、2 和 3 冗余连接到两个主干,每个Spine都配备 100Gbps 连接。每个Leaf和Spine层之间的总可用带宽为 200Gpbs。
但是,如果Leaf 2 和Leaf 3 都将其上行链路利用到同一个Spine,则Spine端口朝向连接到接收 GPU 节点的Leaf交换机的 TX 队列将遇到拥塞。
第二个潜在拥塞点发生在Leaf交换机与节点之间的通信中,特别是当多个发送方向单个接收方传输数据,超出接收方的带宽容量时。这被称为“incast”拥塞。
假设所有节点端口的带宽容量为 100Gbps,则 GPU 节点 1 和 2 共同满负荷传输,总计 200Gbps。Leaf到Spine层可以充分处理发往接收器所连接的Leaf交换机的流量。但是,GPU 节点 3 所连接的Leaf端口的带宽容量仅为 100Gbps。因此,由于端口容量有限(假设没有流量控制或拥塞管理),发往该端口的流量中有一半将被丢弃。
传统的 ECMP 可能会导致网络利用率不理想、Leaf交换机和Spine交换机之间的拥塞和数据包丢失,尤其是在 AI/ML 工作负载中普遍存在的长寿命高带宽(“大象”)流的情况下。此外,当发送方的总带宽超出接收方的容量时,Leaf到节点端口的拥塞可能会导致数据包丢失。
为了实现更好的网络利用率,出现了一些增强的负载分配技术,例如动态负载平衡 (DLB),它提供基于“flowlet”的平衡或数据包喷洒,它按每个数据包分配流量。但是,DLB 可能不适用于 RDMA 流量,并且数据包喷洒可能导致无序数据包传送。
在以太网结构中,有损网络的挑战通常在协议级别(例如 TCP)或应用程序级别(例如 VoIP 与 UDP)进行管理。然而,使用 RC 协议的 RDMA 带来了挑战,因为它最初是为提供无损和有序数据包传输的 InfiniBand 结构设计的。RC 协议对丢包和无序数据包传输高度敏感。在 RC 中,数据包是按顺序排列的,如果它们被丢弃或无序到达,NIC 可能会根据“后退 N”机制请求重新传输,该机制会从最后一个确认的数据包重新传输所有数据包。由于丢包导致超时,甚至可能需要断开连接并重新建立连接。这会大大降低通信性能,从而导致 GPU 利用率降低和 AI/ML 集群中的作业完成时间延长。
为了解决 ROCEv2 以太网中的丢包、无序传送和拥塞问题,必须采用替代机制。
RoCEv2 的fabric要求目前是如何实现的?
Fabric的核心要求在于确保数据包的无损传输,这一点通过基于优先级的流量控制(PFC)技术得以实现。PFC设有8个独立的优先级,允许接收器在必要时暂停与其直接相连的发送器的数据传输。具体而言,当接收器的缓冲区填满至预设阈值时,它会向发送器发送暂停帧,指示其暂停发送更多数据帧。为确保发送器能及时响应且接收器能处理现有数据,该阈值需设定得足够低。暂停帧中还包含一个可选的超时设置,若设为0,则意味着请求立即恢复发送。一旦接收缓冲区的数据量降至另一预设阈值以下,接收器便会发送消息以恢复数据传输。
然而,PFC技术也可能引发一系列网络问题,如队头阻塞、拥塞扩散乃至死锁现象。为应对这些问题,人们通常将显式拥塞通知(ECN)与PFC结合使用。ECN机制能够提前向流量源报告网络中的潜在拥塞情况,从而促使其降低数据注入速率。每个RoCE队列对(QP),即与应用程序通信的发送和接收队列相对应的NIC硬件资源负责控制其注入速率。
在启用ECN的环境中,两个端点(NIC)以及它们之间的所有中间交换机均需支持此功能。网络设备通过IP标头中的TOS字段的ECN子字段来标记数据包。当带有ECN标记的数据包抵达目标NIC时,目标NIC会向源NIC发送拥塞通知数据包(CNP)。源NIC接收到CNP后,会根据其中指定的QP降低其注入速率。此外,交换机上也设置了ECN阈值,作为出口队列的拥塞判断标准。一旦出口队列的数据量超过此阈值,交换机就会开始对该队列上的数据包进行ECN标记。
RoCEv2 的 PFC 和 ECN 组合常被称为数据中心量化拥塞通知 (DCQCN)或RoCEv2 拥塞管理 (RCM)。PFC 和 ECN 阈值的设置需要注意确保 PFC 不会触发得过早,也不能触发得过晚。关于这一方法的详细阐述与研究,可参阅论文《大规模RDMA部署的拥塞控制》
(文末附链接)
DCQCN技术作为当前最流行的解决方案,已在RoCEv2部署中取得了显著成效。然而,正确配置PFC和ECN阈值并非易事。此外,为了实现网络利用率的最大化,我们还需要在网络负载上找到一个良好的平衡点,后续有机会我们再重点讨论。
https://blogs.juniper.net/en-us/industry-solutions-and-trends/ai-ml-data-center-networking-on-ethernet
《大规模RDMA部署的拥塞控制》:
https://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p523.pdf