通用人工智能离我们越来越近,全世界的关注和投入正在带来日新“周”异的变化。回顾人工智能的诞生和发展历程,人类计算能力的进步几乎牵动了每一次的重大技术突破,当前的大模型热潮更是如此,只是动辄千万亿参数级的模型体量,所需计算资源远超单颗芯片的上限,超大规模的计算集群成为支撑技术发展和应用创新的关键基础设施。
面向智能:云基础设施网络技术面临新挑战
如何突破单个芯片、单个服务器节点的算力上限,在超大规模情况下保障计算性能可以线性拓展?阿里云基础设施事业部推出可预期网络(Predictable Network),以满足计算任务中的过程数据高效交换需求,是大规模RDMA网络部署实践中不断总结并创新而来的网络技术体系。相比于传统网络的“尽力而为”,可预期网络的概念代表了应用场景对网络服务质量更高的要求,让吞吐率、时延等关键性能指标“可预期”,具备质量保证(QoS)。
阿里云可预期网络技术体系在架构设计、传输协议、通信库、网络资源调度、网络容器、服务化等维度展开,正在通过智能计算灵骏,为人工智能、大数据分析、高性能计算等高密度计算场景提供服务。
大模型训练:对计算网络带宽、时延极度敏感
不同的应用场景对网络需求不同,在常见的视频服务、即时聊天等场景,网络端到端时延控制在数十毫秒(ms)级即可满足需求,常见的带宽需求在数十Gbps量级。分布式AI训练的场景因算力需求量大,一个计算任务会通过多种并行策略分配给多个计算节点完成,训练过程属于多轮的迭代计算,每一轮的迭代完成后才能启动下一轮,直到训练任务完成。
以128台GPU服务器节点进行GPT-3 175B训练为例
并行策略示意[1]
一次训练任务通常是多种并行策略混合使用,加上大量的过程数据同步,是典型的大规模高复杂度通信场景,任何一个字节的延迟,都会将整体任务的完成时间拉长,甚至是任务失败,并且在并行计算节点增加时通信复杂度指数级提升。
超大规模计算系统的稳定性魔咒
为了追求更高的训练速度和模型性能,175B的GPT-3训练通常以数据并行的方式进行,会使用数百台GPU服务器节点(数千张专业计算卡),随着模型规模和训练效率需求的进一步提升,“万卡级”超大集群将成为必选项。并且一次训练往往需要需要几百甚至上千小时才能输出最终的可用模型,中间出现任何故障导致中断,都要花费相当长的时间进行资源重新分配和任务重启,并且会损失掉未存档的训练进度。
在这个计算系统中,每个部件都有概率出现异常,系统越大,整体出现问题的概率就越高,例如网络的抖动、板卡的故障、GPU的故障等不可避免,可以认为服务于大模型的计算集群,稳定性保障是业界普遍面临的难题。
Severless:旧时堂前燕,飞入百姓家
云计算为用户提供易用灵活、可扩展、低成本的算力服务,代表更先进的算力使用方式。大模型训练所需的计算系统的“云化”、Serverless化可以实现便捷的资源共享,使高昂的系统建设成本转化成平滑和普惠的业务运营成本,对于促进创新和产业升级意义重大。目前主流的方式是基于容器开展训练任务部署,容器化也是实现计算资源共享(多租户)、弹性伸缩的基本前提,于是“容器网络”便成了刚需:在物理网络之上建立虚拟连接以提供RDMA服务。但是物理资源虚拟化天然会产生性能损耗,而大模型训练是性能敏感型应用场景,如何实现网络“容器化”,同时不带来高昂的虚拟化性能开销是一个新的难题。
最重要的决定:Infiniband or Ethernet
如果以武侠人物类比,24岁的IB网络就像古墓派的小龙女,51岁的以太网就像郭靖,他们都是武学宗师,但是小龙女精于一派,郭靖师友广泛,集各种神功于一身。IB网络发源于高性能计算,在集群数据传输性能上做了诸多优化,性能指标本身对比以太网更优;而以太网络诞生之初就是为了支撑更广泛的连接,具备更好的普适性,云数据中心的迅猛发展依托于以太网,以太网也因此获得了弹性可拓展、网络虚拟化、多租户支持等开放生态带来的优势。
为了确保基于更优的技术路线开展研发工作,阿里云在做抉择的过程中也进行了充分的对比和分析。
性能对比
性能对比从基准性能、传输优化、模型训练整体性能三个层次进行IB网络和以太网络分析比对。
基准性能:转发时延、吞吐性能
下图是实验环境的测试结果,在转发数据较小(消息较小)的时候,IB延迟更低,有1us(微秒,千分之一毫秒)左右的优势,随着转发数据的逐渐增大,以太网络逐渐追平并且最终反超。在单网口吞吐性能方面,IB网络和以太网都可以接近理论上限。在高性能计算应用场景的通信模型以小数据通信为主,时延敏感,而大模型的分布式训练场景通信数据量较大。
传输优化
流量控制
IB网络需要在无丢失环境下达到最优的传输性能。为了保障网络中不出现拥塞丢包,设计了逐跳的Credit-based Flow Control,通过提前分配下一跳交换机内的缓存资源,使得任何一个数据包到达接收侧时,一定有可用缓存容纳,最终达到不丢包的目的。IB网络还配合设计实现不同流量之间的缓存共享策略,优化传输效果。
以太网通过Priority-based Flow Control (PFC) 实现类似无丢失能力。在接收侧即将耗尽缓存资源时,提前通知发送侧对应优先级停止发送,达到避免拥塞丢包的目的。但在实际大规模部署中,无丢失的流量控制引入了上下游交换机之间的互相依赖关系,在极端情况下会出现大规模流量反压形成流量风暴,甚至形成循环依赖,最终导致网络死锁发生。由于Credit-based Flow Control和Priority-based Flow Control核心原理类似,因此都存在上述风险。
灵骏的集群网络设计部署了lossy以太网,配合端到端高精度拥塞控制算法(HPCC),从而实现了在关闭Priority-based Flow Control的情况下提供与无丢失环境相当的网络传输能力。
负载均衡
IB网络在充分利用网络多路径资源上采用了Adaptive Routing技术。交换机在转发流量时,通过感知路径上链路的拥塞情况,将流量按比例分散至不同路径,从而实现了细粒度的负载均衡。不过由于公开信息有限,目前无法确定具体的实现机制。
传统以太网构建的数据中心网络通过Equal-Cost Multi-Path Routing(ECMP)实现负载均衡,即对五元组的哈希将不同流映射至不同路径上。这种负载均衡方式的网络流量特征是大量小流的情况下可以比较理想地均衡网络负载,但是AI训练的流量特征是同时存在一定数量的大流,这在哈希不均时会出现长尾时延,从而影响训练效率,这也是通过以太网支持大规模机器学习训练的一个挑战。
模型训练性能
最后再对比一下在实际训练大模型时IB网络与以太网的性能表现。
评价模型训练效率最直接的判断指标就是训练速度:单位时间可以完成对多少输入数据量的训练。在NLP场景下,训练的输入是切分之后的语句,也就是tokens。下图给出了训练不同规模的GPT模型的训练速度。其中IB网络的结果来源于NVIDIA公开的测试结果[2],以太网络的结果来源于灵骏实际测试,对比中所有模型参数都保持相同。
需要注意的是NVIDIA的公开数据单机网络带宽为1.6Tbps,而灵骏的标准售卖单机网络带宽规格为800Gbps。
可以看到,基于IB网络确实可以达到更优的训练性能,但其中还包含了整机带宽翻倍带来的影响;即便如此,以太网络在单机网络800G总出口带宽情况下的性能与IB网络 单机1.6T 总出口带宽的性能非常接近,只有约5%的性能损失。
集群拓展性对比
基于IB网络和以太网络都可以实现超过一万张GPU组成完整的训练集群。然而具体的组网架构方案则不尽相同。
其中,交换机芯片转发能力是决定集群规模和集群架构复杂程度的关键因素。更高的芯片转发能力意味着:
•单台交换机下可以容纳更多机器和GPU卡,更多机器之间可以直接互联,从而享受到最优的,无竞争的传输能力;
•相同网络架构设计下可以容纳更多的机器,从而提供更大规模的组网能力,这在面对万卡组网的需求下就变得非常重要。
下图展示了IB网络和以太网交换机芯片转发能力的演进情况。从当前时间节点来看,以太网的转发能力也是IB的一倍。并且以太网的转发能力稳定保持在每2年翻一番。这也是以太网在之后长期演进中将会保持核心竞争力的一个关键因素。
IB网络集群采用了典型的三层CLOS架构来支持万卡规模的集群拓展性。在灵骏网络中,我们充分利用了以太网更大容量芯片转发能力这一优势,原创性地设计出了两层交换机支持万卡互联的HPN架构,详见后文。
稳定性对比
前面有提到,系统设备越多,发生故障等异常情况的概率就越高。尽管IB网络和以太网都在保障设备可靠性上有持续的投入和优化,但是当考量集群整体故障率时,以太网因单设备吞吐更高而所需的设备总量会减少,这将大幅度提升系统整体的稳定性。
另外一个提升稳定性的维度是网络结构设计,双上联(即一个网卡的两个端口连接不同的交换机,互为备份)可以在某个链路出现异常时将流量快速切换,减少故障影响面。
IB网络可以支持双上联,代价是浪费50%的交换机端口带宽,而以太网的双上联则可以充分利用带宽。
Severless和算力服务化的亲和性
多租户支持
大模型热潮带来了更广泛的训练和推理需求,如何如何高效、安全、稳定地提供多租支持是基础设施网络选型的一个重要考量因素。
以太网在云计算和数据中心的发展过程中广泛应用,基于以太网的一整套虚拟化网络技术体系在易用、安全、拓展性、隔离性、稳定性等方面久经考验。基于以太网构建异构计算集群、为上层业务提供云原生的服务可以在很大程度上复用已有的能力。
而IB网络的优化更大程度上面向单一用户场景,保障单一用户的服务更优,面向多用户的场景设计和实现并不充分,目前仅基于Partition key将IB网络进行网段拆分以提供给不同的用户使用,无法解决用户间的流量和资源平衡调度,使用者无法灵活定义网段资源,并不是真正的虚拟化实现,牺牲了弹性和拓展能力。
管理和运维
IB网络的设计目的是为了解决高性能计算机系统内的网络通信问题,因此使用IB网络的集群仍需额外部署一套基于以太网络的运维系统,天然需要维护两套独立的网络系统,对于整体的建设成本、运维和管理都增加了额外的开销。
以太网可以提供一网统管的方案,极大的降低系统的复杂度,实际部署中仅成本项就可以获得30%的降低(OPEX)。
左:IB网络;右:以太网络
技术和产业生态
InfiniBand成立了IBTA标准化工作组,但是目前由单一供应商提供成熟的商用解决方案。Ethernet对应的Ethernet Alliance有17位主要成员,且保持着活跃的开放生态,有多家供应商可以提供相当水准的高性能网络设备和解决方案,不同供应商的设备之间也都保持了良好的兼容和互通性。开放生态使得基于Ethernet的基础设施网络演进可以避免单一厂商带来的成本、供货、故障定位、售后等问题,从而使运营方更加专注于网络本身的设计、建设、交付以及运营。
选型总结
从训练性能上看InfiniBand表现出更优的性能,但是经过优化后Ethernet性能差距可以控制在5%甚至更小的范围以内,而在构建完整的云服务方面Ethernet表现出更多的优势。
因此,阿里云的智能计算集群灵骏选取了基于Ethernet的网络方案。考虑到相关技术和产业的发展趋势和开放生态,相信Ethernet将成为大规模机器学习/深度学习场景的主流网络方案。
灵骏可预期网络-为AI打造高性能网络基础设施
HPN-高性能网络架构
High Performance Network(HPN)的设计旨在解决大规模复杂计算系统的稳定性、拓展性和负载均衡相关的问题:
•稳定和高可用:当前AI训练都要求持续几天甚至几个月稳定运行,期间任何单点故障都会导致整个训练任务中断,基础设施网络需要提供严格的可靠性保障。
•拓展性和性能线性度:基于传统CLOS架构需要3层网络架构设计才能完成万卡互联。3层网络架构不仅导致了基础延迟和成本的增加,同时路径跳数多也加剧了哈希不均的风险。
•负载均衡性:基于ECMP的交换机负载均衡机制在AI训练场景下有一定概率造成负载不均,进而引发整体训练效率下降。
为了解决上述问题,HPN主要进行了如下的核心架构创新设计:
双上联-稳定性和无损升级保障
传统网卡单上联的架构下,无论光纤或交换机异常,都会导致训练任务中断。交换机升级期间,业务也需要提前迁移。这对用户体验、系统稳定性以及网络运维都带来了很多问题。
在双上联架构下,服务器上所有网卡的两个端口分别上联至不同交换机,并将两个端口共同组成一个bond端口提供服务。这样在一个上联链路或者对应接入层交换机出现故障时,流量可以切换至另一个端口,从而保证训练任务不中断。
双上联架构设计避免了网卡单上联接入交换机带来的单点故障风险,极大提高了整体系统互联的鲁棒性。此外,这也为集群系统的交换机热升级创造了条件,使得整体网络运维和功能迭代变得更加方便。
需注意的是:双上联在提高系统可靠性的同时也加剧了ECMP哈希不均的可能性,以下图所示的多对一的场景为例:不同发送端的流量在网络中可以均匀分布,但是由于在接受侧的汇聚交换机-接入交换机这一方向上存在多个汇聚交换机收到的流量需要分配至2条汇聚交换机-接入交换机的链路,而在训练场景下存在流数少、单流流量大的特点,容易出现不同路径流量分配极度不均的情况,即哈希极化。
哈希极化示意图
哈希极化是提高稳定性需要克服的一个挑战,灵骏可预期网络创新性地通过双上联+双平面转发设计从网络架构上解决了这一问题,后面会提到。
大规模多轨通信-低时延
多轨通信技术本质是将单个服务器节点内的NVLink、节点间的高性能网络等互联资源统筹,在集群的尺度内逼近网络通信性能的极限。在HPN架构下,每张GPU对应2张网卡(200Gbps网卡),一个服务器节点有8张GPU,共16张网卡,即3.2Tbps的网络转发能力。16张网卡端口分别与不同的接入交换机连接,可以实现128个服务器节点仅通过一次网络转发直接连接,结合节点内的NVLink以及自研通信库的性能优化,可以实现128服务器节点内的1024张GPU卡两两互联,极大地消除了可能出现的资源竞争问题,优化长尾时延。
双平面-“万卡级”互联和哈希极化问题优化
基于多轨通信,HPN在接入层交换机-汇聚层交换机设计实现了双平面转发,每个网卡双上联的不同端口映射至不同的网络平面,使得发送端在bond端口发送流量时只要保证流量均分至发送侧的两个端口,那么在接收侧的接入层交换机也一定会收到均匀的网络流量,大幅度降低了哈希极化的发生概率。
同时,基于双上联和双平面接入的设计,使2层CLOS网络的单集群最大拓展规模翻倍,获得整集群通信拓扑简化、降低时延、降低成本等收益。在HPN架构中灵骏实现了通过2层交换机互联超过10000张GPU,并且为每张GPU提供400Gbps的网络转发能力,在单张GPU吞吐性能、单集群最大规模、集群整体稳定性上实现业内领先。
自适应路由-负载均衡管控
IB网络为了充分利用带宽资源,设计了自适应路由(Adaptive Routing)方案,即通过感知不同路径的实时负载,将流量以包的颗粒度分发至不同路径,从而实现理想的负载均衡。随着以太网在自适应路由方向的发展,也出现了Per-packet粒度和Flowlet粒度两种负载均衡方案。首先Per-packet路径选择可以做到最细粒度的负载均衡,代价是大幅度增加数据包乱序风险,最终传输性能依赖于端侧的解乱序能力。另一方面,Flowlet粒度的负载均衡可以保证同一个流在时间上相邻的数据包通过相同路径传输,避免乱序出现,但是可能导致网络负载无法完全均匀地打散至所有路径上。在实际部署中这两种解决方案都需要经过大量测试和调优才能确定最佳实践。
新一代的以太网交换芯片和网卡芯片也具备像IB网络一样的自适应路由功能,灵骏网络部署的交换机和网卡硬件已经具备这个能力,目前正在探索基于自研高性能网络协议和通信库(Solar-RDMA、ACCL)的多路径自适应路由带来的性能收益。
负载均衡方案对比
Solar-RDMA(阿里云自研高性能通信协议)
基于商用生态的RoCE解决方案存在一些待解决问题:
•传统RDMA单路径特性,鲁棒性较弱
•拥塞控制算法精度低,无法提供细粒度速率控制
•多租户场景支持弱,不支持端+网全链路的带宽资源隔离方案
为了解决问题,Solar-RDMA实现了:
•每个连接多路径传输,单路径故障时可以快速切换至可用路径,消除业务端影响
•自研了HPCC高精度拥塞控制算法,结合网络负载动态感知,实现Per-Flow级别的精细化拥塞控制
•提供端网融合全链路服务质量(QoS)保障,为不同租户的任务提供可定制的网络资源
此外,分布式训练过程中涉及大量梯度同步操作,对小数据包长尾时延极度敏感,传统的RDMA实现方案需要CPU参与,过程中也产生较大的性能开销;数据传输链路还会涉及软件、PCIe总线、网卡、交换机队列等多个共享资源点,小数据包在传输时会受背景流量的严重干扰。ReLSA(Remote Load/Store/Atomic)是一项阿里云自研的网络技术,基于内存映射I/O实现CPU直接访问远端内存,同时全链路具有独立的处理单元,避免了时延敏感流量受背景流量干扰,相关同步操作的速度可提升50%左右。
ACCL(自研高性能集合通信库)
业界的开源通信库不感知跨机网络拓扑,导致集合通信过程中出现大量网内负载不均,对训练性能产生负面影响。ACCL是阿里云自研的高性能集合通信库,可以感知训练任务所需要通信的节点与物理拓扑之间的映射关系,通过对通信原语的优化编排,既实现了将通信优先控制在同一个接入交换机内(减少非必须的跨机网络资源竞争),又能显性化控制不同节点的通信路径,可以充分发挥CLOS网络架构的无收敛优势,达到节点间通信的拥塞消除效果。
大规模分布式训练场景中AllReduce操作最常用且开销最大,ACCL为此进行了针对性优化。首先,利用以太网和NVLink的特性做协同设计,混合算法将AllReduce通信分成三个阶段,即单节点机内ReduceScatter ,集群机间AllReduce,机内AllGather。同时,通过单节点机内通信和集群机间通信以Interleaving的方式提高带宽利用率,进一步加速AllReduce操作效率。在大规模的场景,ACCL为集群节点间AllReduce实现Halving-Doubling算法,比Ring有更优的通信开销控制效果,在典型的集合通信方法测试中可将性能提升20%以上。
ACCL通过Host-Driven的方式实现,能同时支持CPU或者GPU集合通信,除了性能表现优异外还避免了GPU Kernel调用可能引发的死锁风险。如集群内有闲置的CPU/GPU资源,ACCL还可以在闲置资源上部署Reduction Service(RS),进一步优化AllReduce通信效率。
C4(集合通信调度框架)
为了从公共云服务的尺度考虑整体效率的问题,阿里云进一步自研了集合通信调度框架C4,将同一任务内并发的多个集合通信以及来自不同任务的集合通信进行总体规划,以优化集群内传输资源的分配优化,在多个用户/多个任务的场景下可以降低49%的集合通信完成时长,并将GPU等计算资源的利用率提升67%以上。
Nimitz(RDMA容器网络)
容器网络是提供公共云服务的重要基础。自研的容器网络Nimitz完成了RDMA高性能计算网络的虚拟化升级,实现兼顾安全与性能的容器网络。Nimitz充分发挥物理资源的潜力,对数据平面进行层次化的软/硬件加速。向上层应用提供高性能RDMA容器网络,通过软硬协同的深度优化,在提供容器网络的同时避免了RDMA性能损失,支持 RDMA/TCP混合流量。Nimitz也是业内首个大模型领域的高性能网络虚拟化实践。
在应用规模上,Nimitz支持单Kubernetes集群内15K服务器节点互联,基于已经公开的信息,是当前业界最大规模的单Kubernetes集群高性能容器网络方案。在通用性方面,Nimitz 面向云原生的设计,实现了高效的控制平面,例如:在秒级时效内完成容器网络的置备,并支撑数十万容器节点的并行拉起和网络接入,这相比于传统的虚拟网络启动相比有两个数量级的提升。
Nimitz还对网络模型统一抽象,向下支持多种数据平面,包括内核网络、智能网卡、可编程芯片以及各大云平台的IaaS虚拟网络;向上屏蔽了底层物理资源在网络属性上的差异。Nimitz的网络弹性能力和统一的网络模型,有助于同Kubernetes等云原生系统结合,共同构建面向Serverless应用的服务平台。Nimitz也是目前阿里集团以及阿里云产品的高性能网络容器化互联方案,在双十一流量峰值等极端压力场景获得充分的稳定性验证。
NUSA(统一网络服务平台)
NUSA是阿里云自研的统一网络服务平台,可以支持RDMA网络的全自动部署,无需软件部署和调试参数等复杂操作,做到了网络服务的开箱即用。NUSA是行业领先的RDMA最佳实践,在阿里经过多年的验证和沉淀,提供丰富的数据指标监控、故障巡检、自动化交付和变更、自动化故障定位和止血等多种能力。
总结
十几年前,以谷歌为代表的企业启动了互联网应用的规模化增长,网络行业进入SDN软件定义的时代,那时候设备解耦、网络分层、虚拟化快速发展,但是带宽以10G/25G为主,同时应用对时延也没有今天这样严苛的诉求,“尽力而为”的黑盒网络即可满足需求。
随着云计算的兴起,以及计算、存储、网络技术的发展,应用对网络的需求正在发生根本性的转变,性能和可预期正在成为越来越显性的需求,阿里云在7年前(2016年)启动RDMA研发和部署工作,过程中发现黑盒网络已经无法满足场景所需的“又稳又强劲的”性能诉求,于是不断投入研发资源推陈出新,形成一整套端网融合的新技术体系,并于2019年在业界首次提出端网融合的可预期网络技术方向,相关技术快速融入到存储、高性能计算、人工智能、大数据等应用场景,于是有了今天的灵骏可预期网络。
当前的世界充满变化,但是人工智能通用化的曙光照亮了新一轮科技产业升级和社会经济发展的路径,以大模型为代表的技术发展为智算集群和高性能网络带来了前所未有的挑战和机遇,以太网因多元和开放的技术生态也将获得新阶段的发展,成为我们探索算力资源的重要基石。
如果说“摩尔定律”是互联网和大数据时代算力发展的标尺,未来的智能时代,可能更多人会认识到“香农定律”的意义,阿里云希望和业界同行们一起努力!
参考文献:
[1] Jaeyong Song, Jinkyu Yim, Jaewon Jung, Hongsun Jang, Hyung-Jin Kim, Youngsok Kim, Jinho Lee, 2023, Optimus-CC: Efficient Large NLP Model Training with 3D Parallelism Aware Communication Compression, https://arxiv.org/pdf/2301.09830.pdf
[2] Vijay Korthikanti, Jared Casper, Sangkug Lym, Lawrence McAfee, Michael Andersch, Mohammad Shoeybi, Bryan Catanzaro, 2022, Reducing Activation Recomputation in Large Transformer Models, NVIDIA, https://arxiv.org/pdf/2205.05198.pdf
-------------作者简介-------------
阿里云基础设施网络团队:作为阿里云的重要组成部分,阿里云基础设施网络团队负责整个阿里云全球基础设施网络。在大规模高性能数据中心网络方面,阿里云基础设施网络团队经过多年不断创新以及打磨沉淀,形成了端网协同的可预期数据中心网络。在网络自身能力演进、端-网融合的协同设计、应用-网络协同设计方面做出了多项业界领先的创新工作,并且在国际顶级会议(SIGCOMM、Micro、HPCA等)发表了多篇高水平论文。阿里云基础设施网络团队未来将持续深耕端网协同的可预期数据中心网络,为AI训练不断提供更高性能、更稳定、更高性价比的网络解决方案。
阿里云在端网融合可预期网络方面发表的顶会论文和关键创新