在过去的一年里,随着大模型的爆火,高性能无损以太网技术受到了空前的关注。在大模型的训练过程中,由于采用了分布式训练的并行技术,大量的训练数据和模型被分散于多机多卡上进行处理。因此极大地依赖于服务器间的高速网络来同步计算结果。为了确保训练任务的高效运行,承载这些训练任务的高性能网络底座必须满足大带宽、低延迟和极低的丢包率。本文将介绍我行在高性能以太网中实现无损传输用到的关键技术以及在未来大规模部署高性能网络所面临的挑战和解法,从而让大家对高性能以太网有更深入的理解。
作者:jaydenzang(臧杰东),基础科技产品部 | 网络技术岗
来源:TCTP
原文:https://mp.weixin.qq.com/s/Utmd6UmnyxD-qGYivnOdfQ
有损网络的产生原因
在以太网数据中心中,网络拥塞是除硬件故障外导致数据包丢失和网络性能下降的最主要原因。当一段时间流量内对网络资源(如链路带宽和交换机缓存等)的需求超出其供应能力时,网络拥塞就会发生。这种情况在多个数据源节点同时向单个节点发送大量数据时尤为明显。
上图为目前主流大模型训练中经常采用的三种分布式并行训练的通信模型:
- 数据并行:训练样本集拆分成多个mini-batch,在多个GPU中并行训练。GPU之间需进行模型参数梯度同步,通信模式多为跨节点allreduce,通信数据量在三种并行模式中较小;
- 流水线并行:模型不同 Layer 在不同 GPU上运行。主要涉及中间计算结果和参数节点间同步,通信模式以跨节点对点(P2P)通信为主,通信数据量较大;
- 张量并行:将模型拆分成多个子层在多GPU上运行。主要涉及中间计算结果(激活值、层参数梯度) 同步,通信模型以机内allreduce为主,通信数据量最大;
大模型训练中的通信量通常是以百GB为单位,在跨节点通信中网络拥塞的影响会更加突出。网络拥塞会导致训练节点间的通信时延大幅增加,尤其在流水线并行的计算过程中,因单节点的延迟带来的长尾效应的也更加明显。当发生严重的拥塞还可能会导致交换机缓存溢出,进而引发丢包。而高性能网络中采用的RDMA(远程直接内存访问)传输技术,在发生丢包时会采用Go-Back-N的重传机制,这又会触发大量的重传,从而进一步增加了网络的负担,并可能导致恶性循环的发生。
无损网络的实现技术
实现高性能以太网的无损传输,本质上是为了解决网络中的拥塞问题。在这个过程中,主要有流量控制和拥塞控制两个关键方面,通过这两方面的控制技术协同工作,以确保数据在高性能以太网中能够无损且高效的传输。
流量控制- PFC
流量控制的根本目的是防止数据包的丢失。在IEEE802.3标准中,规定了一种以太网PAUSE帧的链路层流量控制机制。这种机制本质上是一种端口级别的“停-等”机制:当链路中的下游设备检测到上游设备发送数据量过大超过了其缓存能力时,会主动发送PAUSE帧给上游设备,从而要求对端在规定的时间长度内停止发送数据。虽然以太网PAUSE帧可以通过停止上游设备发送数据而实现流量控制,但由于其作用于整个端口,会使该链路中所有数据帧都停止传输。对于在控制流量和业务流量使用不同优先级队列承载的高性能网络而言,因为业务流量的拥塞导致控制流量的暂停是不可接受的。
因此,在后来发布的IEEE802.1Q标准中,提出了PFC(Priority-based Flow Control)这一基于优先级的流控机制,以解决以太网PAUSE这一缺陷。PFC机制在以太网链路上创建8个虚拟通道,每个通道对应一个优先级的队列,允许针对链路中指定优先级的队列进行流量控制,同时不影响其他优先级队列中的数据帧传输。如下图所示,PFC反压帧只作用于接口的单个优先级队列,而不会对其他队列的数据传输产生影响。在以太网中,控制报文和业务报文、高优先级报文和低优先级报文通常使用不同的队列区分,防止因PFC流控机制影响控制报文的传输。
虽然PFC可以实现当链路拥塞时对于指定的队列不丢包,但是由于其直接对高速传输的流量“刹停”会导致节点之间数据传输延迟增大甚者停止通信。为此,除了链路级的流控手段,还需要通过拥塞控制手段来减少“PFC”触发的次数。
拥塞控制- DCQCN
拥塞控制的根本目的就是防止过多的数据注入到网络中。DCQCN(Data Center Quantized Congestion Notification) 是2015年由微软和网卡厂商Mellanox借鉴QCN和DCTCP等拥塞算法后提出的用于以太网数据中心的拥塞控制算法,目前主要应用在使用了RoCEv2协议的高性能以太网中。
DCQCN主要由三种角色实现:
- RP(Reaction Point):由流量发送方实现,当收到流量接受发发送的拥塞通知时进行flow级别的降速
- CP(Congestion Point):由网络中的交换机实现,当监测到队列发生拥塞时将数据包进行标记
- NP(Notification Point):由流量接收方实现,当收到被标记的数据包之后,产生流量拥塞通知报文并发送给流量发送方
如上图所示,交换机(CP)在端口的出队列方向设定标记阈值,当网络设备端口的出队列中的数据超过标记阈值时,也意味着该接口可能发生拥塞。此时,交换机按照一定概率对经过该队列的报文进行标记(将报文IP头部中的ECN字段置位),并将被标记的数据包正常转发给流量接收方(NP)。然后,当流量接收方的网卡收到被标记的报文后,会产生拥塞通知报文(CNP, Congestion Notification Packets)并发送给流量发送方(RP),以通知流量发送方进行降速。当流量发送方(RP)收到拥塞通知报文后,会针对CNP报文标识的发送流进行降速以缓解链路中出现的拥塞情况。由此,通过DCQCN可以大幅降低PFC触发的次数,即通过针对数据流级别连续的“点刹”来避免PFC直接“刹停”带给业务的显著影响。需要注意的是,从链路发生拥塞到流量发送方收到拥塞通知需要一定的时间或者因为拥塞通知报文在返回过程中丢失,原本的拥塞可能会仍会持续加重,此时仍需使用PFC机制来确保链路中不会发生丢包。
下图是使用ChatGPT所生成的PFC和DCQCN两种拥塞控制机制在处理拥塞时的对比,能够一定程度的展现DCQCN更优雅的“点刹”方式对于乘客体验更加友好。
大规模部署高性能无损以太网的挑战
在以太网中大规模部署高性能计算网络通常采用多级CLOS的架构来实现无阻塞的网络,其中网络中的交换机之间通过ECMP(Equal Cost Multi-Path)实现流量的等价多路径的负载均衡。ECMP通过对数据包头部中的五元组(源地址、目的地址、源端口、目的端口和协议类型)进行哈希处理,将数据包分散在不同的链路上以达到流量的负载均衡的目的。ECMP可以在网络流量由众多小流时可以达到较好的流量负载分担效果,是以太网中的重要技术。
然而,在高性能计算网络中,流量特征表现为通信流数目较少,单条流流量较大,呈现出低熵的特点。这种特性会使ECMP在哈希时的效果会受到影响,容易出现多条大流挤压在同一条链路上,造成链路拥塞。而同时因部分链路未被哈希到处于空闲状态。因此,由于多链路流量负载分担不均而导致的网络拥塞是使用以太网搭建大规模高性能网络的一个挑战。
虽然目前我行高性能计算网络集群尚未达到需使用多级CLOS组网的规模,但为了支持未来业务的发展,我们仍需进行深入的调研和探索,提前布局。在此先简单跟大家介绍下业界普遍的处理思路。
- 端侧路径规划,避免路径冲突
由于ECMP的路径选择仅与数据包的五元组相关,这意味着如果可以预先获取所有通信对之间的五元组在网络中的哈希结果,就可以在在每条流产生之时预知其在网络中确定的路径。阿里和腾讯等厂商使用自研的通信库ACCL和TCCL,通过枚举测试了集群中所有节点互访的五元组的流量,由此获得了在网络集群中所有通信对经过ECMP哈希后的流量路径。在后续进行分布式计算时,通过改变通信流五元组中的源端口即可为每条流量选择一条无冲突的路径,也借此避免了因ECMP流量负载分担不均而导致的网络拥塞。
- 网络双平面规划,避免平面间的路径冲突
为了防止单条链路或者单网卡硬件故障导致的计算任务中断,服务器的网卡普遍使用双网口分别连接两台leaf交换机组成一个bond口。但与此同时,也增加了ECMP哈希不均的可能性。如下图左侧所示,当服务器A的通过bond口的两个成员口给服务器B发送数据时,在服务器B的上联leaf交换机可能同时收到由不同spain交换机转发的服务器A的两个成员口的流量。此时在服务器B的上联leaf交换机到服务器B的出接口就会发生拥塞。
为了避免此类链路拥塞,可以采用双平面组网,将接入层leaf交换机按照双平面接入不同平面的spain交换机组,进而避免不同平面流量因ECMP哈希的随机性而引起的链路拥塞,如上图右侧所示。
- 网络设备更改多路径负载分担方式
针对网络设备使用ECMP在高性能以太网中的哈希不均的问题,业界提出了一些新的多路径负载分担技术。然而,这些新的技术都需要设备厂商和芯片制造商从硬件底层进行开发和适配。目前,主要有两类尚被未大规模使用的方案。
一类是使用自适应路由(Adaptive Routing)技术,通过感知链路中的负载情况,进而可以将数据包转发到负载最低的路径上进行传输,而不仅仅依赖于哈希结果来进行路径选择。这种技术可以更加灵活的响应网络中的实时负载变化,优化数据包的传输路径。
另一类方案是使用基于信元交换来代替传统的包交换,在转发过程中不依赖于数据包中的信息,有效的避免了由哈希算法引起的负载不均。如DDC(Disaggregated Distributed Chassis)技术通过把框式设备内部基于信元交换的功能分散到各独立的交换机中,使整网实现信元交换。
这两种实现方式目前尚在实验和探索阶段,尚未被大规模的部署和使用,但他们所展示了网络技术发展的潜在方向,对于未来网络架构的优化和提升具有重要的意义。
微众高性能无损以太网的解法
目前我行AI工程化底座在逐步推进中,在业务初期通过使用商用的交换机结合无损技术即可满足当下业务对于高性能网络的需求。如下图所示,通过多轨道流量聚合架构将不同服务器上位于相同位置的GPU网卡,接入到同一交换机的同一块接口卡中,使得同号卡互访走同一平面。充分利用框式交换机内信元交换的能力,避免了ECMP不均引起的拥塞,最大程度的利用同一平面的带宽能力。由于每个服务器有8张计算平面网卡,整个高性能计算网络平面从物理上划分为8个独立并行的轨道平面,为分布式训练中的同轨和跨轨提供了无阻塞的高速通信。
但未来随着我行高性能计算资源池的不断扩大、异构资源特别是国产算力资源的不断引入。在以太网中大规模部署高性能网络所面临的因ECMP哈希导致的网络拥塞的挑战,也成为了我们需要重点关注的问题。虽然业界互联网大厂和一些硬件制造厂商已经提出了各自的解决方案,但这些方案往往是基于单GPU厂商的高度定制化解决方案,亦或是使用了国外芯片制造商博通(Boradcom)和迈威尔(Marvell)的芯片来构建的自研交换机解决方案,无法适配我行的业务场景和需求。
作为一家金融机构,特别是一家数字银行,我们未来的方向会结合国产信创交换芯片,充分考虑金融场景下的RDMA高性能计算网络实际需求,打造一个既适配微众自身业务场景又能支持多GPU厂商接入的高性能网络平台底座。目前,我们的网络团队正积极基于国产12.8T信创芯片,探索和实验“Sonic+白盒交换机”方案。以期通过构建一个开放、低成本且自主可控的软硬件协同一体化的网络产品,在未来基于200G、400G高带宽RDMA通信的场景下,给出微众自己的大规模部署高性能以太网的答案。
我们对这一技术创新之路持乐观态度,但同时也清醒地意识到其中可能存在的挑战和不确定性。我们将继续努力探索和实践,践行微众人聪明、能干有激情的特点,在解决这些挑战上迈出坚实而稳健的步伐。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。