由阿里云智能集团弹性计算高级技术专家林立翔先生分享分布式大模型训练的性能建模与调优。
大模型分布训练的性能建模与优化主要分为四类。首先大模型对AI基础设施的性能挑战,帮助感受性能建模在AI的大模型训练中的重要性。第二部分大模型训练的性能分析和建模,如何去做大模型的分析和建模,反哺客户具体的实践工作,第三部分基于大模型建模分析的性能优化介绍工作的意义与价值。第四部分宣传阿里云的整个AI技术设施。
一、大模型对AI基础设施的性能挑战
首先,第一部分大模型对AI基础设施的性能挑战。大模型主要侧重于“大”。罗列两个模型介绍“大”。2020年的open ai发布GPT3,前几个月梅卡发布的llama3.1。
第一,模型的规模大。从4年前的175b到现在的405b为之前的2.3倍。
第二,上下文的规模大。4年前支持2K,现在3.1标配188k。
第三,数据规模大。预训练的场景,4年前为300b数据集内存大小,目前llama的3.1支持15T的数据,为过去的50倍,等同于掌握所有互联网数据。
“大”同时带来挑战,具体体现为大模型的规模大和上下文的规模大。把llama3.1的4.5b装载下来,需要15tb的显存。而通常用于训练的显卡为80g或者是96g,无法全部装载。
算力的规模要求大:一张h100的卡,只能提供1000个t flow的算力。显存和算力的需求生发出了必须有超大规模的集群以及大规模的4D或5D的分布式训练,才能为整个大模型的预训练提供成整个的性能保障。
1.大模型分布式策略和显存优化策略
从感官角度理解整个的4D和5D并行,列了包括DB TP SP CP等的一张表。可把各种并行理解为两种并行,一种叫做数据并行,在数据维度上把大批次的训练数据集分成多个小批次并行的去在多张卡上去处理,额外引出了在梯度规约上的通信的需求。
另一为并行模型并行,包括intra-layer的,即tp;inter-layer即pp,cp还有PP,是在特定MySQL之间的规模,或者是在ma的模型上引入了一些模型进行的概念。所有的并行都是由overhead体现在通信。整个模型的训练都为显存极度不足的训练方式,因此另外典型的优化方式对显存进行优化,分为两部分,一部分在数据并行上引入zero算法,对优化器,梯度,前向参数做PM的下顶。另外一种重计算,在前向过程中生成的activation,先把去掉,再后向的时候再重新计算回来,会造成更多的计算力的浪费,必须用大规模的分组训练,但大规模的分组训练,是会overlap,即使是有各种overlap的优化,同样需要有一定的overhead,所以也是为了引出后续如何去精细化的去做优化,给提个引子。
2.大模型并行策略的使用约束
除overhead模型的分录训练,另外是并不是适用于所有场景的。举例,数据简单,把数据削减到不同的卡上去做训练,但是会存在大规模扩展性的限制,而且如果你规模越大后,在空间中间产生的通信非常细碎,会带来网络上的浪费,而且超大的润的环对稳定性也是非常糟糕的挑战。举相同案例,如流水线并行,就他虽然是通过inter的方式把模型shutting到不同的卡上,的通信量的需求也比较低,但是会引入双倍的损耗,由于的第一张卡和最后一张卡,需要存比较大的embeding,同样会引起compute imbalance。同时引起调度memory imbalance,需要进行大规模的分布训练。同时需要针对并行策略,不同的模型的形态和集群去做性能的分析,量化和建模才能最终达到把MFU发挥到最大的目的。
二、大模型训练的技能分析与建模
1.从大模型性能分析到性能建模
性能通常有两种方法论,一种为TOP-DOWN,一种为bottom-up。首先了解大模型领域传统的性能分析的手段方法论和工具,以及是否同样适用。中间部分为大模型从模型的结构到分布式的策略,到计算通行算子的拆分。模型的训练有forward backward optimizer过程,分布式策略引入了TP pp cp和ep等,再往下拆,能看到更精细的计算的算子和通信的算子。再往下到整个gpu的云服务器,再往集群上扩容,就到灵骏的计算机集群,该拆分同样适用于TOP-DOWN和bottom-up的性能分析方法。因此开发两个工具为model的performance provider和model的performance Calculator。
遵循做不到的性能分析的理论,先把in突变的模型通过他的MFU的表现,拆到他的并行,从计算的策略的一些拆解,再往下拆到前向后向和优化器的一些力度,再往下拆到计算和通线算子,再往下至GPU加速器, CPU的memory以及网卡,最后是到集群和交换机的性能。
Calculator方面,是一种bottom-up性能建模的方式,先收集集群交换机的信息,gpu, cpu和网卡规格,在去组装的计算的算子,通信的算子的性能。在组装成单层layer去表现性能的方式,再叠加上的并行策略的组装,最后映射到大模型的预训练实际模拟出来的性能是何样。
2.大模型训练性能分析工具
此为产品化大模型训练的性能分析的工具。整个界面类似tote profiler。针对整个大模型的预训练,增强了包括整个计算的flows。图上显示通信算子的性能的展示,最重要的可以top-down去分析,各种的并行维度和计算维度,在所有的时间内的占比的overhead。这是在这张图上显示另外一部分针对流水线的并行,可以在一页的profiler上去展示出,比如有16个PP的rink,能把所有认可组装在一起,就能发现一些非预期的一些性能的一些表现的性能,在一张图上去展示,方便的开发者,的用户去知道,所有的性能的表现是否符合预期,这是的大模型的训练的性能分析工具的展示。
3.大模型训练性能建模方法
介绍了建模的方法对应的一些功能,建模是一种半模拟半实跑一种方式。对接的客户时会发现相关问题,客户插在大部分场景,是没有卡去进行性能的训练,模拟校验的,作为AI的基础设施的服务商,在比客户有更多的时间去拥有集群,所以会把一些首要性能通过团队方式去拿到,如相关工具性能,矩阵存在不同的机型卡型上的性能,通过bottom up的性能的分析的方法去组装sequnce-len性能,再叠加上Transform数目,在并行策略上考虑到overlap或重计算最终模拟出所有的预估的端到端的时间和吞吐,给出总训练的时间和成本。此方式可以满足客户在他实际没有卡的时候,根据他的超参数去满足他超参的需求,让客户在整个模型的训练中达到他训练的吞吐的最高和成本的降低。
4.大模型训练性能建模分析为客户提供性能保障
左边为性能建模工具的前端的展示,有显存的显示可以在此看到,动态的一些显存的占用可以在看到,根据性能建模的工具,能支持知道模型是否放得下,或者需要多少台机器要训练多久才能完成模型的相关问题都能在这方面上去解决,最终达到训练成本的预估,最佳策略的搜索,优化策略的预演,阿里云未来进行一种演进的整个的作用。
三、基于大模型建模分析的性能优化
1.Case Study1大模型训练显存细粒度预估
介绍基于大模型的建模和分析的方法和工具和达到性能优化的案例。举例,是大模型训练的显存的细腻度的预估,前阶段llama的405B显存占用过大,但是大部分客户他没有卡,或者另外问题是没搞个厂跟meta用的touch的方式,使用方式不一样,你要把模型拿过来,直接在meta上跑。首先遇到问题他放不下,通过的整个AI的性能分析工具和计算器,在没有卡的情况下,预估出在每个layer各个维度的显存的占比。
观察饼图,占比最高的是activation,直接就把整个gpu给拉爆了,通过AI计算器更精细的计算出在每一层里面,memory占用的每秒以及运行时间。通过该方式可以选择哪些部分需要重计算。目标是第一保障模型放得下。第二保障模型放得下的基础上,性能是最好的,所以会去选择性的重计算,下图为进行选择性的重计算之后,在的卡上的显存分布的均匀度,最终在千卡的场景下,基于框架没有做任何改动,可以把整个的训练的性能提升20%以上。
2.Case Study2:流水线Imbalance问题优化
如果有真实的在千卡万卡规模的大模型上做预训练,流水线用时一时爽。存在失衡问题,通过的AI的计算器和AI的分析工具,分析出正常的互联网管理完毕的模型,bubble流水线的维度。理论上结合紧密,但是在实际的运行中会发现bubble没问题,但是中间会有很多非预计的情况出现,通过的整个能把整个PP的维度列出来后,开发者和的工程师去针对性的优化,最终把整个imbalance的非必要的hang的时间消除,在千卡及万卡的训练性质上可以达到13.4%的性能。
四、阿里云为大模型提供澎湃算力
宣传阿里云大模型。阿里云在预训练微调和推理都给客户提供了澎湃的算力。提供高效灵骏智算集群,包括高性能的算力集群,高性能的网络HPN7,以及高效稳定性的系统,已经服务了国内众多的大模型厂商。除硬件上的提供,还提供CNP的评测和分析的平台,客户可做大模型benchmark,大模型的性能监控,大模型的性能分析和性能的建模。软件和评测平台方面,提供了整个大模型的优化的主卷,包括Golden容器镜像以及DeepGPU系列加速组件。