学习率与 warmup:控制步长,前期爬坡防炸

学习率(learning rate,(\eta)) 是优化器每一步沿梯度走多远。学习率预热(warmup) 让 (\eta) 在前 (T_{\mathrm{warm}}) 步从近 0 线性爬到峰值,再按余弦或线性降下来。没有合理的 (\eta) 日程,LN / RMSNorm 也救不了开局爆炸或后期震荡。

段末注释:日程(schedule) 指 (\eta_t) 随步数 (t) 变化的函数;warmup 只是日程的前缀。后文 (\eta_{\mathrm{peak}}) 为峰值学习率。

系列导读5050.大模型-算法要点-0


1. 作用

层面 (\eta) / warmup 在干什么
步长 (\eta) 大则学得猛、易炸;小则稳、慢、可能卡在差盆地
开局 早期 Adam 的 (\hat{v}) 不准、残差/Norm 未就位,直接用峰值易 loss spike
后半 衰减让更新变细,利于收敛、少破坏已学特征

Dropout / weight decay 管正则;(\eta) 管走多快。四者常一起出现,但不要用加大 Dropout 去「代替」把 (\eta) 降下来。


2. 功能 / 机制

线性 warmup + 余弦退火(LLaMA 等常用):

[
\eta_t=
\begin{cases}
\eta_{\mathrm{peak}}\dfrac{t}{T_{\mathrm{warm}}}, & t<T_{\mathrm{warm}}\[0.8em]
\eta_{\min}+\dfrac{1}{2}(\eta_{\mathrm{peak}}-\eta_{\min})\left(1+\cos\pi\dfrac{t-T_{\mathrm{warm}}}{T-T_{\mathrm{warm}}}\right), & t\ge T_{\mathrm{warm}}
\end{cases}
]

BERT 用线性 warmup + 线性衰减到 0。社区实现:get_cosine_schedule_with_warmup / get_linear_schedule_with_warmup(HuggingFace)。

图 1 warmup 爬坡 → 峰值 → 余弦下行

推理不用 (\eta)。只有训练(含微调)有学习率。

和 batch 的耦合:峰值常随全局 batch 近似线性放大(linear scaling),再靠 warmup 把放大后的 (\eta) 送上去。换卡数却不改 (\eta),等于暗改日程。


3. 默认经验值

场景 (\eta_{\mathrm{peak}}) warmup 衰减
BERT 预训练 (10^{-4}) 10k steps 线性到 0
LLaMA 预训练 (\sim 3\times 10^{-4})(随规模) 2k steps 余弦;AdamW (\beta_2=0.95)
全量微调底座 (10^{-5})~(2\times 10^{-5}) 几十~几百 step 线性或余弦
LoRA / PEFT (10^{-4})~(2\times 10^{-4}) 短 warmup 余弦常见
小模型 / ProteinMPNN Adam 默认 (10^{-3}) 量级 可不做或很短 官方未强调 cosine

Post-LN(原版 Transformer、ProteinMPNN)对 warmup 更敏感;Pre-LN / Pre-RMSNorm 可以短一些,但大 batch 仍建议保留。

(\eta) 过大:loss 尖刺、NaN、梯度裁剪常年顶满。过小:欠拟合。微调切忌沿用预训练峰值。


4. 整体应用

  • 架构:不占层。Post-LN vs Pre-LN 只改变「需要多长 warmup」。
  • 训练:优化器 lr= + scheduler;按 step 计,不要只按 epoch(变长 batch 会对不齐)。
  • 推理:无此参数。采样随机性看 temperature / top-(p)。

HuggingFace:learning_ratewarmup_steps / warmup_ratiolr_scheduler_type


5. 使用案例

BERT:(10^{-4}),warmup 10k,线性衰减,decay 0.01。
LLaMA:余弦 + 2k warmup,decay 0.1,clip 1.0。
LoRA 微调 Qwen:常见 (1\text{e-}4)~(2\text{e-}4),warmup_ratio=0.03
ProteinMPNN:Adam,混合精度;骨架噪声与 Dropout 是正则,学习率仍按 Adam 常规量级,没有 LLaMA 那套长日程。


6. 易混对照

名称 差在哪
Weight decay (\lambda) 拉 (W) 向零,不是步长
梯度裁剪 限制 (\
Temperature 推理 softmax;与 (\eta) 无关
(\varepsilon)(Adam / LN) 除零垫,不是学习率

参考

  • Vaswani et al.(warmup 与 (d^{-0.5}) 日程);Devlin et al., BERT。
  • Touvron et al., LLaMA(cosine + 2k warmup)。
  • 实现:HuggingFace get_*_schedule_with_warmuptransformers.TrainingArguments
-------------本文结束感谢您的阅读-------------