把模型“切开”喂给 GPU:Megatron-LM 的并行奥秘

把模型“切开”喂给 GPU:Megatron-LM 的并行奥秘

16分钟 ·
播放数76
·
评论数3

大家好,欢迎收听播客「听懂 100 篇 AI 经典论文

为何当今的自然语言处理(NLP)领域,模型变得越来越大?因为经验表明,更大的 Transformer 语言模型能显著提升 NLP 任务的性能

然而,训练这些动辄数十亿甚至万亿参数的“巨无霸”模型面临一个核心挑战:它们往往太大,无法全部载入单个处理器(如 GPU)的内存中,特别是考虑到优化器状态等额外内存需求。现有的模型并行方法,如 GPipe 或 Mesh-Tensorflow,虽然能克服内存限制,但通常需要重写模型或依赖定制的编译器/框架,门槛较高。

本期播客里我们探讨的 Megatron-LM ,是来自英伟达(NVIDIA)的研究论文,它提出了一种简单高效的层内模型并行方法(intra-layer model parallelism)。

我们来看看这项技术如何仅仅通过在现有 PyTorch 中插入几个简单的通信操作,就成功训练出高达 83 亿参数的 Transformer 模型。

本期播客中你将听到 (Outline):

为什么我们需要训练越来越大的语言模型?更大的模型带来了哪些挑战?

传统的分布式训练方法(如数据并行)以及一些现有模型并行方法(GPipe, Mesh-Tensorflow)的局限性在哪里?

Megatron-LM 的核心思想:简单高效的层内模型并行

  • 它为什么被认为是简单和高效的?(无需新编译器,仅需少量 PyTorch 通信操作)
  • 它如何利用 Transformer 模型的结构特点进行并行?

层内并行具体实现:

  • 在多层感知机 (MLP) 中,权重矩阵如何分割以实现并行计算
  • 在自注意力 (Self-Attention) 模块中,Keys (K)、Queries (Q)、Values (V) 如何并行化? 
  • 整个 Transformer 层(Self-Attention + MLP)在前向和反向传播中只需要多少次通信操作?(每个模块 2 次 All-reduce,一层共 4 次) 
  • 如何处理输出嵌入层和损失计算,以最大程度地减少通信量?(词汇维度并行化,损失计算融合)
  • Dropout、Layer Normalization 和残差连接等操作如何处理?(复制计算以避免通信)

大规模训练的实践:

  • Megatron-LM 如何与数据并行结合形成混合并行策略?
  • 他们使用了多大的模型(最大 8.3B 参数)和多少块 GPU(最多 512 块)进行训练
  • Megatron-LM 在不同规模下的扩展性分析,弱扩展性效率如何?(高达 76%)
  • Attention head 数量对扩展效率的影响是什么?
  • Megatron-LM 在训练较小模型时也能带来速度提升吗?(强扩展性) 

模型尺寸与性能的关系:

  • 增大 GPT-2 模型尺寸(从 355M 到 8.3B)如何影响困惑度? 
  • 为什么原始 BERT 架构在模型尺寸增大时会性能下降
  • Megatron-LM 如何通过调整层归一化和残差连接的位置来解决 BERT 的训练稳定性问题?
  • 使用优化后的 BERT 架构,增大模型尺寸(从 336M 到 3.9B)如何影响下游任务性能? 

Megatron-LM 取得的 SOTA 结果:

GPT-2 模型在 WikiText103 (困惑度 10.8) 和 LAMBADA (准确率 66.5%) 上的表现 ◦

BERT 模型在 RACE (准确率 90.9%) 上的表现 

关键概念速查 (Key Concepts Explained):

Transformer 模型 (Transformer Model): 一种基于自注意力机制的神经网络架构,是现代大型语言模型(如 BERT, GPT-2)的基础。

模型并行 (Model Parallelism): 一种分布式训练技术,将模型的权重或计算分布到多个设备上,用于训练单个设备无法容纳的大模型。

数据并行 (Data Parallelism): 一种分布式训练技术,将训练数据批量分割到多个设备上独立处理,然后同步梯度。

层内模型并行 (Intra-layer Model Parallelism): Megatron-LM 采用的模型并行方法,将 Transformer 层内部的计算(如线性层、注意力计算)分割到多个设备上并行处理

多层感知机 (MLP): Transformer 层中的一个前馈网络块,包含两个线性层和激活函数。在 Megatron-LM 中,其线性层被按列和按行分割并行化 

自注意力 (Self-Attention): Transformer 的核心机制,允许模型关注输入序列中的不同部分。Megatron-LM 按注意力头并行化 Key, Query, Value 的计算 .

GeLU 激活函数 (GeLU Activation): 一种常用的非线性激活函数,在并行 MLP 中可以独立应用

层归一化 (Layer Normalization): 一种用于稳定神经网络训练的技术。在大型 BERT 模型中,其位置对训练稳定性至关重要 。

残差连接 (Residual Connection): 一种跳跃连接,帮助梯度更好地反向传播,常用于深度神经网络 .

All-reduce (全约简): 一种集合通信操作,用于在分布式设备组上汇总数据(如求和)并将结果分发给所有设备。Megatron-LM 使用它来同步并行计算的结果。

SOTA (State-of-the-Art): 指在特定任务或数据集上目前公认的最佳性能结果

困惑度 (Perplexity, PPL): 衡量语言模型对文本序列预测能力的一个指标,值越低越好

扩展效率 (Scaling Efficiency): 衡量随着使用设备数量增加,模型训练吞吐量相对于理想线性加速的比例 .

了解更多 (Where to Learn More):

论文名称: Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism 

原文链接:arxiv.org

开源代码: :github.com

展开Show Notes
您好,什么时候再更新?
Mars任鑫
:
您好,今天发新一期。
感谢 节目做的很好!