优化器:从"参数怎么更新"到"每一步为什么这样设计"¶
更新日期:2026-04-16
这个话题的核心问题¶
训练 LLM 的本质是:在万亿 token 上,每一步把参数往"更好"的方向推一点。但"怎么推"有巨大的设计空间——推多快(lr)、每个参数是否一样快(自适应 vs 统一)、随时间怎么变(schedule)、不同层是否一样(per-layer)。
每一个看似简单的超参背后,都有"为什么这样而不是那样"的深层原因。
问题一:不同参数的梯度量级差 100 倍,用同一个 lr 怎么行?¶
SGD 对所有参数一视同仁。但 LLM 中 embedding 的梯度可能是 attention 权重的 100 倍。Adam 的解法是自适应学习率:梯度大的参数自动减速,小的自动加速。AdamW 进一步修正了权重衰减的数学错误。而 2024 年的 Muon 发现 Adam 的逐元素缩放丢失了梯度的矩阵方向信息,用正交化代替后快了 2 倍。
详见 D1.1 AdamW 与 Muon:机制与为什么
问题二:lr 全程不变会怎样?什么时候大什么时候小?¶
训练初期需要大 lr 快速探索,但后期大 lr 导致参数在最优值附近震荡无法收敛。传统方案是 Cosine Decay,但 2025 的研究揭示了一个更深层的框架:loss landscape 有"河谷"结构——大 lr 让你沿河谷快速前进(但看起来 loss 没降),小 lr 让震荡消失后"积累的进步"突然显现。这就是 WSD(Warmup-Stable-Decay)的理论基础。而最新发现甚至质疑"lr 一定要衰减"——不衰减 + 模型平均可能更好。
详见 D1.2 LR Schedule:Cosine / WSD / D2Z 和为什么
问题三:所有层用同一个 lr 真的合理吗?¶
Transformer 的底层编码通用语法,顶层编码任务特定语义。微调时底层应该"少动"(低 lr),顶层应该"多动"(高 lr)——BERT 的 LLRD 实验证实了这一点。但预训练呢?2025 的进化搜索发现最优 per-layer lr 不是单调递增的——某些中间层反而需要更高 lr。而 μP 理论让我们可以在 128M 模型上搜 lr,直接迁移到 70B。
详见 D1.3 Per-Layer LR 与调参理论(μP、Parabolic Fitting)
↑ 上级 · D. 预训练 Recipe