分布式大模型训练的性能建模与调优

本文涉及的产品
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,1个月黄金款+200核时
资源编排,不限时长
简介: 阿里云智能集团弹性计算高级技术专家林立翔分享了分布式大模型训练的性能建模与调优。内容涵盖四大方面:1) 大模型对AI基础设施的性能挑战,强调规模增大带来的显存和算力需求;2) 大模型训练的性能分析和建模,介绍TOP-DOWN和bottom-up方法论及工具;3) 基于建模分析的性能优化,通过案例展示显存预估和流水线失衡优化;4) 宣传阿里云AI基础设施,提供高效算力集群、网络及软件支持,助力大模型训练与推理。

阿里云智能集团弹性计算高级技术专家林立先生分享分布式大模型训练的性能建模与调优。

大模型分布训练的性能建模与优化主要分为四类。首先大模型对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 providermodel的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大模型训练显存细粒度预估

介绍基于大模型的建模和分析的方法和工具达到性能优化的案例举例,是大模型训练的显存的细腻度的预估,前阶段llama405B显存占用过大,但是大部分客户他没有卡,或者另外问题是没搞个厂跟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系列加速组件。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
17天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
159 73
|
5天前
|
机器学习/深度学习 分布式计算 数据挖掘
MaxFrame 性能评测:阿里云MaxCompute上的分布式Pandas引擎
MaxFrame是一款兼容Pandas API的分布式数据分析工具,基于MaxCompute平台,极大提升了大规模数据处理效率。其核心优势在于结合了Pandas的易用性和MaxCompute的分布式计算能力,无需学习新编程模型即可处理海量数据。性能测试显示,在涉及`groupby`和`merge`等复杂操作时,MaxFrame相比本地Pandas有显著性能提升,最高可达9倍。适用于大规模数据分析、数据清洗、预处理及机器学习特征工程等场景。尽管存在网络延迟和资源消耗等问题,MaxFrame仍是处理TB级甚至PB级数据的理想选择。
29 4
|
2月前
|
机器学习/深度学习 自然语言处理 并行计算
DeepSpeed分布式训练框架深度学习指南
【11月更文挑战第6天】随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。
181 3
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
机器学习/深度学习 并行计算 Java
谈谈分布式训练框架DeepSpeed与Megatron
【11月更文挑战第3天】随着深度学习技术的不断发展,大规模模型的训练需求日益增长。为了应对这种需求,分布式训练框架应运而生,其中DeepSpeed和Megatron是两个备受瞩目的框架。本文将深入探讨这两个框架的背景、业务场景、优缺点、主要功能及底层实现逻辑,并提供一个基于Java语言的简单demo例子,帮助读者更好地理解这些技术。
111 2
|
5月前
|
开发者 云计算 数据库
从桌面跃升至云端的华丽转身:深入解析如何运用WinForms与Azure的强大组合,解锁传统应用向现代化分布式系统演变的秘密,实现性能与安全性的双重飞跃——你不可不知的开发新模式
【8月更文挑战第31天】在数字化转型浪潮中,传统桌面应用面临新挑战。本文探讨如何融合Windows Forms(WinForms)与Microsoft Azure,助力应用向云端转型。通过Azure的虚拟机、容器及无服务器计算,可轻松解决性能瓶颈,满足全球用户需求。文中还提供了连接Azure数据库的示例代码,并介绍了集成Azure Storage和Functions的方法。尽管存在安全性、网络延迟及成本等问题,但合理设计架构可有效应对,帮助开发者构建高效可靠的现代应用。
37 0
|
5月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
116 0
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
29天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
95 5
|
2月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
68 8