正确设置学习率调度可以决定训练的成败。太高模型会发散(损失尖峰,训练失败)。太低训练太慢或陷入困境。调度与批大小、模型大小和数据交互——没有通用设置。理解学习率调度帮助你解读训练曲线和诊断训练问题。
标准LLM训练调度有三个阶段:(1) 预热:在前0.1–2%的训练步数中,将学习率从约0线性增加到峰值。这防止随机初始化的模型在早期采取过大的步长。(2) 稳定/峰值:在训练的主体部分维持峰值学习率。(3) 衰减:按余弦曲线将学习率降低到接近零。这让模型在最后阶段进行精细调整。
余弦衰减:lr(t) = lr_min + 0.5 · (lr_max − lr_min) · (1 + cos(π · t / T)),其中t是当前步数,T是总步数。这产生一条平滑曲线,一开始缓慢下降,然后加速,最后在接近最小值时再次减慢。为什么选择余弦?它在经验上效果好,避免了基于步长的调度的突然转变。最终学习率通常比峰值小10倍。
线性缩放规则:如果批大小翻倍,学习率也翻倍。这在梯度估计变得更准确(来自更大的批次)时保持有效步长。该规则在中等批大小下近似成立,但在非常大的批次下失效,此时最优学习率的增长慢于线性。正确处理这种关系对分布式训练至关重要,因为批大小随GPU数量扩展。