《大规模预训练模型高效训练的构架实践-张杰.pdf》由会员分享,可在线阅读,更多相关《大规模预训练模型高效训练的构架实践-张杰.pdf(36页珍藏版)》请在三个皮匠报告上搜索。
1、Whale张杰阿里云-PAI超大模型高效训练的分布式框架Contents目录01模型训练的趋势和挑战02分布式框架Whale介绍03Whale实践示例和效果04超大模型训练最佳实践模型训练的趋势和挑战01模型训练发展趋势132模型算力需求:2年翻一倍3.4个月翻一倍Bert 模型参数规模越大,困惑度越低Transformer 模型参数规模越大,翻译质量越高1 https:/ GShard:Scaling Giant Models with Conditional Computation and Automatic Sharding3 https:/ Tensorflow、DeepSpeed等;
2、还有很多其他训练框架如:MindSpore、OneFlow、PaddlePaddle、MXNet等;这些框架支持各种并行策略,但仍有不少挑战:迁移代价高学习成本大并行策略单一支持的并行策略不全,例如:Horovod只支持数据并行、Gpipe只支持流水并行、Mesh只支持算子拆分;分布式版模型实现难度大,需要领域专家经验才能实现高效的分布式并行训练,例如如何在Mesh中配置拆分策略;不同框架有各自定义的DSL,当用户要切换并行策略时,需要学习各种接口,重新改写模型,迁移代价大;多模态M6模型发展进程2020.6base-3亿213452021.12021.1百亿-8128 GPU2021.3千亿
3、-128GPU2021.5万亿-480GPU2021.1010万亿-512GPUM6模型结构M6:MultiModality-to-MultiModality Multitask Mega-transformerM6体验馆M6体验馆:https:/ IR:将并行策略转成内部表达,通过TaskGraph、VirtualDevices抽象来表达各种并行策略;Whale Engine:基于Whale IR,通过图编辑工具来构建分布式执行图,同时进行计算、通信、调度、显存等优化;Runtime:将分布式执行图转成TF Graph,再调用TF 的Runtime来执行;Whale:分布式训练流程训练流程:
4、子图划分和策略配置:通过Whale API来划分TaskGraph,并为每个TaskGraph配置各种并行策略;虚拟资源划分:按并行策略为每个子图分配devices;生成分布式执行图:基于并行策略和资源,使用图编辑工具来编辑执行图(图拷贝、图拆分、流水调度、通信节点插入等),执行计算、通信、显存等优化,生成最终的分布式执行图。调用TF的runtime来执行;Whale:APIsscopereplica(数据并行)stage(模型并行)split(算子分片)pipeline(流水并行)基础并行策略 基础并行策略算子,供用户组合使用Hybrid-parallel(组合和嵌套)auto(自行并行)W
5、hale:APIs 示例withwith wh.replica():with with wh.pipeline():withwith wh.stage():out=ModelPart1()withwith wh.stage():out=ModelPart2(out)withwith wh.replica():out=Model()with with wh.pipeline():withwith wh.stage():out=ModelPart1()withwith wh.stage():out=ModelPart2(out)数据并行流水并行流水并行+数据并行Grads AllReduceGra
6、ds AllReduce32Whale:APIs 更多示例withwith wh.split():out=Model()withwith wh.replica():out=ModelPart1()withwith wh.split():out=ModelPart2(out)withwith wh.replica():with with wh.split():out=Model()wh.auto_parallel()out=Model()算子拆分组合(算子拆分、数据并行)嵌套(算子拆分、数据并行)自动并行Whale实践示例和效果03Whale实践-大规模分类100,000分类模型:特征提取层参数
7、90MB,全连接层参数782MB;全连接层参数太大,数据并行训练时梯度通信成为最大瓶颈;全连接层梯度通信BottleneckBottleneck特征提取层90MB全连接层782MB模型数据并行训练timelineWhale实践-大规模分类混合并行训练加速:混合并行策略:全连接层参数太大,采用算子拆分避免梯度通信。特征提取层参数较小,采用数据并行提高并发度;划分TaskGraph:将模型划分2个TaskGraph,特征提取层配置数据并行策略,全连接层配置算子拆分策略;配置Virtual Devices:将为每个子图分配一个Virtual Device,Whale自动完成Virtual Devic
8、e到Physical Device的映射;特征提取层TaskGraph全连接层TaskGraphWhale实践-大规模分类Whale混合并行表达:数据并行和算子拆分组合的并行策略3 3行行代码完成模型分布式改写性能:64卡混合并行性能=14.814.8 *数据并行扩展性:只需增加GPU,无需代码修改,可直接扩展更大规模(如1亿分类)importimport whalewhale asas whwhwithwith wh.replica():features=ResNet50(inputs)withwith wh.split():logits=FC(features)predictions=So
9、ftmax(logits)Whale实践-Bert large数据并行性能64卡Whale的加速比是Horovod的1.741.74倍;但整体加速比不够理想,主要瓶颈是梯度通信占时间长,Bert large模型参数有1.21.3GB大小;Whale实践-Bert large纯模型并行流水并行流水并行训练加速:Bert large有24层encoder layer,模型有大量重复结构,适合进行模型(layer间)并行;但模型并行的数据依赖造成device空闲,资源利用率低;结合流水来提高资源利用率;Whale实践-Bert large流水并行结合数据并行进行分布式扩展6 6行行代码完成混合并行改
10、造Whale Pipeline =1.34 1.34*Whale DP =2.32 2.32*Horovod DPPipeline+Data Parallelism 训练代码importimport whalewhale asas whwhwithwith wh.replica():withwith wh.pipeline():withwith wh.stage():output=embedding(inputs)output=encoder_layer_0_8(output)withwith wh.stage():output=encoder_layer_8_16(output)withwi
11、th wh.stage():output=encoder_layer_16_24(output)output=pooler(output)*64 V100 GPUs,机间网络带宽 35Gb超大模型训练最佳实践04最佳实践-最大中文多模态模型M6预训练超大规模M6模型预训练挑战算力、资源需求巨大:业界万亿规模模型训练:Nvidia(3072 A100)、Google(2048 TPU);10万亿规模算力和资源需求大了10倍;显存需求巨大:10万亿规模为例:模型参数40TB、梯度40TB、optimizer states 40TB*K、active tensor 正比于batch size,显存需
12、求巨大;仅模型参数,需要1280 个V100 32GB的GPU存储;最佳实践-最大中文多模态模型M6预训练稀疏计算优化:MoE(Mixture-of-Experts),主要特点是稀疏激活:多专家(experts)策略:创建多个专家(experts),如图多个FFN(feed forward)层;稀疏路由:对每个输入的token,选择top k 个experts进行训练,k常用取值有1、2;用MoE layer替换原FFN layer,降低模型算力需求;假设N个专家,路由top 1策略,则算力降低的1/N1/N;1 SWITCH TRANSFORMERS:SCALING TO TRILLION
13、PARAMETER MODELS WITH SIMPLE AND EFFICIENT SPARSITY 1最佳实践-最大中文多模态模型M6预训练分布式训练策略Whale中实现了MoE(Mixture-of-Experts)layer,并支持专家并行;结合数据并行+专家并行组合的混合并行策略提高计算并发度;10万亿模型采用Pseudo+Real 2阶段训练:Pseudo阶段:模型n层transformer layers共享1份weight;Real阶段:transformer layers的weight不共享,加载Pseudo 模型的weight,一对多赋值给real model;最佳实践-最大
14、中文多模态模型M6预训练分布式训练优化采用MoE layer后仍需大量资源,Whale中实现大量优化技术来降本增效:显存优化 Auto Gradient Checkpoint,自动选择最优checkpoint节点,节约activation的显存;Group-wise Apply,优化Optimizer Apply阶段的显存;CPU Offload技术,优化Optimizer status和Weight的显存;通信池化,控制通信的数据块大小和并发,节约通信的显存;Save/Reload checkpoint显存优化;计算、通信加速:采用分组融合通信、半精度通信、拓扑感知的All2All通信算子等
15、技术来提高通信效率;结合混合精度、编译优化等技术提高训练效率;CPU Offload技术:Offload weight到内存,计算需要时从内存拷贝回显存,再进行计算,参数更新在对应Device上进行;支持控制Offload的粒度,可以Offload 部分weight,能充分利用显存和内存;支持Optimizer states和weight的Offload策略进行collocate,避免Apply时来回拷贝;CPU Offload 执行流程最佳实践-最大中文多模态模型M6预训练Gradient CheckpointAuto Gradient Checkpoint技术:Gradient Check
16、point是通过重算来节约模型activation占用的显存,重算范围控制在两个checkpoint之间;Auto gradient checkpoint则通过cost model来自动选择checkpoint节点;checkpoint 节点选择构成一个截面,防止重算越界;支持非幂等算子,防止重算引发收敛问题;支持all2all通信算子配置策略,在显存和性能间均衡;Checkpoint 节点选取,需构成截面最佳实践-最大中文多模态模型M6预训练最佳实践-最大中文多模态模型M6预训练简洁易用接口混合并行策略,增加几行annotation:Whale自动进行DP+EP的并行策略训练;效果万亿规模,480 GPU(V100)3 3天天内模型训练收敛;10万亿规模:Pseudo阶段256 GPU训练,1919小时小时过完1亿训练样本;Real阶段使用512 GPU512 GPU完成训练,每个GPU 32GB显存+78GB内存,总存储资源5555 TBTB;默认采用数据并行策略MoE部分采用算子拆分策略总结01模型训练的趋势和挑战02分布式框架Whale介绍03Whale实践示例和效果04超大模型训练最佳实践THANKS