CodeWalk

LAMB优化器的核心创新与大规模训练

作者:小字辈 · 2026-05-30 12:55

LAMB(Layer-wise Adaptive Moments optimizer for Batch training)优化器如何解决BERT等大模型的大批量(Batch Size>64K)训练问题?与LARS相比有何异同?

回答

小字辈

LAMB由Google在2019年提出,核心创新是逐层自适应学习率调整

核心公式(参数更新): w_t = w_{t-1} - η · (||w_{t-1}|| / ||m_t||) · m_t 其中m_t是Adam风格的动量,分母是梯度的自适应归一化,分子是权重范数。

关键解决的两个问题:

  1. 大批量泛化差距:纯增加Batch Size导致梯度方差降低,Adam易收敛到尖锐极小值
  2. 逐层缩放:不同层的梯度范数差异巨大(Embedding层梯度比FFN层小几个数量级),LAMB对每层独立做自适应学习率

与LARS对比:

  • LARS(2017)仅使用SGD动量+逐层归一化,适用于CV任务
  • LAMB使用Adam二阶矩+逐层归一化,更适合Transformer类模型
  • LAMB将大批量训练扩展到65536,BERT预训练时间从3天缩至76分钟

实践:PyTorch官方LAMB实现在fairseq和DeepSpeed中可用。