Let's Scale Step by Step:小模型外推最优 LR

155B 的 MoE,连扫一次学习率都扫不起

预训练集群已经排好队:10 万亿 token 的数据管线准备就绪,一个总参数 155B、但每个 token 只激活 17B 参数的 MoE(混合专家)模型等着上机。开训之前只剩一个问题悬而未决:学习率取多少?

学习率是训练里最敏感的超参数。调高一点,训练可能在某个清晨震荡发散,几周算力白烧;调低一点,模型学得又慢又浅,数月的机时只换回平庸的 loss。小模型时代这不算事,连扫几十次学习率,每次几小时就完事。155B 能上机,靠的是 MoE 的账法:参数按全量堆,算力只按每个 token 激活的 17B 付。可这个红利轮不到超参数:调一次学习率,就得把整场 10T token 的训练完整跑一遍,同样"扫一遍",在这个量级就成了天文数字。《Let's Scale Step by Step》把账单算得很具体:目标训练本身的算力,大约是所有代理实验算力之和的 98 倍;若坚持老办法,在模型规模和 token 预算两个维度上把学习率网格扫个遍,仅模型规模搜索一项就要多花约 240.3 ZFLOPs(ZFLOPs 是 10²¹ 次浮点运算)Step by Step。扫参这条老路在极端规模下不是有点贵,而是根本走不通。

为什么必须扫两个维度?因为最优学习率同时依赖两者:模型越宽,最优点会移动;token 预算越长,最优点也会移动。传统做法是拿一张"模型规模 × token 预算"的二维网格撒点试训,目标规模藏在网格角落。这篇论文的核心主张,是把这张二维网格塌缩成一条一维搜索:宽度一维交给迁移规则,token 一维交给外推曲线,最后只剩下沿 token 方向的一条轻量扫描。

论文两种方案的对比示意

图注:论文 Fig.1 的概念图。左图是传统做法:模型规模 M 与 token 预算 D 两个轴都要布点扫描,目标规模(五角星)藏在网格角落;右图是本文的两步方案:宽度交给迁移规则,沿 token 方向用少量代理运行加一条外推线直达目标。概念示意,图中不含任何具体数值。Step by Step

于是问题被逼成一个干净的形式:能不能不扫,只用便宜的代理实验,把 155B 模型跑 10T token 的最优学习率预测出来?论文的答复分两步走:第一步解决宽度,第二步解决 token 预算。先认清这套训练栈的底座。

论文的底座凭什么是 MoE、MLA、Muon 三件套?

这篇论文不发明架构,它驯服架构。目标模型用的是业内熟知的组合:现代 MoE 结构、MLA 注意力、Muon 优化器。先说 MoE。DeepSeekMoE 把"路由"这条路推到极致,靠两条设计策略:细粒度切分,同样容量的专家被切成更多更小的专家、激活 top-更多个,激活组合数指数膨胀,每个专家更容易各司其职;共享专家隔离,保留几个专家对每个 token 必开,把通用知识沉淀在那里,路由专家专注特化。16B 的 DeepSeekMoE 用大约 39.6% 的 LLaMA2-7B 计算量达到可比性能 DeepSeekMoE。

现代 MoE 的两步演化

图注:DeepSeekMoE 论文的架构演化图。(a) 传统 top-2 路由,每个 token 只走少数专家;(b) 细粒度切分,同样容量切成更多小专家、激活更多个;(c) 加上共享专家,绿色专家对每个 token 必开、不经过路由门。三种结构的总参数量与算力保持一致。DeepSeekMoE

注意力这块用的是 MLA(Multi-head Latent Attention)。普通注意力要缓存每一层的 K 和 V 矩阵,推理时 KV cache 是显存大头。MLA 把 keys 和 values 联合压进一个低秩潜在向量,推理时只需要缓存压缩后的向量,DeepSeek-V2 报告 KV cache 减少约 93.3%,同时性能不输 MHA DeepSeek-V2。这里先埋一个伏笔:论文在意 MLA,原因不在推理效率,而在它低秩投影的 fan-in 结构会让 μP 的缩放规则出现一个例外,第 3 章再回答这个例外是什么。

优化器是 Muon,近年从 NanoGPT speedrun 社区杀出来的选手:在普通动量累加之后,把更新矩阵做一次 Newton-Schulz 五步迭代的正交化,逼向最近的半正交矩阵,再乘学习率更新参数。直觉是让每一步更新方向更"几何化",而不是被梯度尺度绑架。Muon 只用于二维隐藏层参数,embedding 和输出头仍走 AdamW,在典型训练场景里的额外开销低于 1% Muon。

三块砖拼起来就是论文的训练底座:155B 总参 / 17B 激活、62 层、hidden 4096、128 个专家,stage 1 打算跑满 10T token。现在把问题磨利:要把最优学习率从小模型搬到大模型,μP 的缩放规则对这三件套的每一件都适用吗?router 和专家层的权重该算 matrix 还是 vector?下一章见分晓。

宽度这一维:小模型扫出的最优 LR,能直接搬给大模型吗?

先讲 μP 的根思想。直觉版本如下:网络变宽时,如果把初始化尺度和学习率按一套特定规则同步缩放,不同宽度的训练动态会收敛到同一族稳定形式。这和中心极限定理是一个味道:一堆独立随机变量叠加足够多之后,无论各自原本是什么分布,和的形状都会收拢到同一个钟形,剩下的自由度只有均值和方差。μP 要的就是这个效果:宽度不一样,训练过程的"体型"一样,于是小模型上扫出的最优点,搬到大模型上仍然是近似最优点。这套"正确的参数化"让跨宽度的最优超参不漂移。

这不是纸上谈兵。μTransfer 论文的实证:用 40M 参数的 proxy 调好的超参,直接迁移去训 GPT-3 6.7B(参数量相差约 168 倍,宽度约放大 16 倍),最终验证 loss 反而低于用原始配置重跑一遍的版本,整个调参成本只占预训练 FLOPs 的 7% μTransfer。这是真正的"零样本迁移":目标模型上一格超参都不用再扫。

但 μP 的规则是为 dense Transformer 写的,原论文的参数分类表里没有 router,没有专家层,也没有低秩投影。把它落到 MoE 上,关键动作是给每个参数按 fan-in 维度分类。判断标准很直白:权重的输入输出两个维度会不会都随宽度增长?都会增长的按 matrix-like 处理,学习率要乘一个缩放因子 fan_in_base/fan_in;只有一个维度增长的按 vector-like 处理,缩放因子是 1。在 MoE 里:router 和专家第一层全连接(FC1)的输入随 hidden 宽度增长,按 matrix-like;专家第二层全连接(FC2)的输入是固定数量激活专家输出的拼接,宽度放大时它不变,按 vector-like;embedding 和 bias 同理。最后是 MLA 例外:低秩投影维度在宽度缩放时保持固定,所以对应的上投影矩阵缩放因子退回到 1 Step by Step。

效果如何?论文用 0.6B/0.3B 的基底代理,深度固定、只放大宽度,沿宽度扩 2×、4×、8×(到 30.7B/3.6B),每个模型各自扫学习率。左图标准参数化(SP)下,四个模型的最优学习率(黑框标记)随宽度漂移得七零八落;换成 μP 后,四条验证 loss 曲线的谷底几乎对齐在同一个学习率上。宽度这一维被驯服了。

SP 与 μP 下最优 LR 随宽度的表现

图注:论文 Fig.3。左图是标准参数化(SP)下四条宽度递增模型的验证 loss 对学习率曲线,各曲线最低点(黑框标记)的横坐标随宽度明显漂移;右图换成 μP 后,四个谷底对齐到几乎同一个学习率。黑框标记即各模型最低 loss 处的学习率,图中不标注具体数值。Step by Step

但注意,训练目标不是"更宽的模型",而是"更多 token":10T token。而 token 这一维恰恰是 μP 管不到的管区。这是下一章的全部主题。

token 这一维:μP 管不着,就把最优 LR 当幂律来外推

这里有一个反直觉的事实,它决定了这篇论文后半段的走向:最优学习率随 token 预算增大而单调下降,而且即便用了 μP 参数化,这条下降曲线照样存在。Bjorck 等人的实验横跨 25B 到 800B token 预算、50M 到 2.7B 模型,结论是最优 LR 与 token 预算之间在 log-log 坐标里是一条直线,也就是幂律:最优 LR 与预算满足 $LR^*(D) = B \cdot D^{-\beta}$,指数 β 大约 0.3,单架构拟合优度 R² 落在 0.99 到 0.96 Bjorck。直线这个几何事实值得停下来看一眼:log-log 坐标里是直线,意味着每翻一倍预算,最优 LR 就乘上同一个固定比例。这是 LR 自己的 scaling law,不是 loss 的 scaling law,两条规律是两回事。

为什么预算越大,LR 反而要越小?可以借短跑和马拉松来想。训练早期模型离最优点很远,步子大自然走得快;越靠近收敛,参数就越需要精细的步长,否则会在最优点附近反复震荡。token 预算越长,模型要在越接近收敛的地方待得越久,所以一开始就不能把步子放到最大。猜错这个步长的代价很具体:Bjorck 用幂律反推 Llama-1 的 1T token 训练,发现它实际用的学习率比最优值高了 2.5 倍以上(实际 3×10⁻⁴,反推最优约 1.15×10⁻⁴)。也就是说在 1T token 的量级上,一个凭经验拍出来的学习率就可能让整场训练的性能打折。

这个方向的学术背景一句话就够:Kaplan 2020 发现 loss 与模型规模、数据量各自呈幂律 Kaplan,Chinchilla 2022 进一步指出模型与训练 token 应当等比例增长 Chinchilla。既然 token 量与模型量同等重要,token 这个维度就值得单独建模。真正的问题是工程上的:要测"不同预算下的最优 LR",老办法是每个预算单独训一次、每次再扫一次 LR,预算数乘扫描点数次训练,成本成倍爆炸。

突破口是 WSD 调度(Warmup-Stable-Decay,MiniCPM 提出)。它把训练分成三段:warmup 升温、stable 平台期以固定学习率长跑、decay 最后退火。Cosine 调度必须在开训前预知总步数,WSD 不用:stable 阶段的训练可以在任意步数分叉开始 decay,而且得到的结果与从头就用那个总预算训练等价 MiniCPM。于是同一次长跑,就能抽出多个"不同 token 预算"的检查点。

WSD 调度 vs Cosine 调度

图注:MiniCPM 论文的调度对比示意。橙色是 Cosine 调度,绿色与深橄榄色是两条终点不同的 WSD 调度,它们在 warmup 后都升至同一平台期,且平台段完全重合,只是在不同步数才开始衰减。这说明稳定阶段的训练可以"任意点分叉"。MiniCPM

论文在代理实验里连 decay 都省了。它跳过退火阶段,改用 EMA(指数移动平均,α=0.6)在训练中段平滑参数,单次训练里攒出多个 token 预算的有效验证 loss:每 2B token 记一次 EMA,每 10B 采样一次。然后是两段拟合。第一段,对每个预算 B,把验证 loss 当作 log 学习率的二次函数拟合,抛物线顶点就是该预算的最优学习率 η*。第二段,把这些顶点放进 log-log 坐标做线性回归,一条直线外推到 10T token。

承担这一步的代理是 10.8B/3.3B(约为目标宽度的四分之一),训练约 500B token,batch size 在 200B token 处从 8M 跳到 32M。回归只使用 255B 到 502B 之间的预算点,避开 batch 切换后的不稳定区。结果:拟合优度 R² = 0.95,外推到 10T token 得到 η* = 3.85×10⁻⁴ Step by Step。另外论文明确不迁移 batch size,只迁移学习率,这与 Bjorck 观察到的 batch size 与 token 预算对最优 LR 的影响近似独立是一致的。

外推最优学习率的完整证据链

图注:论文 Fig.5。左图是外推代理(10.8B/3.3B)在若干 token 预算下的验证 loss 对 log 学习率抛物线,每条曲线的顶点(星标)是该预算的最优学习率;右图把这些顶点在 log-log 坐标里连成直线外推到 10T token,标注拟合优度 R²=0.95 与预测值 3.85×10⁻⁴。Step by Step

到这一步,预测是漂亮的。但 R²=0.95 只是拟合线本身的直线度,真正的问题是:把 3.85×10⁻⁴ 这个数拿去训 155B 模型、跑满 10T token,它带得稳吗?

外推出来的 3.85×10⁻⁴,真的把 10T token 训练带稳了吗?

先算一笔账。承担外推的代理模型只有 10.8B 总参,训练约 500B token;把所有代理实验(宽度迁移加 token 外推)的算力加总,大约只有目标训练的 98 分之一 Step by Step。用一天规模的可控试错,替三个月的正式训练把学习率定了下来,这就是"预测后再训练"的算力经济学。把代理和目标摆在一起看:

配置Step 1 宽度代理Step 2 外推代理全尺寸目标
总参 / 激活参数0.6B / 0.3B10.8B / 3.3B(约目标 1/4 宽度)155B / 17B
层数 / hidden— / 256—62 / 4096
专家总数16—128
训练 token1.3B约 500B(255B–502B 用于回归)10T(stage 1)
batch size固定8M → 32M,200B token 处切换同左

再看训练本身。目标模型 stage 1 真跑满了 10T token,batch size 在 200B token 处从 8M 跳到 32M,训练 loss 全程没有出现 spike。为什么把"无 spike"当作证据?因为如果预测的 η* 明显偏高,batch 暴涨这一下往往就会让 loss 失控,这是对学习率最敏感的环节之一。它没崩,是第一道间接验证。

stage 1 完成后的评测覆盖了英文能力(MMLU、MMLU-Pro、BBH)、多语(Global-MMLU 的韩、日、越、中四个子集)、数学(MATH、GSM8K)、代码(MBPP、HumanEval)。在 MMLU-Pro 对估算算力(6ND)的 Pareto 前沿上,这个模型在相同或更低的算力下压过了 dots.llm1 和 GLM-4.5-Air 等同期对比模型 Step by Step。数据混合也在 6T token 处做过一次调整,把被低估的领域占比提上来,这是工程细节,不展开。

这段验证的意义要读准:它不是"某项指标刷了新榜",而是一个完整的生产级闭环。先用 1/98 的算力预测,再用真训练确认预测没把模型带崩,还顺手在 Pareto 前沿站稳。到这里,"小模型代理足以决定大模型最优学习率"看起来已经成立。但论文自己在结论里把边界划得很清楚,那是最后一章的事。

为什么值得记住它——以及它没证明的事

这篇论文值得记住,因为它完成了两件"第一次"。第一次把 μP 的缩放规则适配到带 MLA 和 Muon 的 MoE 上,并实证最优学习率沿宽度对齐;第一次在 10T token 的量级上验证了学习率对 token 预算的预测式缩放。把两件事连起来就是论文的主张:predict-then-train,先在代理规模把答案预测出来,再到全尺寸训练里兑现。它也顺手把两条容易混淆的边界划清了:μTransfer 只覆盖宽度一维,token 维度的外推是本文的扩展;loss 的 scaling law(Kaplan、Chinchilla 那类)和 LR 的 scaling law 是两回事,前者预测最终性能,后者预测超参本身。

但论文没有过度承诺,局限写得很直白。第一,最优性靠的是 loss 稳定和 benchmark 信号这类间接证据,它没在 155B 上扫完整张学习率网格来反证 3.85×10⁻⁴ 是不是真的全局最优。第二,整套验证只在 MLA 加 Muon 上成立,换成别的注意力机制或优化器,预测是否仍然有效没有保证。第三,也是论文自己点名的开放问题:稀疏度和宽度是联合缩放的,sparsity 这一根轴没有被单独解耦,沿稀疏度方向的受控 μP 研究还没人做过 Bjorck。第四,per-expert 的自适应学习率因为路由和数据混合带来的实现代价,被留作未来工作。

还有一件现实要交代:论文没有公开代码和模型,复现只能依赖附录里的配置表。回到开头的那个场景,10T token 的数据管线排着队,155B 的 MoE 等着上机,学习率是多少?这篇论文给出的答案是:用一组总算力只占 1/98 的代理实验先算出来,然后在大模型上把答案兑现。per-token 时代里,问题已经不是"模型能训多大",而是"参数在大规模之前能不能算出来"。它证明了从 10.8B 到 155B、从 500B 到 10T token 的这条路上,答案是可以算出来的;同时它划出的边界也提示着下一个战场的形状:稀疏度那一轴,还没有人驯服。

想深入可以读原文:Let's Scale Step by Step: Compute-Efficient Hyperparameter Transfer for Large-Scale Mixture-of-Experts(arXiv:2608.20061)

参考文献

  • Let's Scale Step by Step: Compute-Efficient Hyperparameter Transfer for Large-Scale Mixture-of-Experts — arXiv:2608.20061
  • Tensor Programs V: Tuning Large Neural Networks via Zero-Shot Hyperparameter Transfer(μTransfer,μP 的定义性来源)— arXiv:2203.03466
  • DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model(MLA 的来源)— arXiv:2405.04434
  • DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models — arXiv:2401.06066
  • Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity — arXiv:2101.03961
  • Scaling Laws for Neural Language Models — arXiv:2001.08361
  • Training Compute-Optimal Large Language Models — arXiv:2203.15556
  • Scaling Optimal LR Across Token Horizons — arXiv:2409.19913
  • MiniCPM: Unveiling the Potential of Small Language Models with Scalable Training Strategies(WSD 调度的来源)— arXiv:2404.06395
  • Muon: An optimizer for hidden layers in neural networks(Keller Jordan 博客)— kellerjordan.github.io
Let's Scale Step by Step:小模型外推最优 LR