资源描述
大模型分布式训练基础原理百度智能云资深研发工程师 /张恒华百度百舸 AIAK 加速套件0101AIAK基础产品特性0202演演讲讲提提纲纲易用的产品使用方式0303Scaling Law:大模型训练需要足够的数据和算力模型演模型演进对进对 AI AI 基基础设础设施提出更高的需求施提出更高的需求模型演进:参数量越来越大模型Tokens训练卡数训练时长LLaMA-65B1.4万亿2048卡(A100-80G)21天GLM-130B4000亿768卡(A100-40G)60天BLOOM-176B3660亿384卡(A100-80G)105天稳定稳定高效高效敏捷敏捷挑战:机器规模大、训练周期长、资源成本高昂模型能力与数据、参数、算力等正相关模型能力与数据、参数、算力等正相关基础设施基础设施高性能计算(A800、H800、昆仑)高性能存储(PFS、BOS、RapidFS)高速互联网络(NVLink,RDMA、VPC)百舸控制面百舸控制面控制台OpenAPISDK命令行工具配套服务配套服务Prometheus监控日志服务镜像服务账号&安全云原生云原生AIAI套件套件AIAI基础组件基础组件异构资源调度高性能存储插件高性能网络插件K8S内核AIAI编排调度编排调度深度学习框架AI 任务编排任务工作流管理稳定性稳定性&容错容错健康检测多维故障感知自动任务容错训练训练&推理加速(推理加速(AIAKAIAK)模型训练加速模型推理加速模型生态适配百度百百度百舸舸AIAI异构计异构计算平台算平台基础设施基础设施高性能计算(A800、H800、昆仑)高性能存储(PFS、BOS、RapidFS)高速互联网络(NVLink,RDMA、VPC)百舸控制面百舸控制面控制台OpenAPISDK命令行工具配套服务配套服务Prometheus监控日志服务镜像服务账号&安全云原生云原生AIAI套件套件AIAI基础组件基础组件异构资源调度高性能存储插件高性能网络插件K8S内核AIAI编排调度编排调度深度学习框架AI 任务编排任务工作流管理稳定性稳定性&容错容错健康检测多维故障感知自动任务容错训练训练&推理加速(推理加速(AIAKAIAK)模型训练加速模型推理加速模型生态适配百度百百度百舸舸AIAI异构计异构计算平台算平台AIAKAIAK 训练加速套件训练加速套件小模型:小模型:AIAK-TrainingAIAK-Training大模型:大模型:AIAK-Training-LLMAIAK-Training-LLMAIAK-TrainingAIAK-Training,加速常,加速常规规 CV/NLPCV/NLP 等小模型等小模型训练训练AIAK-Training 统一加速接口数据 IO 优化模型算子优化Loss 计算优化优化器加速AIAK 编译基础设施主流训练框架数据并行通信优化Swin-Lyolov7CenterNetFCOS3DBEVFormer CenterPointPointPillarsTransFusion+81%+81%+54%+54%+119%+119%+88%+88%+49%+49%+391%+391%+117%+117%+142%+142%典型2D/3D/Lidar/融合等智驾CV 模型,加速 49%391%赋能智能驾驶场景客户用户自定义训练代码(模型组网+训练循环)几行代码插入 全链路加速 插件化安装ChatGPTChatGPT 引爆大引爆大语语言模型言模型发发展,模型生展,模型生态态爆爆发发参数量大于百亿的模型时间线参数量大于百亿的模型时间线开源模型为例:基于基座模型,微调领域专用模型开源模型为例:基于基座模型,微调领域专用模型https:/arxiv.org/abs/2303.18223https:/arxiv.org/abs/2303.18223AIAK-Training-LLMAIAK-Training-LLM,加速主流,加速主流开开源大源大语语言模型言模型训练训练数据并行优化Tensor 并行优化Pipeline 并行优化Zero 通信优化低精度训练高性能融合算子优化器融合算子通信换显存策略重计算策略优化显存管理策略GPU训练能力增强:不同场景性能优化GQA/Alibi等 Layer模型TokenizerCheckpoint转换(HF、Megatron、deepspeed)开源大模型(LLaMA 系列、GLM 系列、Galactica 系列、BLOOM 系列、MPT)DataLoaderPretrain、PostPretrainAlignment(SFTSFT、Lora、RLHF)模模型型和和工工具具分分布布式式框框架架硬硬件件训练镜像开箱即用:热门开源模型 常用训练模式 模型格式互转MegatronDeepSpeed并并行策略行策略 -单卡单卡到分布式,到分布式,数数据切分到模型切分据切分到模型切分单卡训练模型参数少单卡可训练GPU0DataSet数据并行训练数据多单卡太慢GPU0GPU1DataSet模型参数多单卡放不下模型并行GPU0GPU1DataSet小模型:单卡或多卡数据并行大模型:混合并行训练并并行策略行策略 -MegatronMegatron TensorTensor 并并行行将模型权重切分到多卡进行计算,需保证数学上与单卡计算等价;减少权重、激活的显存占用GEMM 权重按行切分:*=*W0TallreduceX0W0Y0dY0X0TdX0dw0allgatherforward:Y=Y0+Y1(allreduce)backward:dY,无操作XfX0X1X0W0X1W1Y0Y1gYforward:Xibackward:dX=dX0,dX1(allgather)Y=XW=X0,X1 01 =X0W0+X1W1GEMM权重按列切分:XW0*=Y0dY0=*W0T输入权重输出XTdX|0dw0allgatherallreduceXfXXXW0XW1Y0Y1gYforward:无操作,Xbackward:dX=dX|0+dX|1(allreduce)forward:Y=Y0,Y1(allgather)backward:dYi(split)Y=XW=XW0,W1=XW0,XW1权重分布:Embedding、L层Transformer Layer(Attention/MLP)、head,核心是矩阵乘法并并行策略行策略 -MegatronMegatron 流水流水线并线并行行模型按 Layer 切分为多个stage,分配到不同设备计算,通过点对点 Send/Recv 同步激活与梯度Layer 0(前向)Layer 1(前向)Layer 2(前向)Layer 2(反向)Layer 1(反向)Layer 0(反向)Layer 0(前向)Layer 1(前向)Layer 1(反向)Layer 0(反向)Layer 2(前向)Layer 2(反向)GPU 0GPU 0GPU 1Send/RecvSend/Recv 流水线气泡(影响更大)、P2P 通信开销 如何切分,模型层数一定能均匀切分?多种切分方法:计算均衡、显存均衡计算与通信如何进行调度,缩减 GPU 空等?并并行策略行策略 MegatronMegatron 流水流水线并线并行,行,优优化化 Bubble Bubble 的方案的方案GPipe:将 mini-batch 切分成多个 micro-batch,将 micro-batch 的计算在 pp stage 之间进行流水1F1B:一个 micro-batch 前向计算结束后,直接进行反向计算,目标尽快将前向激活消耗掉warmup 和1F1B两阶段:设备最多缓存 p 个 micro-batch 激活;p 数值相对较小单卡 bubble时间=(p-1)(tf+tb),占比=p1p1+m 可通过调整 p 和 m 减少气泡interleaved 1F1B:每个stage分配多个不连续的 layer 段,更短的时间完成一次计算,缩减其他 stage等待时间1.Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM0 1234567缩减单卡 bubble 时间,(p-1)(tf+tb)/v通信次数增加了 v 倍,p2p overlap、网络优化每个stage 先完成全部 micro-batch 前向计算,再进行反向计算反向阶段,micro-batch 之间累积梯度,最后一个 micro-batch 计算完更新参数排布示意并并行策略行策略 -数数据据并并行,行,优优化梯度通信,提升化梯度通信,提升DPDP 扩扩展性展性目标当数据量大时,通过扩充 DP 提升速度;TP/PP 与参数量相关,DP 与数据量相关;通信与反向计算串行通信与反向计算并行timeBackward OP1Backward OP1AllReduce1AllReduce1Backward OP2Backward OP2AllReduce2AllReduce2AllReduce1AllReduce2Backward OP1Backward OP2Backward OP3Backward OP4AllReduce1AllReduce2Backward OP1Backward OP2Backward OP3Backward OP4模型模型训练训练中的主要中的主要显显存占用:存占用:参数参数、梯度、梯度、优优化器、激活化器、激活数据读取前向计算反向计算优化器更新参数下一轮迭代计算激活计算梯度优化器状态主要显存占用模型参数中间激活参数梯度优化器状态模型参数量训练数据(bs、seqlen)显显存策略存策略 -zerozero系列,系列,数数据据并并行下的行下的显显存存优优化技化技术术Zero1Zero2DP 通信组内,切分优化器状态AllReduce-ReduceScatter+AllGather开启梯度累积时,最后一个 micro-batch 通信大模型训练,一般推荐开启 zero1DP 组内切分优化器状态、梯度,显存节省更多AllReduce-ReduceScatter+AllGather开启梯度累积时,每个 micro-batch 都需通信Zero3DP 组内切分优化器状态、梯度、参数 前反向时,参数需要 AllGather聚合,通信量大计计算效率算效率优优化化 算子融合,多算子融合,多个个 Kernel Kernel 计计算合算合并并融合算子融合算子举举例例FlashAttention按计算密度可以分为计算密集型计算密集型和访存密集型访存密集型GEMM通常为计算密集型算子,Elementwise通常是访存密集型算子期望的目标是所有算子都是计算密集型,可以充分利用算力计算密集型计算密集型+访存密集型算子访存密集型算子,访存密集型算子之间访存密集型算子之间进行融合算子融合思路算子融合思路融合收益融合后减少了算子数量,减少了 Kernel 调度和发射,其他开销占比降低避免中间结果来回搬运,减少访存读写次数,降低访存开销提升计算密度,充分利用计算资源,提升计算效率share mem 和寄存器三级访存优化,减少 HBM 读写分块策略,矩阵乘和softmax 融合中间结果优化,反向计算使用重计算代替重加载,访存O(N2)O(N)计计算效率算效率优优化化 使用混合精度使用混合精度训练训练,加速,加速计计算效率算效率FP32TF32FP16BF168 bits23 bits8 bits10 bits8 bits 5 bits10 bits7 bitssignexponentmantissa表示范围数值精度FP16:表示范围和精度低于 FP32,可能出现溢出或精度误差BF16:表示范围与 FP32相同,精度低于FP16,数值稳定性较好混合精度训练作用:减少内存需求量,使用更少的内存带宽,加速数据传输操作低精度计算效率更快,特别在支持 TensorCore GPU 上使用 FP16:精度误差:FP32权重备份,FP32更新参数数值溢出:Loss Scaling,动态调整 Loss Scale百百舸产舸产品使用品使用 整整体体入口入口可视化集群资源管理支持多样性的任务管控支持训练任务和推理部署面向集群健康的快速检测百百舸产舸产品使用品使用 控制台控制台创创建任建任务务支持主流开源大模型自动适配加速镜像预置训练参数&环境变量推荐资源配置百百舸产舸产品使用品使用 客客户户端端创创建建训练训练任任务务环境准备AIAK 训练镜像CCE 客户端工具数据准备AIAK 数据预处理工具BOS/PFS 数据上传创建任务模型 YAML 模板CCE 客户端提交管理任务任务日志查看任务故障诊断资源监控视图训练收敛视图百百舸产舸产品使用品使用 AIAKAIAK 自定自定义义模型方式模型方式数据处理Model 结构训练模式精度对齐Tokenizer:实例化模型专用 tokenizer,编码、解码、词表接口预处理:无监督数据、指定微调数据,特殊结构自定义实现ModelConfig 配置组网内置 Pretrain/Posttrain 代码模板内置 SFT 指令微调代码模板逐层精度 DEBUG 功能,与 Base Model 比对基础设施基础设施高性能计算(A800、H800、昆仑)高性能存储(PFS、BOS、RapidFS)高速互联网络(NVLink,RDMA、VPC)百舸控制面百舸控制面控制台OpenAPISDK命令行工具配套服务配套服务Prometheus监控日志服务镜像服务账号&安全云原生云原生AIAI套件套件AIAI基础组件基础组件异构资源调度高性能存储插件高性能网络插件K8S内核AIAI编排调度编排调度深度学习框架AI 任务编排任务工作流管理稳定性稳定性&容错容错健康检测多维故障感知自动任务容错训练训练&推理加速(推理加速(AIAKAIAK)模型训练加速模型推理加速模型生态适配百度百百度百舸舸AIAI异构计异构计算平台算平台
展开阅读全文