阿里巴巴服务器(阿里巴巴EFLOPS服务器集群架构简介)

EFLOPS服务器架构传统服务器架构的瓶颈主要来自内部PCIe Fabric树形互连。首先,传统的数据中心服务器通常只配备一个网络接口(独立网卡或者Bond网卡),当该服务器配备多个加速部件(比如GPU)并通过网络接口并发传输数据时,就会面临很大的流量汇聚,使其成为系统的瓶颈。而这种同步式的网络访问,在分布式AI训练任务中非常常见。AI训练的数据集一般被划分为多个批次,每个批次的数据处理完成之后,所有参与计算的NPU加速器都要进行梯度的同步。跨服务器的NPU梯度同步操作都要通过网络接口进行通信。这种周期性的同步式网络接口访问,势必导致网络接口上的拥塞。类似的端口拥塞还会发生在PCIe树形拓扑的跟节点处。分布式AI训练业务在每个批次的数据处理完成之后,会同步载入下一批次数据,导致内存的并发访问。其次,PCIe Switch端口上的拥塞可能导致整体通信效率的降低。当NPU1和NPU3同时向NPU2发送数据时,将会在与NPU2直接相连的PCIe Switch端口上形成拥塞。由于NPU1和NPU3到NPU2的通信距离不同,导致二者之间具有显著的带宽差异。而AI训练任务的梯度AllReduce是一个全局性的同步操作,其完成时间往往受限于最慢的链路,所以这种链路带宽的不公平性也会导致系统性能的下降。最后,出于种种原因,PCIe交换芯片往往只会实现一个虚拟通道,导致QoS能力缺失,这就使得服务器内各种流量没有隔离能力,形成带宽的无序争抢。EFLOP服务器架构重点解决上述互连问题,服务器配备了与加速器(NPU)等量的网卡(NIC),并将NPU和NIC进行绑定配对,每一对绑定的NPU和NIC处于同一PCIe Switch之下,约束NPU的网络通信只能经由自己绑定的NIC。这样,NPU的网络通信流量全部被局限在PCIe Switch之内,避免了网络接口上的拥塞。针对PCIe Switch引入的拥塞问题,在PCIe流量较大的情况下,禁用NPU之间进行跨PCIe Switch通信,使其通过网络接口进行数据交换,利用网络协议栈的流量控制机制来降低系统的拥塞程度。值得强调的是,网络化服务器架构是一个开放的架构,可为各种加速器提供高速互连,对于自带直连总线(如英伟达的 NVLink)的加速器同样兼容,利用其直连总线实现更高带宽通信。EFLOPS系统互连架构系统互连架构数据中心大多采用Clos拓扑,提供了高对剖带宽、可扩展的基础通信能力,但由于路径选择的哈希算法总是存在碰撞的可能,使得网络中的拥塞无法避免。相比传统仅优化拥塞控制算法的思路,EFLOPS从更上层架构进行网络流量管理,以彻底解决网络的拥塞问题。配合EFLOPS多网卡服务器结构,阿里巴巴工程师们出了BiGraph扁平化拓扑,分为上下两组,每组的交换机与另一组交换机全互连,同组交换机之间的数据交换需要另一组交换机转发,这样每一个交换机都扮演了Clos网络中的Spine和Leaf两个角色,最大跳步数仅为3,BiGraph拓扑具有如下两个重要的特性。1.它在两层交换机之间提供了丰富的物理链路资源。在N个计算服务器的系统中,两层交换机之间至少存在着N/2个物理链路可供使用。这意味着我们有机会将 Halving-Doubling AllReduce算法的所有连接一一映射到可用的物理链路上,避免它们之间的链路争用,以彻底解决网络拥塞问题。2.接入不同层次的任意两个计算服务器之间的最短路径具有唯一性。工程师可以充分利用这一特性,在通信库甚至更高层次进行服务器间通信模式的管理。比如,在建立连接的时候,选择合适源和目的服务器,来控制网络上的路径选择。Re-ranking Halving-Doubling算法示意图通信库软件是发挥BiGraph拓扑优势的关键,阿里巴巴自研了ACCL(Alibaba Collective Communication Library)集合通信库,首先它在物理网络中构建出BiGraph虚拟拓扑,然后基于该虚拟结构,实现无拥塞集合通信算法。无拥塞集合通信算法是阿里巴巴在标准Halving-Doubling算法的基础上,提出的一套新的Re-ranking Halving-Doubling算法,实现了通信连接与BiGraph拓扑的完美映射,从根本上避免选路冲突。相比最流行的Ring AllReduce算法,EFLOPS的算法更利于大规模性能扩展。Ring AllReduce非常适合传统单网卡服务器架构,每一步需要传输的数据量少而且采用单向环式的网络传输,但需要O(N)步执行,延迟随系统规模扩大而线性增加。 Halving-Doubling算法则是通过递增和二分的方式快速地实现数据传输,仅需要O(logN)步,但每一步要传输的数据量比 Ring AllReduce更大,这一特征恰好与EFLOPS的互连网络能力适配。Re-ranking Halving-Doubling算法的核心是根据每个进程的物理位置,重新排列该进程对应的排名,结合节点之间的同步策略,使得任何时刻任何点到点的数据传输都能独占一条物理链路,从而有效地避免了网络拥塞,理论上能够达到线速的传输。以8台服务器,每台服务器包含4个加速器的系统为例,对该算法进行说明,其中方形表示交换机,圆圈表示加速器,圆圈里的数字表示重新排列后新的排名。连线代表交换机之间的物理连接,不同颜色代表不同步骤下使用的路径。按照重新排列后,可以看到算法的任何一个步骤,同一个主机的四个加速器走的都是不同的直连链路,这样保证了数据经过的路径最短,且加速器间的数据传输路径没有冲突。通信性能对比图EFLOPS AI集群性能只要在多机多卡环境,不需要太大的规模,EFLOPS集群架构就可以发挥明显的性能优势。在一个64张GPU卡(NVDIA V100 32G 显存)的小规模集群中,AllReduce集合通信性能测试表明,采用不同的AllReduce算法,EFLOPS集群的硬件设计可以将通信效率提升2.3~11.3倍。EFLOPS算法架构协同算法可以将通信效率进一步提升1.4~7.3倍。随着系统规模的增长,网络拥塞概率的增加,EFLOPS AI集群的通信性能优势更明显。在该64 GPU卡测试场景中,拍立淘百万分类 大模型的端到端性能提升了2.2倍。对自然语言处理领域广泛应用的BERT预训练模型进行评测在EFLOPS集群中,BERT的通信开销得到了大幅降低,仅使用EFLOPS硬件即可获得2倍通信性能的提升,叠加ACCL通信库支持,整体性能提升了2倍,通信性能提升了4倍。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/36610/