学习率(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)。

推理不用 (\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_rate、warmup_steps / warmup_ratio、lr_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_warmup;transformers.TrainingArguments。