本节课程由阿里云智能集团资深技术专家易构计算产品技术负责人王超分享,主题是AI基础设施的发展趋势。本次论坛的主题是计算加速,结合对最新一代AI基础设施总结的经验和对和下一代发展趋势的见解,本次课程是关于AI Infra对于下一代演进的思考。
一、AI infra设计与Scaling Law
前面的课程中已经介绍了Infra、platform以及模型层的一系列新产品,Scaling Law依然是指导整个AI infra设计的主要目标,且下一代AI Infra的设计目标仍旧是确保Scaling Law的高效实现与落地。整个大模型的规模仍在不停增长,前两天刚刚发布的Chat GPT O1给我们带来了一个新的思路,Scaling Law不只是在训练场景中发挥作用,而是延伸到了推理场景。
从GPT1到GPT5,模型的大小以指数增长。在今天,模型从原来条件反射式的回答变成了思考性的回答,换言之,算力使用越多,模型回答的效果深度越深,就像从文科生变成了理科生。因此,下一代AI基础设施的设计理论指导中,Scaling Law依然是最高指标。
1、下一代产品设计目标
我们不仅仅讨论仿单型模型在训练过程中对于Scaling Law的需求,还要考虑在大模型的推理场景中如何发挥Scaling Law的作用。
随着整个AI计算的应用逐渐层次化,在下一代的设计中,我们主要的瞄准两个方向:
第一,如何高效支持仿单性模型的训练,前一段时间Meta发布的lama3.1的工程论文中提到,他们花费了1.6万张h100训练了45天,使用了15T的语料训练了一个405T的模型。GPT-4是一个8000张a100训练的模型,今天已经进化到1.6万张h100训练的模型,单位时间的算力大概增长了5倍,所以设计下一代时要考虑,如果计算量再增加一个数量级,要使用16万张卡甚至几十万张卡进行一个任务的训练时,我们应如何应对。
第二,在Inference场景中,如何有效支持思考链以及怎么样支持T级别的Moe的多模态模型进行推理。这两个新的需求将会指导基础设施在下一代的设计。
二、AI基础设施功能及升级
今天解决的问题在很多场景中依然可以延续。AI基础设施实现的功能如下面所示的AI infra的全貌图:
首先,接入传统云计算的基本能力,包括VPC网络接入、存储接入,对计算网络和服务器的管控;在此基础上,搭建了高性能计算的网络,下一代会由如今的7.0架构演进到8.0架构,使用新的流控、路由方式以及新的拓扑架构。
在下一代中,会引入一个新的x link domain的概念,它将会成为下一代的基础设施实例的边界。在GDC中,NV发布了自有的GB 200 NV,使用72张卡进行NV link domain的连接,也就是下一代最小的计算单元。简而言之,计算单元从一台服务器变成了一个Rack。
在设计的过程中,我们要考虑很多内容,包括模块化设计、Rack level的综合布线、散热是否走向液冷、电源供电的功率(在传统服务器的基础上引进了5~10倍的功率密度)。一台服务器的规格是8卡(NV link domain只能支持8张卡),下一代的NV link domain可在容器计算层把GPU的监控管理、通讯库的耦合和统一计算的架构以及亲和性的调度全部集成到SS调度控制器中,由调度控制器取代传统的的控制器,将调度从面向资源层变成面向任务层,通过统一抽象成一个调度的原语句,再加入调度的子能力(包括故障切换、任务迁移、扩缩容、分布式并行及cache),在容器层产生的serverless化的ice之上,创新开发一个全球调度系统,即图中橙色标签部分的内容,即global schedule。通过全球的调度系统可以进而掌控阿里云分布在全球各地的集群,对其进行统一化的资源管理、日志任务的协调,进而实现资源的配额管理、运行时的编排任务、调度的优化,然后把这些资源抽象给上层的AI应用,上层就会产生百联、模型服务摩达社区等。因此,下一代的重点在全球调度层以及x link domain的设计。
1、Scale up与Scale out的平衡——打破数据与算力之间的性能屏障
关于什么是scaling law、什么是AI计算集群的问题,博士给出了一个精炼的回答,当半导体的发展遇到极性时,相容定律将取代摩尔定律,即scaling law,我们把scaling law分为成scaling up和scaling out两部分。scaling up是半导体技术的突破,将HPM和计算的带进行高性能的封装产生一个更大的芯片。在这个芯片中同样是互联的,内存和显存的带宽通过hpm2、hpm2e、hpm3、hpm3e的迭代将显存和带宽提升到3~5TB/s 。
以太网已将传统的服务器带宽由200GB升级至3.2TB的高性能网络,提升了将近10倍,达到了400~800GB每张卡的规模。曾经我们在讨论AI基础设施时会论述IB和RoCE哪个更佳,而此时这个问题有了答案。所有十万卡以上的集群建设全部采用了RoCE的方案,当规模大到一定程度时,相容定律就会发挥作用,以太网在更大的规模下会有更大的优势。但还存在一个问题,即网络的层次化设计,x link domain在十倍于以太网的带宽的情况下,又以十分之一以太网内存带宽情况下找到了自己的生存空间。因此,服务器中的x link domain将走出该服务器,转而变成一个Rock level的底端,x link domain覆盖的所有计算单元集成会成为云上未来的一个实例。
今天云上所有实例的定义范围是一个OSS内的所有资源,而在未来实例边界将不仅仅只由一个OSS所框定的范围,而是由一个x link domain高性能通讯所覆盖的一个范围,它将十倍于以太网的带宽在每一个芯片互联。
2、Rack level的Scale
x link domain是什么?为什么Rack level的Scale更好?其实,在上一代的架构中,NV曾在gh 200时讨论过256卡的互联,但后来又中途夭折,改装成了nv 72卡的互联,其中的原因包括两个方面。
(1)Rack level的Scale——扩大高性能互联环境的规模
其一,物理部署拓扑的难度较大。按照拓扑数据图,只要横向展开x link switch的数量,使得单x link switch的pod足够多,一层可能就可以支持64甚至72的卡,两层就可以支持到2k或者四4k的GPU,但这一点很难实现,我们仍旧会选择将其限制在一个Rack中。因为今天x link domain的能力还不能支持热插拔,它和以太网有巨大的区别,以太网在几千卡的范围之内,当任何一张卡损坏时,都可以进行更换,网络是完整的,而今天x link domain中任何一张gpu出现问题时,可能要停掉整个domain。因此,如果将domain做成512卡和2000卡,会对运维、部署以及调度带来毁灭性的灾难。
至少在下一代仍不能达到该水平,而是将其约束在Rack内。一个Rack可能就是未来实例的覆盖范围,约有30~80张卡。总而言之,在物理上的局限性以及目前硬件的水平使得x link domain在该层架构下覆盖Rack level的设计是性价比平衡的思路。
(2)集群维度的Scale——扩大高性能互联环境业务收益(预训练)
其二,如何层次化网络。如果把网络分成三个层次,甚至是四个层次。所以网络是层次化的问题,相容定义决定了互联的数量越多,单位计算力获取的带宽就越少。在第一层,x link domain在一个Rack level中负责几十张卡之间的通讯,把所有EP、PP之间需要O2O的通讯约束在更高带宽的范围之内,而不通过以太网进行O2O的通讯。
第二层是segment,所有的卡在一层交换之内,这一层交换需要大可以承载整个模型,今天该层在HPN网络中设计成了1000卡,即可跑出3TB的模型,介于甚至gpt4和gpt5之间,进而将所有的PP通讯约束在一个segment之内。这样,在计算和通讯中做overlap,带来的资源损耗较小。
在第三层,结合第二层集群的设计概念,将多个segment连在一起,如果将十几个甚至几十个segment连接,则意味着可以跑十几个到几十个模型TP,所以DP流量才会穿透一层交换到两层交换。因此,哈希不均衡的问题只会在DP层产生,而DP的通讯量远小于其他几层。
现在,我们在讨论关于联邦训练的问题,也就是受物理极限的限制,集群的规模仅能达到十万卡,太大的模型在部署在机房IDC上难度很高,但任务量如果有30万卡,则可以把四个集群通过骨干网、DCI联系起来,用四个集群在四个不同的地域进行联邦训练。最上层是网络层,所有的DP会被拆成两层,一部分在集群内通讯,一部分则经过几百个step后跨集群通讯。
这四层之间的带宽延时是分层次的,当把网络分成这四层去考虑问题时,会使得每一层覆盖的范围缩小,相应地,每一层的带宽增大。所以,通过四层网络设计,结合通讯库的并行策略的设计方式使得模型的训练效率提至最高。
结合图示的仿真测试数据,横轴坐标是x link domain的size,从最早的8卡变成16卡、32卡、64卡、128卡、256卡,观察相同卡数训练下的吞吐可以发现,在不同的模型size时,其拐点不同。如gpt4,它是1.8TB的move多模态模型,其拐点在64卡。在前期,收益基本呈线性,当增大domain时,会获得足够的收益,当增至64时,即使再扩大domain,由于并行策略,增益趋于平稳。如果继续扩大模型量到3~5TB,其拐点在128卡前保持线性的收益,在128卡趋于平缓。
从模型训练的角度,如果把domain增加至2k甚至4k,不仅是部署上的难度和不经济,在实际训练过程中,效果的提升也会逐渐劣化。因此,在1~5范围内,64卡或128卡是较好的选择。因此,下一代的AI infra会走向Rack level,所有厂家系统都会以64卡或128卡为单元做子模块作为训练的基本单元。
3、推理也遵循Scaling law——Domain 规模应满足前沿模型的推理需求
当模型的size变大,即使做八位的量化,或使用新一代的卡进行四位的量化,如果8卡的范围无法承载模型,在推理场景中把TP跨机通讯,通过以太网在推理场景中通讯TP的效率极低。即使有四台设备,如果带宽足够大,效果不一定甚于两台设备。因此,我们需要扩大x link domain,使得所有的推理侧的通讯库跑在十倍以太网带宽的小范围之内。如果有3~5TB的模型尺寸,在FP16需要6~10TB的显存,在FP8需要3~5TB的显存,在FP4需要1.5~2.5TB的显存。
显然,使用8卡的这种x link互联方式无法在domain中承载模型,所以需要扩大domain的范围,即使在推理场景中也会有更大的收益。在FP8需要16~64张卡,在FP4需要8~32卡。在推理场景中,随着模型增大,x link domain的收益也会逐步放大,所以64卡和128卡还是未来在gpt5 level模型下通讯的主要趋势。
综上,在下一代的集群设计中,x link domain的size非常重要。在购买服务器时,需要考虑的不只是几张卡的概念,而是x link domain域的大小,购买的卡是以8卡或是64卡的方式部署,它会带来20%~30%的性能差异,且在推理场景中差异更大。
4、GPU和CPU计算的调度区别——容器化与调度能力升级
为什么要走向全球调度?众所周知,在阿里云上买任何实例,会先选region,再选可用区,然后在可用区中选资源。在大数据时代,多事在线业务,因此在线的数据和计算距离要近,对延时的要求多是1~2毫秒。因此,必须部署在一个可用区内。
但到了AI时代,会有很大的区别。第一,计算量会变得非常大。在物理上,不可能在可用区里无限制发展。一个集群可能就等于一个可用区,所以集群一定是region level的产品,而不可能是可用区的产品。第二,AI应用不同于大数据计算。大数据计算几乎零延时,而AI推理本身就有延时,无论是生成一张图片或是一段语料,即使今天特别关注用户的使用体验,以对资源的方式提升首包的反应时间,仍旧需要等待几百毫秒。
今天,所有的应用调用API或者做agent,模型的位置对结果的影响区别不大,因为应用本身的延时已经远大于传输的延时。所以,未来资源、计算的位置不重要,重要的是是否可以把数据任务传输送到计算,把全球的所有资源作为统一的资源池管理,寻找到资源病通过应用层屏蔽不同资源产生的微弱通讯时延。所以在CPU场景、VM场景中是可用区级的或region级的调度。
AI时代,如何通过容器化的方式实现全球的资源调度?今天,全球资源调度是中间层的调度。以极致性的AI应用——联邦训练为例,了解如何跨region同时启动两个集群训练同一任务。联邦训练也就是跨可用区,在北京启动一万卡的集群,在上海也启动一万卡的集群,通过DCI互联的方式使这两万卡训练同一任务,这是应用层的极致性诉求。
当然,其下有资源层,如客户预留的实例、按量售卖的实例、抢占式的实例、可用资源池等所有的资源以及资源碎片,中间需要有一层容器层的调度,负责资源的管控分配、调度的规划、负载的优化,以及提供上层的famework的API。其下层需要有对于资源层的穿透,所以会把原来资源跟实例统一的调度层拆分成两层,一层是资源层的调度,一层是产品层的调度,然后再对框架层提供接口,让所有的应用可以直接使用这些容器化的资源。当今,所有的AI应用都在云原生上的,所有的AI作业都运行在容器中,因此可以放弃过去所有的资源调度,以K8S通用API的方式面向所有的客户。
5、多租户的容器化使用方式——容器化与调度能力升级
我们推出了容器计算ACS产品,未来不久就会出现在阿里云的官网上。阿里云的容器计算产品中添加GPU实例,所有的实例将以云原生的方式通过阿里云容器计算服务来提供给大家,模型的训练场景、推理场景、优化场景都可以使用统一的方式。以推理场景为例,它也会像传统的互联网业务一样,白天峰值较高,晚上流量很低,是一种典型的互联网场景。
未来,晚间也会有机器人运转,其资源消耗不仅仅依赖于人,但仍旧会有峰谷,可以将峰谷的资源聚合起来,形成晚上的训练包,让所有的业务在晚上时可以使用碎片化的资源训练8小时,只要符合Scaling law即可。如果3000卡的任务训练24小时,也可以用一万卡在八小时之内帮完成同样的训练量,只要调度好晚上的训练资源即可。换言之,就是把整个训练和推理所有的资源从Infra层、调度层统一起来,聚合碎片化的资源。
AI的基础设施在持续升级,AI infra会走向新一代。
在上一年度的云栖大会上提到,AI基础设施主要焦点还在于如何解决规模的问题,是否可以建出万卡集群,是否可以在万卡集群上保持任务训练的并行度,希望能在一万卡时训练的效率保持在一卡的90%,以及稳定性的问题。在Meta的论文中曾提到,他们在1.6万卡45天的训练中停了400余次,解释为非预期性宕机。所以在上一代集群中解决的是规模下的稳定性问题。
目前的模型已经解决了这两项问题,即使在scaling law的作用下,十万卡增大了十倍的任务量,线性度降低达到物理极限。基于物理的概率,稳定性可能会降低数量级,但是可以自动化恢复,只要降低自动化恢复,这种线性度的降低影响较小,如果一万卡是99%,则十万卡是98%。所以,在今天自闭环的自愈系统中可以解决稳定性和规模并行的问题。
下一代则是推向极致,在同样卡数情况下,通过层次化的互联优化把网络拆分成四层,解决同样卡数并行效率的问题。也就在同样规模下进一步提升并行的效率。今天集群资源碎片化很严重,卡的使用效率仍较低,而云则希望所有人在池中使用,即走向容器化和全球化调度。未来,在AI时代的infra,区分的单元不是租户(VM时代采用了多租户的概念),而在任务。每个任务不论是否属于租户,都是安全且隔离的。因此,区分的是任务的行为,是训练任务或是推理任务,以任务为尺度切分计算力和调度,这也是下一代的设计灵魂所在。下一代解决性能更高以及调度更好,资源使用率更高的问题。