训练Transformer时常使用的优化器是什么?
训练 Transformer 模型时,最常用且被视为行业标准的优化器是 AdamW(Adam with decoupled Weight Decay)。
虽然最初的 Transformer 论文(Attention Is All You Need)使用的是标准的 Adam 优化器,但在后来的实践和研究中,AdamW 几乎已经完全取代了 Adam。
以下是关于 Transformer 优化器的详细解析:
1. 为什么是 AdamW 而不是标准的 Adam?
- 标准 Adam 的问题: 在标准的 Adam 优化器中,L2 正则化(权重衰减)是与梯度更新耦合在一起的。由于 Adam 会对梯度进行自适应缩放,这导致权重衰减的效果被削弱,使得模型容易过拟合。
- AdamW 的改进: AdamW 将权重衰减(Weight Decay)从梯度更新步骤中解耦出来,直接应用于权重本身。由于 Transformer 模型参数量巨大,极易过拟合,正确的权重衰减对模型的泛化能力至关重要。因此,AdamW 在训练 BERT、GPT 系列、LLaMA 等模型时成为了标配。
2. Transformer 训练的“黄金搭档”:AdamW + 学习率调度器 (Scheduler)
单独使用 AdamW 往往无法稳定训练 Transformer,它必须配合特定的学习率调度策略。最经典的组合是:
- 学习率预热 (Warmup): 在训练的前几千步,学习率从 0 线性增加到设定的最大值。这是因为 Transformer 刚初始化时,LayerNorm 和注意力机制的梯度非常不稳定,直接使用较大的学习率会导致模型崩溃(Loss 飞点)。
- 余弦退火衰减 (Cosine Annealing Decay): 达到最大学习率后,按照余弦曲线缓慢降低学习率,直到训练结束。
3. 其他常用于 Transformer 的优化器
随着大语言模型(LLM)的发展,显存成为了巨大的瓶颈,因此也衍生出了一些其他的优化器:
- Adafactor:
- 代表模型: Google 的 T5 模型。
- 特点: 标准 Adam 需要保存一阶动量和二阶动量,相当于要占用模型参数量 2 倍的额外显存。Adafactor 通过矩阵分解技术大幅降低了二阶动量的显存占用,非常适合显存受限情况下的超大模型训练。
- 8-bit Adam / Paged AdamW:
- 应用场景: QLoRA 微调大模型(如 LLaMA、ChatGLM)。
- 特点: 由
bitsandbytes库提供。它将优化器的状态量化为 8-bit(甚至结合统一内存管理放入 CPU 内存),从而极大降低微调 LLM 时的显存需求。
- Lion (EvoLved Sign Momentum):
- 背景: Google 提出的一种通过符号回归搜索出的优化器。
- 特点: 比 AdamW 更节省显存(只需要保存动量),在某些视觉 Transformer (ViT) 和语言模型中展现出了比 AdamW 更好的泛化能力和更快的收敛速度。
- Sophia:
- 背景: 斯坦福大学近期提出的二阶优化器。
- 特点: 专门针对语言模型设计,利用对角海森矩阵(Hessian)的估计来调整步长,据论文称可以比 AdamW 快 2 倍达到相同的损失值。
总结
如果你现在要训练或微调一个 Transformer 模型:
- 首选 Baseline:
AdamW+Cosine Scheduler with Warmup+Gradient Clipping(梯度裁剪,防止梯度爆炸)。 - 如果显存不够: 考虑使用
Adafactor或者8-bit AdamW。
右滑查看面试常问