对矩阵
将
对矩阵
由于前一步的切分导致中间结果
all-reduce
合并计算结果;对 Self-Attention 部分的并行化设计利用了 Multihead Attention 本身的并行性,从列方向切分权重矩阵,并保持了与每个头的对应:
Dropout 的部分和之前 MLP 部分基本一致,将权重矩阵
总体来看,对 Attention 部分的并行化操作仍然需要在首尾分别添加
流水线并行(Pipeline Parallelism):GPipe将模型划分为多个连续的阶段,每个阶段包含若干的层,再把这些阶段分配到不同的 GPU 上,使得各个 GPU 能在时间上错开地处理不同的数据。
PipeDream-Flush 把一个迭代分成三个阶段:
尽管 PipeDream-Flush 与 GPipe 的 bubble time size 相同,但是由于 PipeDream-Flush 限制了执行中的微批次数量,因此相较于 GPipe,更加节省显存:
在 PipeDream-Flush 的基础上,Megatron 进一步将每个微批次划分为多个阶段,使得每个 GPU 上保存多个不同的连续阶段,例如:
随着大模型参数量的不断增大,模型训练过程中激活值占用的显存也显著增加,已成为优化训练性能时不可忽视的关键因素。
相关工作提出了一些方法来解决激活值占用过多显存的问题,包括:
Transformer Layer 中最重要的部分是 MLP 和 Attention,还包括两层 LayerNorm;
MLP Block:
总计需要存储
综合 MLP,Attention 和 LayerNorm,总计需要存储
all-gather
,反向传播时作 reduce-scatter
;
通过将序列并行(SP)和张量并行(TP)相结合,Megatron 成功地减少了大型模型训练中激活值所占用的显存;该方法可以与选择性激活重计算(Selective Activation Recomputation)等技术结合,进一步降低显存需求。实验结果表明,Megatron 能够将显存占用减少超过 5 倍,并将由于重计算带来的计算开销降低 90% 。
Megatron 采用了多种并行策略:
在对 Transformer 结构进行细微修改的基础上,结合针对服务器架构的优化,Megatron 在提升 GPU 利用率、降低显存占用和提高训练效率方面取得了显著成果。
https://marp.app/
![w:500 center]()