更大的模型是趋势 大型训练模型的挑战 高计算成本 计算成本 § 每次迭代的下限 :(请参阅 https: / / arxiv. org / abs / 2104.04473) !96 ℎ(1 ++)6ℎ16B : 批量大小 , S : 序列长度 , l : 变压器层数 h : 隐藏大小 , V : 词汇大小 §2150 ZettaFLOP(带 1.5 T 令牌的 175B)§1 ZettaFLOP = 1024 ExaFLOP 挑战 §128 DGX A100 , 在 170 120 天内训练。(约 50 % 的计算效率) 大型训练模型的挑战 高内存成本 内存成本(混合精度、本机实现) §模型状态 (总计: 3.5 TB)§参数 : 350GB (175B * 2 字节)§渐变 : 350GB§优化器 : 2800GB § 激活:? 挑战 §型号无法容纳单个 GPU 甚至单个 GPU 服务器。(> 35p A100 80G) § 模型并行性是跨多节点的必备条件 大型训练模型的挑战 §型号无法适应单个 GPU 甚至单个 GPU 服务器。(> 35p A100 - 80G)§极其巨大的计算能力 : 约 16K A100 * 天计算。(不考虑效率) 我们需要什么 :§ 具有模型并行的有效框架§ 软件和系统的仔细协同设计 NeMo 和 MEGATRON NeMo 和 Megatron - LM 是 NVIDIA 的 FW•有效地训练世界上最大的基于变压器的模型。 实现高利用率和高规模化成千上万•的 GPU数十亿的列车变压器模型•参数 大型变压器培训技术概述 • Parallelisms:•管道并行性•张量并行性• Sequence Parallelism专家并行性 • 内存优化 :• 分布式优化器(≈ DeepSpeed ZeRO - 1) •检查点激活• 选择性激活检查点 • Others:•FP16 / BF16 训练 , 优化内核等•PP 和 TP 的通信重叠 GPT - 3 模型的分布式训练 模型并行性 § 张量模型并行性 §层内§跨多个设备拆分各个层§实现简单§大矩阵下性能良好§细粒度、高频通信 § 管道模型并行性 §层间§跨多个设备拆分层集§粗粒度通信§可推广到几乎所有的 DNN§需要大批量以实现高吞吐量§工人之间的负载不平衡 GPT - 3 模型的分布式训练 §张量模型平行度 -- MLP f 和 g 是共轭算子 , f 是恒等算子 , g 是正向传递中的全归约算子 ; 在向后传递时 , f 是 all - reduce 运算符 , g 是身份运算符。 GPT - 3 模型的分布式训练 §张量模型并行性 - 自注意 f 和 g 是共轭算子 , f 是恒等算子 , g 是正向传递中的全归约算子 ; 在向后传递时 , f 是 all - reduce 运算符 , g 是身份运算符。 平行 Megatron v3 中的新功能 : 序列并行性 g 和 \( \overline{g} \) 是共轭的。g 在前向传递过程中进行 all-gather 操作,在反向传递过程中进行 reduce-scatter 操作。\( \overline{g} \)在前向传递过程中进行 reduce-scatter 操作,在反向传递过程中进行 all-gather 操作。 GPT - 3 模型的分布式训练 § 管道模型并行性 - 1F1B m : 微型批次的数量 p : 管道阶段的数量向前步进时间: 向后步进时间: 气泡时间 = (p − 1) × (+ )理想时间 = × (+ )总时间 = ( + − 1) × (+ ) =+,++-./01.02.3-/01.=4561气泡时间开销 GPT - 3 模型的分布式训练 § 交错管线模型并行性 GPT - 3 模型的分布式训练 存储要求激活内存优化 完整的检查点 §存储(或“检查点处理”)一组层的输入激活,并在反向传播期间通过额外的前向传播重新计算其他所需的激活。 § 显着减少了训练所需的内存 , 同时具有〜 36 % 的计算开销。 序列并行 + 选择性检查点 §只重新计算每层中占用大量内存但重新计算成本不高的一部分。 §使用序列并行地分布激活的其他部分。 § 将重新计算开销从 ~ 36% 降低到 ~ 4% 。 激活检查点 Megatron v3 中的新功能 : 选择性检查点 仅重新计算每层中占用大量内存但重新计算成本不高的一部分。 (称为选择性激活重新计算) 发现准恒稳操作通常具有较大的输入规模,因此相应的激活值也较大,然而每个输入元素的浮点运算(FLOPs)数量非常低。 Excepons 和 Limitaons : 仅在与其他并行技术的结合中效果良好 通过使用序列并行和选择检查点 , 从 ~ 36% 到 ~ 4% 。 分布式优化器Megatron v3 的新功能 梅特隆V3实现了分布式优化器,将动量、方差、主权重和主梯度等优化器状态进行了分区,而不牺牲性能。 考虑到通信开销, ZeRO - 2, 3 目前未在威震天实现。 事实上 , GPT - 3 175B 和图灵 - NLG 530B 的训练没有使用 ZeRO 。 储存分析 存储要求Params 模型 § 每个设备的模型内存 𝑁#𝑚𝑜𝑑𝑒𝑙𝑠𝑖𝑧𝑒≈ℎ×ℎ𝑡×4+ℎ×ℎ×4𝑡×2×𝑛𝑝+ℎ×𝑣𝑡+𝑠×ℎ𝑡≈1.37𝐵≈175𝐵𝑝×𝑡(𝐺𝑃𝑇3) 存储要求模型状态 § 模型内存成本 (AMP) 存储要求模型状态 - w / ZeRO §模型内存成本 (AMP) Note:•_方程中的前 4 个 : fp32 类型的参数副本 •_方程中的第二个 4 : fp32 类型的梯度复制 •_方程中的第三个 4 : fp32 类型的动量 •_方程中的第四个 4 :与 fp32 型的方差 存储要求激活内存(每层) 存储要求完整的检查点 § 激活内存的成本 §仅存储变压器层的输入激活 §Sublinear 内存成本§需要前向重新计算 §完整的检查点显著减少了训练所需的内存, 同时~36%计算开销。 存储要求张量平行 张量并行 + 序列并行 存储要求 张量并行 + 序列并行 + 选择性检查点 数据并行化 𝑇1#=𝑴𝒈𝒓𝒂𝒅𝐵𝑊×2(𝑑−1)𝑑 : 型号渐变 BW总线带宽: d数据并行性: 张力并行主义 张力并行主义通信成本公式 管道并行主义 § 散射 - 聚集机制 每批 FLOP 估算GPT - 3 175B 的训练计算分析 每个 GPU 的模型 FLOPS = 模型 FLOP / (批处理时间 * GPU 数量)A100 训练效率 = 每个 GPU 的模型 FLOPS / 312模型 FLOP(每批) = 对于大型GPT模型(包括TP和PP),它可以实现超过150 Model TFLOPS / A100。如果该值小于120,则通常会在训练过程中出现一些性能问题。我们可以通过计算训练期间每个 GPU 实现的 FLOPS 来检查我们的训练效率是否符合预期。 Takeaway POINTS OOTB混合精准训练 Flashattention... BF16 建议用于较大的模型训练。 (> 20B) 对于大规模训练(弱缩放和强缩放) , 我的直觉 : 如果内存不足:选择性激活检查点机制 分布式优化器 逐步采用张量并行(启用序列并行,并保持(隐藏/TPU)至少1024,理想情况下为2048。) 逐步采用管道并行 完全激活检查点 如果内存不是问题 : 数据并行更大的 batchsize 感谢您的观看- 谢谢 -