GPT3性能的深入分析 厚子杰NVIDIA LLM培训技术 更大的模型是趋势 计算成本 高计算成本 §每次迭代的下限:(请参阅https://arxiv.org/abs/2104.04473) □□ ! 96□□□ℎ(1++) 6ℎ16B:批量大小,S:序列长度,l:变压器层数h:隐藏大小,V:词汇大小 §2150ZettaFLOP(带1.5T令牌的175B) §1ZettaFLOP=1024ExaFLOP 挑战 128DGXA100,在170120天内训练。(约50%的计算效率) 高内存成本 内存成本(混合精度、本机实现) §模型状态(总计:3.5TB) §参数:350GB(175B*2字节) §渐变:350GB §优化器:2800GB §激活:? 挑战 型号无法容纳单个GPU甚至单个GPU服务器。(>35pA10080G) §模型并行性是跨多节点的必备条件 §型号无法适应单个GPU甚至单个GPU服务器。(>35pA100-80G) §极其巨大的计算能力:约16KA100*天计算。(不考虑效率) 我们需要什么: §具有模型并行的有效框架 §软件和系统的仔细协同设计 NeMo和MEGATRON NeMo和Megatron-LM是NVIDIA✁FW • 有效地训练世界上最大✁基于变压器✁模型。 数十亿✁列车变压器模型 • 参数 实现高利用率和高规模化成千上万 • ✁GPU 7 大型变压器培训技术概述 •Parallelisms: •管道并行性 •张量并行性 •SequenceParallelism专家并行性 •内存优化: •分布式优化器(≈DeepSpeedZeRO-1)•检查点激活 •选择性激活检查点 •Others: •FP16/BF16训练,优化内核等 •PP和TP✁通信重叠 蓝色✁威震天v2功能绿色✁威震天v3新功能 模型并行性 §张量模型并行性 §层内 §跨多个设备拆分各个层 §实现简单 §大矩阵下性能良好 §细粒度、高频通信 §管道模型并行性 §层间 §跨多个设备拆分层集 §粗粒度通信 §可推广到几乎所有✁DNN §需要大批量以实现高吞吐量 §工人之间✁负载不平衡 § 张量模型平行度--MLP f和g是共轭算子,f是恒等算子,g是正向传递中✁全归约算子; § 张量模型并行性-自注意 f和g是共轭算子,f是恒等算子,g是正向传递中✁全归约算子; 平行 Megatronv3中✁新功能:序列并行性 通过在序列维度上分割张量来扩展张量并行。 沿序列维度✁Paroning减少了acvaons所需✁内存。介绍了序列并行和张量并行之间✁全聚集/缩减算法。 g和\(\overline[g]\)是共轭✁。g在前向传递过程中进行all-gather操作,在反向传递过程中进行reduce-scatter操作。\(\overline[g]\)在前向传递过程中进行reduce-scatter操作,在反向传递过程中进行all-gather操作。 §管道模型并行性-1F1B m:微型批次✁数量p:管道阶段✁数量向前步进时间 : □向后步进时间 : 气泡时间=(p−1)×(+□)理想时间=×(+□) 总时间=(+−1)×(+□) 气泡时间开销 =𝑏𝑢𝑏𝑏𝑙�𝑡0𝑚�0𝑑𝑒𝑎�𝑡0𝑚� =𝑝56 � §交错管线模型并行性 Time 气泡时间开销 =𝑝"# � =v:交错级数 3D并行性 存储要求 激活内存优化 完整✁检查点 §存储(或“检查点处理”)一组层✁输入激活,并在反向传播期间通过额外✁前向传播重新计算其他所需✁激活。 §显着减少了训练所需✁内存,同时具有〜36%✁计算开销。 序列并行+选择性检查点 §只重新计算每层中占用大量内存但重新计算成本不高✁一部分。 使用序列并行地分布激活✁其他部分。 §将重新计算开销从~36%降低到~4%。 激活检查点 Megatronv3中✁新功能:选择性检查点 仅重新计算每层中占用大量内存但重新计算成本不高✁一部分。(称为选择性激活重新计算) 发现准恒稳操作通常具有较大✁输入规模,因此相应✁激活值也较大,然而每个输入元素✁浮点运算(FLOPs)数量非常低。 Excepons和Limitaons:仅在与其他并行技术✁结合中效果良好 减少重新计算开销通过使用序列并行和选择检查点,从~36%到~4%。 分布式优化器 Megatronv3✁新功能 梅特隆V3实现了分布式优化器,将动量、方差、主权重和主梯度等优化器状态进行了分区,而不牺牲性能。 考虑到通信开销,ZeRO-2,3目前未在威震天实现。 事实上,GPT-3175B和图灵-NLG530B✁训练没有使用ZeRO。 优化器状态(16M) 梯度(2M) 模型Weights(2M) 记忆 Cost 通信 Cost 数据并行 已复制 已复制 已复制 20M all-reduce(M) 分布式优化器(ZeRO阶段1) 已分区 已复制 已复制 (4+16/N)M 减少散射(M)+所有聚集(M) ZeRO阶段2 已分区 已分区 已复制 (2+18/N)M 减少散射(M)*num_micro_batches+所有聚集(M) ZeRO阶段3 已分区 已分区 已分区 20M/N 1.5*all-reduce(M)*num_micro_batch M是参数✁数量,N是设备✁数量。 es 记忆分析 PyTorch内存管理 储存分析 GPT3存储 额外内存 所有减少自我注意 MLP 激活内存 变压器层嵌入层 模型记忆 参数梯度优化器 Params模型 §每个设备✁模型内存 𝑚𝑜𝑑𝑒�𝑠𝑖𝑧� 𝑁�≈ � ℎ×ℎ×4+ℎ×ℎ×4×2 � � h/t=1536 v/t=6400 ×�+ℎ× �+𝑠× � ℎ≈1.37�≈ � 175�(𝐺𝑃𝑇3) 𝑝×� 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 Micro批量大小 批处理size v=51200 s=2048 ah=96 h=12288 n=96 d=8 t=8 p=16 b=1 B=1536 模型状态 §模型内存成本(AMP) 分区模型大小 𝑁� 1.37B 参数(𝑴𝒑𝒂𝒓𝒂) 2𝐵𝑦𝑡𝑒𝑠×𝑁� 2.74GB 梯度(𝑴𝒈𝒓𝒂𝒅) 2𝐵𝑦𝑡𝑒𝑠×𝑁� 2.74GB 亚当优化器(𝑴𝒐𝒑𝒕) 4+4+4+4𝐵𝑦𝑡𝑒𝑠×𝑁� 21.9GB 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 微批size 批处理size v=51200 s=2048 a=96 h=12288 n=96 d=8 t=8 p=16 b=1 B=1536 模型状态-w/ZeRO 模型内存成本(AMP) 分区模型大小 𝑁� 1.37B 参数(𝑴𝒑𝒂𝒓𝒂) 2𝐵𝑦𝑡𝑒𝑠×𝑁� 2.74GB->ZeRO3->0.34GB 梯度(𝑴𝒈𝒓𝒂𝒅) 2𝐵𝑦𝑡𝑒𝑠×𝑁� 2.74GB->ZeRO2->0.34GB 亚当优化器(𝑴𝒐𝒑𝒕) 4+4+4+4𝐵𝑦𝑡𝑒𝑠×𝑁� 21.9GB->ZeRO1->2.7GB 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 微批size 批处理size v=51200 s=2048 a=96 h=12288 n=96 d=8 t=8 p=16 b=1 B=1536 激活内存(每层) 𝒂𝒄� 𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�=𝑠𝑏ℎ =𝑠𝑏ℎ(34+5𝑎𝑠) 11+5𝑎�+19+4 ℎ ℎ Attention MLP 2LayerNorm 完整✁检查点 §激活内存✁成本 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 微批 size 批处理size v=51200 s=2048 ah=96 h=12288 n=96 d=8 t=8 p=16 b=1 B=1536 掉落 §仅存储变压器层✁输入激活§Sublinear内存成本 §需要前向重新计算§完整✁检查点显著减少了训练所需✁内存 ,同时~36%计算开销。 34+5𝑎� ℎ 𝒂𝒄� 𝒂𝒄� 𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�=𝑠𝑏ℎ𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�=2×𝑏×𝑠×ℎ 张量平行 8+5𝑎�+3+16 � ℎ� �+3+4 𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�=𝑠𝑏ℎ 24+5𝑎� +10) 𝒂𝒄� =𝑠𝑏ℎ(� ℎ� Attention MLP 2LayerNorm t是TP大小 张量并行+序列并行 8+5𝑎� 3 4 � ℎ�+�+ +� � � 16+3 𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�𝒍𝒂𝒚𝒆�=𝑠𝑏ℎ 34+5𝑎𝑠) 𝒂𝒄� =𝑠𝑏ℎ(� ℎ� 存储要求 张量并行+序列并行+选择性检查点 Dropped 5𝑎� ℎ� 8 � + Dropped +�+�+�+� 3 16 3 4 掉落 𝑴𝒕𝒓𝒂𝒏𝒔𝒇𝒐𝒓𝒎𝒆�=𝑠𝑏ℎ34 𝒂𝒄� =𝑠𝑏ℎ( �) 存储要求 激活-摘要 方法 𝑴𝒂𝒄� 激活每内存 图层 再推荐在开销上 None 𝑠𝑏ℎ(34+5𝑎𝑠) ℎ 2.86GB 0% Full 2𝑏𝑠ℎ 50MB 36% TP+SP+Sel ctive e𝑠𝑏ℎ34(�) 106MB 4% 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 微批size 批处理size v=51200 s=2048 ah=96 h=12288 n=96 d=8 t=8 p=16 b=1 B=1536 通信成本 Name Operation 邮件大小 集团 循环 梯度积累 所有减少 𝑴𝒈𝒓𝒂� 数据并行group 1 𝑇𝑑� =𝑴𝒈𝒓𝒂� 𝐵� ×2(�−1) � □:型号渐变 □□□□ BW总线带宽 :d数据并行性 : Name Operation 邮件大小 集团 自我注意 •All-reduceforTP•所有聚集和减少散射 用于TP+SP 𝑚𝑖𝑐𝑟𝑜_𝑏𝑎𝑡𝑐ℎ_𝑠𝑖𝑧�×𝑠𝑒�×ℎ𝑖𝑑𝑑𝑒𝑛_𝑠𝑖𝑧� 张量平行group 通信size对于TPTP+SParethesame. 张力并行主义 通信成本公式 每个NCCL呼叫✁消息大小变压器层数 自我注意 𝑇𝑡� =2𝐵𝑦𝑡𝑒𝑠×𝑏×𝑠×ℎ 𝐵𝑊(𝑚𝑒𝑠𝑠𝑎𝑔�𝑠𝑖𝑧𝑒,𝐻𝑊) ×2(�−1)× � � 3+3 ×� � ×𝑏� MLP 词汇size 序列 长度 Attnheads 隐藏 size Layers Data平行 张量平行 管道平行 Micro批量大小 批处理size v s ah h n d t p b B 总线带宽:通过插值获得迷你批次✁数量母线BW校正系数全部降低)( 管道并行主义 §散射-聚集机制 P2P P2P Data平行 张量平行 管道平行 Micro批量大小 批处理size d t p b B 所有通过NVLINK收集。可以是 忽略。 计算成本 GPT-3175B✁训练计算分析 每批FLOP估算 模型FLOP