LECTURE 11

缩放定律(下):真实模型是怎么做缩放分析的

把 MiniCPM、DeepSeek、Qwen、Kimi K2、LLaMA 3 的技术报告拆开看:他们究竟跑了哪些实验、拟合了什么函数、省下了多少算力,以及 muP 在真实 Transformer 上到底成不成立。

讲师:Tatsunori Hashimoto 日期:2026-05-04 原始材料:lecture_11.pdf

0. 本讲导读

上一讲(Lecture 09)建立的是缩放定律的理论骨架:为什么损失对参数量、数据量呈幂律;联合定律 $L(N,D)=E+A N^{-\alpha}+B D^{-\beta}$ 长什么样;Chinchilla 的三种拟合方法(最小损失包络、IsoFLOP 抛物线、参数化联合拟合)分别怎么做;tokens/param $\approx 20$ 是怎么来的;Kaplan 与 Chinchilla 为什么会分歧;muP 的规则表长什么样。那一讲的落脚点是「原理上应该这样做」。

这一讲是同一套工具的工程落地。Tatsu 在开场提了三个非常具体的问题,整堂课就是在回答它们:

  • Chinchilla 那一套在真实的大模型训练里真的管用吗?——2022 年以后,公开披露完整缩放分析的模型有哪些,他们照做了没有,结果准不准。
  • 拟合缩放定律本身能不能省算力?——Chinchilla 要求每个数据点都从头训到底(不能中途早停),这让拟合成本从 $O(n)$ 变成 $O(n^2)$。有没有办法绕过?
  • 该不该为了「好缩放」去挑特定的架构和参数化?——muP、优化器选择、RMSNorm 的可学习增益,这些看似无关的设计决定了你的小规模结论能不能外推。

和上一讲最大的风格差别是:这一讲几乎全是技术报告的一手图表。Tatsu 逐张拆解 MiniCPM 和 DeepSeek 的缩放实验,再横向扫过 Qwen、Kimi K2、Hunyuan、LLaMA 3、MiniMax,最后用两个大规模实证研究(StepFun 的 Step Law、Lingle 的 muTransfer 复现)来检验「超参缩放律」和「muP」这两条路线各自的可信度。

核心结论
  • 2024 年以后的公开配方基本收敛成两条路线:DeepSeek 路线(不用 muP,假设大部分超参对规模不敏感,只对 LR/batch 做经验缩放拟合 + IsoFLOP 定模型大小)和 MiniCPM 路线(用 muP 让超参跨规模不变,再用联合拟合定数据/模型比)。
  • 两条路线都靠 WSD(warmup–stable–decay)学习率把 Chinchilla 拟合的成本从 $O(n^2)$ 压回 $O(n)$:一条稳定期长跑,在任意 checkpoint 分叉出短衰减,就能得到一个合法的「训到底」数据点。
  • 公开报告里的最优 tokens/param 比值普遍远大于 20:MiniCPM 联合拟合给出 $D/N\approx 96$($10^{21}$ FLOPs 处),Hunyuan 给出 96:1(对激活参数),LLaMA 3 给出 39:1。原因既有方法论差异,也有推理成本这个 Chinchilla 完全没有计入的项。
  • StepFun 的大规模网格实验说明:固定 $(N,D)$ 时损失关于 $(\log\text{LR},\log B)$ 是凸的(所以最优点可以干净地定位),且 batch size 主要由数据量 $D$ 决定,学习率主要由 $N$ 决定。
  • muP 在宽度方向确实能让最优 LR 跨 $128\to 8192$ 稳定,但它对现代 Transformer 的若干组件不鲁棒:RMSNorm 的可学习增益、基于符号的优化器(Lion)、以及强 weight decay(0.1)都会破坏迁移性。好消息是前两者可以直接去掉而几乎不掉性能。
  • Tatsu 反复强调的方法论警告:任何「新优化器快 X 倍」的说法,都必须在多个模型规模 × 多个 Chinchilla 比值上验证——绝大多数报告的加速比会随规模衰减,而且往往只是因为基线的 LR 没调好。

1. 2022 之后:公开配方里的缩放长什么样

2022 年 Chinchilla 之后公开披露缩放细节的模型时间线
课上用来定位问题的一张「文献地图」。上方是 2022 年的 Chinchilla(Training Compute-Optimal Large Language Models)——这是上一讲讲到的、最后一个把缩放细节讲透的模型。下方六篇是 2024 年以后仍然公开披露缩放分析的工作:DeepSeek LLM(2024)、MiniCPM(2024)、LLaMA 3(2024)、Hunyuan-Large(2024)、MiniMax-01(2025)、Kimi K2(2026)。注意这份名单有多短:绝大多数前沿模型的技术报告已经不再公布缩放实验了,所以能拿来学的公开配方就这么几份。

这张图本身就是一个结论:缩放分析的细节正在变成商业机密。Chinchilla 之后,DeepMind/OpenAI/Anthropic 一系的模型再没有公开过完整的 IsoFLOP 曲线。今天还愿意把实验图放出来的,主要是中国的几个团队(DeepSeek、面壁 MiniCPM、Qwen、Kimi、腾讯 Hunyuan、MiniMax)和 Meta 的 LLaMA 3。所以这一讲的素材天然偏向这几家。

1.1 为什么这件事非做不可:超参是尺度敏感的

初始化、优化器与超参对规模的敏感性
做缩放分析的根本动因,也是本讲后半段的预告。上排两张来自 Step Law(第 6 节):最优学习率随 $D$ 的变化按模型规模明显分层(59M 到 1B 共七条线),而最优 batch size 的七条线塌缩成一条。下排三张来自优化器研究(第 7 节):1.2B 与 300M 模型在不同 Chinchilla 比值下各优化器的损失,以及「AdamW 需要多少倍 token 才追平新优化器」——加速带从 1.3–1.4× 逐步退到 1.0–1.2×。合起来的信息是:初始化、优化器、LR、batch,每一个都是尺度敏感的,「在 100M 上调好的配方直接搬到 100B」几乎必然次优,而 100B 那一次训练你只有一发子弹。

这里要和上一讲的第 10 节接上:Porian 等人已经证明,Kaplan 和 Chinchilla 之间那个著名的 $a=0.73$ vs $a=0.50$ 的分歧,主犯就是超参没有随规模重新调。换句话说,如果你不认真处理超参缩放,你拟合出来的缩放定律本身就是错的——它测量的是「配方失配的程度随规模怎么变」,而不是「模型能力随规模怎么变」。

于是任何一份真实的缩放配方都必须回答三个层次的问题,Tatsu 在最后一页把它们总结为:

层次要定的东西主流解法
① 架构超参宽度 $d_{\text{model}}$、深度 $L$、头数、FFN 倍数、长宽比(aspect ratio)固定长宽比,只放大整体规模;或用 IsoFLOP 直接搜
② 优化器超参学习率 $\eta$、batch size $B$、warmup、weight decaymuP(让它们不变)或经验缩放律(预测它们怎么变)
③ 模型/数据配比给定算力 $C$ 时的 $(N^\ast, D^\ast)$Chinchilla 方法 1/2/3,配合 WSD 降低成本

1.2 为什么大家都在「过度训练」

上一讲得到的 Chinchilla 结论是 $D^\ast/N^\ast\approx 20$。但本讲将要看到的真实数字是:MiniCPM 联合拟合 $\approx 96$、Hunyuan $\approx 96$(对激活参数)、LLaMA 3 $\approx 39$,而 LLaMA 3 8B 实际训了 15T token,$D/N\approx 1875$。这个系统性的偏离有两个来源,必须分清楚。

来源一:方法论差异。不同团队的 $L(N,D)$ 拟合中 $\alpha$ 与 $\beta$ 的相对大小不同。回忆上一讲的推导:在算力约束 $C=6ND$ 下最小化 $E+AN^{-\alpha}+BD^{-\beta}$,得到

$$ N^\ast\propto C^{\frac{\beta}{\alpha+\beta}},\qquad D^\ast\propto C^{\frac{\alpha}{\alpha+\beta}},\qquad \frac{D^\ast}{N^\ast}\propto C^{\frac{\alpha-\beta}{\alpha+\beta}} $$

只有当 $\alpha=\beta$ 时比值才是常数。MiniCPM 拟合出的 $\alpha\approx\beta\approx 0.30$,但系数 $C_N=7.54\times10^{-2}$ 远小于 $C_D=2.92\times10^{-1}$——参数比数据「便宜」得多,于是最优点大幅偏向多喂数据。系数的比值直接决定了那个常数,而系数在小规模拟合里是很难测准的。

来源二:推理成本。Chinchilla 的目标函数里完全没有推理。真实部署时的总算力是

$$ C_{\text{total}} \;=\; \underbrace{6ND}_{\text{训练}} \;+\; \underbrace{2N\,D_{\text{inf}}}_{\text{推理}} $$

其中 $D_{\text{inf}}$ 是模型一生要处理的 token 总量(prompt + 生成)。注意推理项只含 $N$ 不含 $D$:训练时多喂数据是一次性成本,而参数量会永久地按比例抬高每一次前向的开销。对一个要服务上万亿 token 请求的模型,$2N D_{\text{inf}}$ 可以轻松超过 $6ND$。

推导

把总成本写成 $N,D$ 的函数并在等损失面上优化。固定目标损失 $L_0$,约束为 $A N^{-\alpha}+B D^{-\beta}=L_0-E\equiv \ell$。用拉格朗日法最小化 $C_{\text{total}}=6ND+2ND_{\text{inf}}$:

$$ \mathcal{L}=6ND+2ND_{\text{inf}}+\lambda\left(AN^{-\alpha}+BD^{-\beta}-\ell\right) $$ $$ \frac{\partial}{\partial N}:\;6D+2D_{\text{inf}}=\lambda\alpha A N^{-\alpha-1},\qquad \frac{\partial}{\partial D}:\;6N=\lambda\beta B D^{-\beta-1} $$

两式相除并整理:

$$ \frac{6D+2D_{\text{inf}}}{6N}=\frac{\alpha A N^{-\alpha-1}}{\beta B D^{-\beta-1}} \quad\Longrightarrow\quad \frac{D}{N}\left(1+\frac{D_{\text{inf}}}{3D}\right)=\frac{\alpha A}{\beta B}\,\frac{D^{\beta+1}}{N^{\alpha+1}} $$

关键在括号里那一项。$D_{\text{inf}}=0$ 时退化为 Chinchilla;$D_{\text{inf}}\gg D$ 时,左边被放大,方程要求在同样的 $D/N$ 下 $N$ 更小、$D$ 更大。直觉版本:推理成本给参数量额外加了一份「租金」,所以最优解会用更多数据去换更小的模型。Sardana & Frankle(2023)把这个思路做完整,结论是当推理量达到万亿 token 量级时,最优 $D/N$ 会从 20 涨到几百甚至上千。

直觉

Chinchilla 最优点在损失曲面上是很平的。上一讲算过:偏离最优 2 倍,损失只涨 $\sim$0.01 nats。这意味着你可以拿这 0.01 nats 去换一个小一半的模型——推理便宜一半、显存少一半、延迟低一截。这就是为什么「过度训练」(overtraining)在工业界是默认操作:它花的是你最不缺的东西(训练时的数据吞吐),省的是你最缺的东西(部署时的每 token 成本)。

本讲要看的公开配方里,DeepSeek、MiniCPM、LLaMA 3 都属于「知道 Chinchilla 最优在哪,然后故意往数据侧走」的做法。他们做缩放分析的目的不是照抄最优点,而是知道自己偏离了多远、代价是多少。

2. MiniCPM:用 muP 把超参锁死,再拟合剩下的

MiniCPM(2024,清华/面壁)是 1–2.5B 的小模型,性能对标当时的 7B。Tatsu 明说它「即使在 2024 年也算不上 SOTA」,但选它作为案例的原因是:它的缩放分析做得最细、公开得最完整,几乎是一份可以照做的教科书式配方。

2.1 技术 1:用 muP 稳定缩放

MiniCPM 论文中列出的 muP(tensor program)具体操作表
MiniCPM 落地 muP 的完整清单,只有五条。设 $d_m$ 是目标模型宽度、$d_{\text{base}}$ 是调超参用的 proxy 宽度,$m=d_m/d_{\text{base}}$:①嵌入输出乘 $\text{scale\_emb}=12$;②每个残差分支的增量乘 $\text{scale\_depth}/\sqrt{L}=1.4/\sqrt{L}$;③二维张量初始化标准差取 $\text{init\_std}/\sqrt{m}$($\text{init\_std}=0.1$),其余参数固定 0.1;④二维张量的学习率取整体 LR 的 $1/m$(整体 $\eta=0.01$);⑤LM head 输出 logits 乘 $1/m$。这就是上一讲那张 muP 规则表在真实代码里的样子——注意它只有「乘一个常数」和「除一个 $m$」两类操作,工程上极其廉价。

值得单独指出两点。第一,$\text{scale\_depth}/\sqrt{L}$ 这条不是标准 muP(标准 muP 只管宽度),而是深度方向的额外稳定化——残差流的方差会随层数线性累积,除以 $\sqrt{L}$ 把它压回 $\Theta(1)$。第二,整体学习率 $\eta=0.01$ 大得离谱(常规 Transformer 用 $3\times10^{-4}$ 量级),这正是 muP 的特征:二维权重的实际 LR 是 $0.01/m$,$m$ 一大就回到正常范围,而 embedding / norm 这类参数确实可以用大得多的 LR。

2.2 技术 2:固定长宽比,只放大整体尺度

MiniCPM 缩放实验所用的六到七个模型配置表
MiniCPM 缩放实验的模型阶梯:9M / 30M / 70M / 0.1B / 0.17B / 0.2B / 0.5B。关键在于这些配置不是随便挑的——$d_h$(head dim)恒为 64,$d_{ff}/d_m=2.5$ 恒定,$d_m$ 与 $L$ 大致同步增长(320/8 到 1344/24,长宽比 $d_m/L$ 从 40 缓慢升到 56)。固定长宽比之后,「模型大小」退化成一个一维参数,缩放律才好拟合。注意最大的实验模型(0.5B)和实际训练的模型(2.4B)之间只差约 5 倍——这是一个相当激进的外推倍数。
注意

「最大实验点到目标模型只差 5 倍」这件事需要警惕。Chinchilla 从 $10^{19}$ 外推到 $5.76\times10^{23}$,跨了 4 个数量级;MiniCPM 只跨了不到 1 个数量级的参数量。外推倍数小当然更安全,但代价是:如果你的目标模型比实验模型大 100 倍(比如从 0.5B 实验推 50B 模型),MiniCPM 这套做法的可信度会显著下降。实践准则是:实验阶梯至少要覆盖 2 个数量级的算力,并且用最大的那个点做留出验证。

2.3 验证 muP:最优学习率真的稳定吗

MiniCPM 在 0.04B 到 2.1B 五个规模上的 LR-loss 曲线
MiniCPM 论文 Figure 3:五个规模(0.04B / 0.1B / 0.3B / 0.5B / 2.1B)的「学习率 vs 最终损失」曲线,横轴对数。这是对 muP 承诺的直接检验——若 muP 成立,所有曲线的最低点应该对齐在同一个 LR 上。结果是基本对齐但不完美:所有曲线的谷底都落在 $10^{-2}$ 附近的宽平区间内,且大模型的曲线整齐地压在小模型下方(说明缩放本身健康);但仔细看,2.1B 那条(最深色)的谷底略微偏右,而且它在 $3\times10^{-2}$ 之后才崩,比小模型能承受更大的 LR。Tatsu 的评价是「roughly stable」——够用,但别指望精确不变。

这张图的实践含义很重要:muP 把 LR 搜索范围从三个数量级压缩到一个 2–3 倍的窗口,但没有消灭搜索。MiniCPM 最终仍然是在 muP 之上做了一轮小范围扫描才定下 $\eta=0.01$。上一讲第 7.4 节提过这一点,这里是它的实证版本。

2.4 最优 batch size:一张三维扫描图怎么读

MiniCPM 在 9M/30M/170M 三个规模上扫描 batch size 与数据量的损失热图
MiniCPM 的 batch size 扫描,三个子图对应 9M / 30M / 170M 三个模型。每张图:横轴是 batch size(对数),纵轴是已消耗的 token 数(对数),点的颜色编码当前损失(深紫=低损失,黄绿=高损失)。读法的关键是:每一列竖直排列的点其实是同一次训练——固定 batch,随着训练推进不断向上记录 checkpoint。红线连接的是「在每个数据量水平上,哪个 batch 给出最低损失」,即该 $(N,D)$ 组合的最优 batch size。可以看到红线随纵轴单调右移:数据吃得越多,最优 batch 越大。

这个实验设计值得学:它用 $O(\#\text{batch})$ 次训练,同时得到了所有 $(D, B)$ 组合的损失,因为中间 checkpoint 被复用了。这是本讲反复出现的主题——缩放实验的成本主要花在「不能复用的重复训练」上,凡是能复用中间状态的地方都要复用。

MiniCPM 拟合的最优 batch size 与损失的幂律关系
把上一张图里的红线重新整理成 Kaplan 2020 式的形式:横轴是损失 $L$,纵轴是该损失水平下的最优 batch size(token 数),双对数坐标。虚线是实测,黄线是拟合 $\log B = -6.24\log L + 20.91$,即 $B_{\text{opt}}\propto L^{-6.24}$。趋势相当干净。注意指数是负的且绝对值很大:损失每降低 10%,最优 batch size 涨约 $1.1^{6.24}\approx 1.9$ 倍——batch size 对训练进度极其敏感。

为什么用「损失」而不是「算力」或「参数量」作自变量?这是 OpenAI 的 critical batch size 观点:batch size 的上限由梯度噪声决定,而梯度噪声与模型当前离收敛有多远直接相关,损失恰好是这个距离的度量。这个选择在第 6 节会被 StepFun 的实验重新检验——他们的结论是应该用 $D$ 而不是 $L$。

常见误区

「最优 batch size 越大越好,因为并行度高」。图里显示的是一条 U 形曲线的谷底:batch 太小则梯度噪声大、每步进展有限;batch 太大则每个样本的边际贡献下降(数据效率变差),同样的 token 预算下损失反而更高。$B_{\text{opt}}$ 是这两者的平衡点,超过它继续加大 batch 会真实地浪费算力,而不只是「收益递减」。工程上常见的错误是先按集群规模定 batch,再去调其他东西——正确顺序反过来。

3. WSD 学习率:把 Chinchilla 拟合的成本从 $O(n^2)$ 降回 $O(n)$

到这里 MiniCPM 已经用 muP 锁死了 LR,用扫描定了 batch。剩下最贵的一件事是模型/数据配比。而这件事贵得非常具体,值得把账算清楚。

3.1 问题:为什么不能早停

Chinchilla 论文中关于 cosine 周期长度与训练步数失配的实验
Chinchilla 论文里那个决定性的对照实验。上下两行是两个训练预算,每行三张图:左为学习率曲线(不同颜色 = cosine 周期设为实际步数的 1.0× / 1.1× / 1.25× / 1.5× / 2.0× / 5.0×),中为训练损失,右为 C4 验证损失。结论一目了然:只有当 cosine 周期恰好等于实际训练步数(1.0×,即学习率正好衰减到底)时,最终损失才最低;周期设成 5× 意味着训练结束时 LR 还很高,损失明显偏差。这就是「不能拿一条长训练的中间 checkpoint 当作短训练的结果」的原因——中间 checkpoint 对应的是 LR 还没衰减完的状态,被系统性地高估了损失。
推导

成本为什么是 $O(n^2)$。假设你要在 $n$ 个模型规模 $\times$ $n$ 个数据量上采样 $(N,D,L)$ 三元组。

理想情况(可以早停):对每个规模只训一条最长的曲线,沿途记录 $n$ 个 checkpoint,总成本 $\propto \sum_{i=1}^{n} N_i D_{\max} = O(n)$ 次训练。

Chinchilla 要求(必须训到底):每个 $(N_i, D_j)$ 组合都要一次独立的、cosine 完整衰减的训练,总成本 $\propto\sum_{i}\sum_{j} N_i D_j = O(n^2)$ 次训练。

取 $n=6$:36 次训练 vs 6 次训练,6 倍差距。如果考虑到每条曲线上想要 20 个数据点,差距就是 20 倍。对一个只有几百张卡的团队,这直接决定了缩放分析做不做得起。

3.2 解法:warmup–stable–decay

MiniCPM 的 WSD 学习率调度与 cosine 的对比
WSD(Warmup–Stable–Decay)调度。左图:橙色是常规 cosine(周期 40N),绿色和深绿是两条 WSD——先 warmup,然后在一个恒定的高学习率上长时间「巡航」,最后在总步数的最后约 10% 内快速衰减到底。两条 WSD 的稳定期完全相同,只是在不同时刻分叉去衰减。右图是 MiniCPM 论文的原文说明:因为 WSD 从稳定期的任意 checkpoint 衰减下来都能达到「相当于 cosine 训到该长度」的损失,所以可以在不重新从头训练的前提下精确测量沿数据轴的缩放性质,把成本变成 $O(mC)$(线性)。

WSD 的核心洞察是:cosine 之所以不能早停,是因为它把「探索期」和「收敛期」耦合在一条曲线上。WSD 把两者解耦——稳定期负责在高 LR 下探索,衰减期负责把参数收进一个尖锐的极小值。既然衰减期只占 10%,那么一条长度为 $T$ 的稳定期主干,配上 $k$ 条各占 $0.1T'$ 的衰减分支,总成本是 $T(1+0.1k\cdot\text{平均分叉比})$,而不是 $\sum T_i$。

MiniCPM 中 WSD 与 cosine 的实际损失曲线对比
WSD 在 MiniCPM 上的实际表现(C4 验证损失 vs 已训 token)。橙色是 cosine(80N) 的完整曲线;六条深浅不一的绿线是从同一稳定期主干上、在 40N/60N/80N 三个位置分叉出的 WSD 衰减。两个现象:①稳定期的损失下降明显比 cosine 慢(绿线在 40N 处还在 3.85 左右,橙线已经到 3.75);②一旦进入衰减期,损失几乎垂直跳水,迅速追平甚至略微超过同 token 量的 cosine。这就是「稳定期看起来落后不要紧」的实证依据——高 LR 期间模型处在一个宽而浅的区域,衰减把它推进最近的尖锐谷底,收益是一次性兑现的。
直觉

把稳定期想成「在损失曲面的一个宽阔盆地里高速游荡」,把衰减期想成「关掉动能,让模型滚进脚下最近的那个坑」。滚进坑的动作总共只要 10% 的步数,所以你可以在游荡途中的任意时刻按下暂停、复制一份参数、让副本滚进坑里量一下深度,然后主干继续游荡。这就是 $O(n^2)\to O(n)$ 的全部魔法。

附带的好处:WSD 让持续预训练(continual pretraining)变得自然——你随时可以从稳定期 checkpoint 接着训,不必像 cosine 那样面对「LR 已经衰减到 0,怎么重新升上去」的难题。这也是为什么 WSD 后来成了工业界的默认选择。

3.3 有了便宜的数据点之后:MiniCPM 的 Chinchilla 分析

MiniCPM 使用的 Chinchilla 联合拟合公式
MiniCPM 采用的拟合形式,直接沿用 Hoffmann 等人(2022):$L(N,D)=C_N N^{-\alpha}+C_D D^{-\beta}+L_0$,用 scipy 的 curve_fit 求解(注意:不是 Chinchilla 原文用的 Huber loss + LBFGS 网格重启,而是最朴素的非线性最小二乘)。给定算力 $C=6ND$(引用 Rae et al. 2021 的口径),最优比值写成 $\frac{N_{opt}}{D_{opt}}=K^2\left(\frac{C}{6}\right)^{\eta}$。他们同时用了方法 1(最小损失包络)和方法 3(联合拟合)交叉验证。
MiniCPM 的 Chinchilla 方法 1:损失包络曲线
方法 1(training curve envelope)的结果,三个评测域:Code、English (Wikihow)、Chinese (Wikihow)。横轴算力、纵轴损失,双对数。每种颜色是一个模型规模的训练曲线,把所有曲线的下包络连起来就是「算力最优前沿」。三张图的趋势都相当清楚,但 Tatsu 特意点出「maybe not linear?」——在双对数坐标下,真正的幂律应该是直线,而这些包络有肉眼可见的弯曲(尤其是中英文两张的尾部)。这暗示单一幂律可能不足以描述整个范围,或者拟合区间选得不够干净。
MiniCPM 的 Chinchilla 方法 3:联合拟合等高线图
方法 3(联合参数化拟合)的结果,也是 MiniCPM 的主要依据。横轴是非嵌入参数量($10^9$),纵轴是算力($10^{18}$ FLOPs),颜色/等高线是拟合出的损失曲面,黑点是实测数据。拟合结果直接印在图上:$L=\frac{7.54\times10^{-2}}{N^{0.30}}+\frac{2.92\times10^{-1}}{D^{0.30}}+0.25$,$K^2=0.01$,$\eta=-0.00$,以及关键结论 $\left.\frac{D_{opt}}{N_{opt}}\right|_{C=10^{21}}=\mathbf{95.60}$。注意 $\eta\approx 0$ 意味着这个比值基本不随算力变化——和 Chinchilla 一致,只是常数从 20 变成了 96。
注意

$\alpha=\beta=0.30$ 而 $D/N\approx 96$,这两件事放在一起需要解释。既然指数相同,比值就完全由系数决定:由一阶条件可推出 $\frac{D^\ast}{N^\ast}=\left(\frac{C_D\beta}{C_N\alpha}\right)^{1/(\alpha+\beta)}\cdot$(常数),代入 $C_D/C_N=2.92\times10^{-1}/7.54\times10^{-2}\approx 3.87$、$\alpha=\beta=0.30$,得 $3.87^{1/0.6}\approx 10.6$——量级对但不等于 96,说明还有 $6\times$ 的口径因子($C=6ND$ 与非嵌入参数计数)在里面。

真正的教训是:$D/N$ 这个数字对系数比值的敏感度是 $1/(\alpha+\beta)\approx 3.3$ 次方。系数测偏 20%,比值就偏 $1.2^{3.3}\approx 1.8$ 倍。而系数恰恰是拟合中最不稳定的量(它和 $L_0$ 强耦合)。所以看到「我们拟合出最优比是 96」时,合理的解读是「大约几十到一百多」,而不是精确的 96。这正是上一讲第 10.3 节 Besiroglu 复现所揭示的同一类问题。

4. DeepSeek:不用 muP,直接给超参拟合缩放律

DeepSeek LLM(2024)训了 7B 和 67B 两个模型,在当时的开源模型里性能领先。它的缩放策略和 MiniCPM 形成了一个漂亮的对照:完全不用 muP,而是把「最优 LR」「最优 batch」本身当成待拟合的缩放量。

DeepSeek 拟合的最优 batch size 与最优学习率随算力的缩放曲线
DeepSeek 的超参缩放拟合。做法是:在小规模上跑大量 $(\eta, B)$ 组合,把所有落在最优损失 0.25% 以内的配置都收集起来(图中灰点),然后对这团点做回归。左图 (a) 是最优 batch size(token 数)vs 非嵌入训练 FLOPs,右图 (b) 是最优学习率 vs 同一横轴,阴影是置信带。拟合结果印在上方:$\eta_{\text{opt}}=0.3118\cdot C^{-0.1250}$,$B_{\text{opt}}=0.2920\cdot C^{0.3271}$。蓝色星标是实际训练的 7B($B=9.2$M,$\eta=4.2\times10^{-4}$)与 67B($B=19.7$M,$\eta=3.2\times10^{-4}$)。

Tatsu 对这张图的评价是「learning rate fit looks a bit questionable」,这个批评值得展开,因为它是本讲最重要的方法论教学点之一。看右图:灰点在 $10^{16}$–$10^{20}$ 区间里几乎是水平散布的,甚至隐约有阶梯状(因为扫描的 LR 取值是离散的 $\{1\times,2\times,4\times\ldots\}$ 网格)。在这样一团点上强行拟合一条斜率 $-0.125$ 的直线,然后外推 4 个数量级到 $10^{24}$,得到 $4\times10^{-4}$——这个外推的置信度是很低的。

常见误区

「拟合出的 $R^2$ 很高,所以外推可信」。这里的问题不是拟合质量,而是信噪比与杠杆:

  • 取值离散化:如果你只在 $\{2^{-10},2^{-9},\ldots\}$ 上扫 LR,那么「最优 LR」的测量分辨率就是 2 倍。用分辨率 2 倍的数据去估计一个「每 10 倍算力变化 $10^{-0.125}=0.75$ 倍」的趋势,需要跨越很多个数量级才能积累出可辨识的信号。
  • 「0.25% 以内都算最优」的定义会把一大片平坦区域全部纳入,人为地把散点云拉宽,让回归线的斜率被端点主导。
  • 杠杆点:拟合区间的两端(最小和最大的几个算力)对斜率的影响远超中间点,而这两端恰恰是数据最少、噪声最大的地方。

Tatsu 的隐含建议:这类超参缩放律应当被当作「量级参考」而不是精确预测,落地时仍要在目标规模附近做一次小范围验证。第 6 节的 StepFun 工作就是在系统性地修补这个问题。

DeepSeek 使用的多阶段学习率调度
DeepSeek 的调度也是 WSD 家族,论文原文写得很具体:2000 步 warmup 到峰值,处理完 80% 的 token 后降到峰值的 31.6%(即 $\sqrt{0.1}$),处理完 90% 后再降到 10%;梯度裁剪 1.0。图 (a):多阶段(蓝)与 cosine(橙)的训练损失对比——cosine 在中途明显更低,但多阶段在每次降档后垂直跳水,终点基本追平。图 (b):三种分档比例(80%+10%+10% / 70%+15%+15% / 60%+20%+20%)几乎无差别,说明这个超参不敏感。这种分段常数调度和 MiniCPM 的连续衰减目的相同——都是为了让中间 checkpoint 可复用。

4.1 IsoFLOP:DeepSeek 的模型/数据配比

DeepSeek 的 IsoFLOP 曲线与最优模型、最优数据外推
DeepSeek 的 Chinchilla 方法 2(IsoFLOP)分析。左 (a):八条 IsoFLOP 曲线($10^{17}$ 到 $3\times10^{20}$ FLOPs),横轴不是参数量 $N$ 而是 $M$ = 每 token 的非嵌入 FLOPs,纵轴是验证集上的 bits-per-byte。每条曲线都是清晰的 U 形,谷底就是该算力预算下的最优模型规模。中 (b):把各条曲线的谷底连起来,在双对数下得到一条漂亮的直线,外推到 $C=4.5\times10^{23}$ 给出 $M=4.3\times10^{11}$ FLOPs/token(对应 DeepSeek 67B)。右 (c):同理外推数据量,给出 $D=1.04\times10^{12}$ token。
核心结论

DeepSeek 用 $M$(每 token 非嵌入 FLOPs)替代 $N$(参数量),这个改动比它看起来重要得多。回忆上一讲第 10.2 节:Kaplan 与 Chinchilla 的分歧有很大一部分来自「参数怎么数」——算不算 embedding、算不算 attention 的 $O(L\cdot d)$ 项。$M$ 把这个问题一次性解决了:它直接就是算力口径,于是 $C=M\cdot D$ 恒等成立,不需要 $C\approx 6ND$ 这个近似,也不存在「嵌入层在小模型里占比过高」的偏差。

代价是 $M$ 不能直接告诉你显存要多大——你还得再从 $M$ 反推回架构。但对于拟合缩放律这件事本身,$M$ 是更干净的自变量。如果你要自己做 IsoFLOP 分析,这是应该照抄的一条。

算一下自洽性:$C = M\cdot D = 4.3\times10^{11}\times 1.04\times10^{12}=4.47\times10^{23}$,与标注的 $4.5\times10^{23}$ 吻合。再把 $M$ 换算成参数量,用 $M\approx 2N$(前向每参数 2 FLOPs)得 $N\approx 2.15\times10^{11}$?这显然不对——DeepSeek 67B 只有 $6.7\times10^{10}$ 参数。差异来自 $M$ 里还包含了 attention 的序列长度项和一些实现细节,说明$M\leftrightarrow N$ 的换算本身就依赖架构和上下文长度,这正是用 $M$ 的理由之一。至于 $D/N$:$1.04\times10^{12}/6.7\times10^{10}\approx 15.5$——DeepSeek 67B 实际上训得比 Chinchilla 还略微「不足」,符合 2024 年初的时间点。

4.2 预测准不准

DeepSeek 用小规模拟合的缩放曲线预测 7B 和 67B 的最终损失
缩放律的「留出检验」:灰色圆点是用于拟合的小规模模型($10^{16}$–$10^{20}$ FLOPs),虚线是幂律拟合,两颗蓝星是拟合时完全没见过的 DeepSeek 7B(MHA,2T token)和 67B(GQA,2T token),落在 $10^{24}$ 附近。两颗星都稳稳落在虚线上。这是整个流程唯一真正有说服力的验证——横跨 4 个数量级、bits-per-byte 从 1.5 降到 0.65 的外推,误差在肉眼不可见的范围内。

这张图值得作为「缩放分析该怎么汇报」的模板:拟合用小模型,验证用大模型,把大模型的点画在同一张图上而不是单独说「误差 0.3%」。同时注意 7B 用 MHA、67B 用 GQA——两个不同的注意力架构落在同一条曲线上,这本身是「架构细节对损失缩放影响有限」的一个证据(第 5 节 MiniMax 会正面研究这个问题)。

5. 横向扫描:Qwen / Kimi K2 / Hunyuan / LLaMA 3 / MiniMax

MiniCPM 和 DeepSeek 是两个「讲全了」的样本。剩下几家公开的信息更零碎,但每一家都补上了一个新维度。

5.1 Qwen:只说做了,不说怎么做

Qwen 2.5 与 Qwen 3 技术报告中关于超参缩放律的段落
Qwen 2.5 和 Qwen 3 技术报告里关于缩放的全部内容——两段文字,没有一张图。Qwen 2.5 说:他们为超参(而非模型规模)建立缩放律,系统研究了最优 $\mu_{\text{opt}}$(学习率)和 $B_{\text{opt}}$ 如何随 $N$ 和 $D$ 变化,覆盖 44M–14B 的稠密模型和 44M–1B 激活参数的 MoE,数据从 0.8B 到 600B token;并用它来预测「多大的 MoE 能和某个稠密模型打平」。Qwen 3 只说沿用了同样的方法,并加了「训练阶段」这个变量。

Qwen 的重点和 DeepSeek 一致(超参缩放律),但它多做了一件事:用缩放律做 MoE 与稠密模型的等价性预测——给定一个目标稠密模型(如 Qwen2.5-72B),去找参数配置使 MoE 达到同等性能。这是缩放律作为「决策工具」而非「预测工具」的用法。

5.2 Kimi K2:把稀疏度当作一个缩放维度

Kimi K2 的稀疏度缩放律实验
Kimi K2 的稀疏度缩放律。他们把稀疏度定义为「专家总数 / 激活专家数」,固定激活专家为 8、共享专家为 1,只改变专家总数,得到稀疏度 8/16/32/48/64 五组模型。左图(Figure 5):横轴训练 FLOPs、纵轴验证损失,五种颜色对应五个稀疏度。核心发现是在固定 FLOPs 下,提高稀疏度(即增加总参数而不增加激活参数)单调降低训练与验证损失。定量地说,要达到稀疏度 1.5 的同等验证损失,稀疏度 48 只需 1.69× / 1.39× / 1.15× 更少的 FLOPs(相对稀疏度 8/16/32)。K2 最终选了稀疏度 48:384 个专家中激活 8 个。右图(Figure 6)是另一条:把注意力头数从「等于层数」翻倍,只带来 0.5%–1.2% 的损失改善——所以他们没这么做。
核心结论

稀疏度是一个「几乎免费」的缩放维度,但它换的是 FLOPs 而不是内存。MoE 的账要分两本记:

  • 算力账:激活参数 $N_a$ 决定训练/推理 FLOPs($\approx 6N_a D$)。稀疏度提高不改变这一项。
  • 内存与通信账:总参数 $N_{\text{total}}$ 决定权重显存、优化器状态、以及分布式训练中的 all-to-all 通信量。稀疏度 48 意味着显存开销是同等 FLOPs 稠密模型的几十倍。

Kimi K2 报告里的原话是「这个收益伴随着基础设施复杂度的上升」(this gain comes with increased infrastructure complexity)——他们选 48 而不是 64,是在模型质量与工程成本之间的取舍,不是纯粹的缩放律最优点。这是本讲反复出现的模式:缩放律给出前沿,工程约束决定你在前沿上站哪个位置。

5.3 Hunyuan-Large:对激活参数做 IsoFLOP

Hunyuan 对 MoE 激活参数量做的 IsoFLOP 分析
腾讯 Hunyuan-Large(2024)的做法,本质上就是把 DeepSeek 的 IsoFLOP 搬到 MoE 上,横轴从「参数量」换成「激活参数量」。左图:十条 IsoFLOP 曲线($5\times10^{18}$ 到 $9.5\times10^{19}$),用二次多项式拟合每条 U 形曲线(这是 Chinchilla 方法 2 的标准做法——在谷底附近损失关于 $\log N$ 近似抛物线)。右图:把各谷底外推,得到 $C=3\times10^{24}$ 时最优激活参数 58.1B。课上标注的关键数字:最优比值 96:1(数据 token 对激活参数)。

96:1 和 MiniCPM 的 95.6 撞在一起,这大概率是巧合(两者的实验设置、数据、口径都不同),但它确实反映了一个趋势:2024 年之后的公开分析几乎都给出远高于 20 的比值。对 MoE 而言这个数字还有额外含义——因为分母是激活参数而非总参数,所以按总参数算的话比值会低得多。

5.4 LLaMA 3:从算力直通下游指标

LLaMA 3 的 IsoFLOP 曲线与算力到下游任务准确率的两段式预测
LLaMA 3(2024)的两部分。左(Figure 2):$6\times10^{18}$ 到 $10^{22}$ FLOPs 的 IsoFLOP 曲线,横轴是训练 token 数、纵轴验证损失,同样用二次多项式拟合谷底(图中菱形)。课上标注最优比 39:1。右侧两张是这一讲里唯一直接触及下游任务的分析,做法是两段式:①算力 → 归一化 NLL/字符(左,双对数下完美直线,从 $10^{20}$ 一路外推到 405B 那个蓝方块);②归一化 NLL → 下游准确率(右,一条 S 形曲线,横轴反向)。粉色菱形是缩放律实验模型,橙色圆是 Llama 2 系列,蓝三角是对 405B 的预测,蓝方块是 405B 实测。
直觉

为什么要拆成两段,而不是直接拟合「算力 → 准确率」?因为这两段的函数形态完全不同:

  • 第一段(算力 → loss)是幂律,在双对数下是直线,外推稳定,而且 loss 是连续、低方差的量——每个验证样本都贡献信息。
  • 第二段(loss → 准确率)是S 形(sigmoid-like)。多选题准确率有下界(随机猜测,4 选 1 就是 0.25)和上界(1.0),中间存在一个陡峭的过渡区。图中准确率从 0.3 冲到 0.9 只用了 NLL 从 1.35 降到 1.22 这一小段。

如果直接拟合「算力 → 准确率」,你会得到一条又要跨数量级、又要经历饱和的曲线,几乎不可能可靠外推。拆开之后,每一段都在自己最擅长的坐标系里是简单函数。这也解释了课程里反复出现的现象:loss 平滑下降而 benchmark 分数「突然涌现」——涌现不是 loss 曲线上的突变,而是第二段 S 形映射把 loss 的平滑改善放大成了指标的跳变。

5.5 MiniMax-01:用缩放律做架构决策

MiniMax-01 对三种注意力架构分别拟合缩放律
MiniMax-01(2025)把缩放律用作架构选型工具。三种颜色对应三种注意力:Softmax Attention(黄)、Lightning Attention(紫,线性注意力)、Hybrid-lightning(红,混合)。左图是 70M–7B 模型的训练曲线与算力最优前沿(横轴 PFLOP/s-days);中、右两图分别是由此推出的最优模型规模与最优 token 数随算力的变化。关键读法:比较的不是某个规模上谁赢,而是三条前沿线的斜率与截距——如果两条线会在某个算力处相交,那么小规模的胜负结论在大规模会反转。

这是「用小规模对比实验预测大规模胜负」的正确姿势。常见的错误做法是:在 100M 规模上跑架构 A 和 B,A 赢了 0.02 nats,于是宣布 A 更好。问题在于这个差距可能来自:(a) B 的超参没调好;(b) A 在小规模有优势但缩放指数更差。只有拟合出两条完整的缩放曲线并比较它们的外推交点,结论才有意义。MiniMax 的图里三条线基本平行且贴近,这本身就是结论——线性注意力在缩放意义上没有付出损失代价,于是可以放心地享受它在长上下文推理上的效率红利。

5.6 两条配方路线的总结

DeepSeek 路线MiniCPM 路线
架构超参假定大部分 Transformer 超参对规模不敏感,直接固定用 muP 让参数化本身对宽度不变,固定长宽比
LR / batch小规模网格扫描 → 拟合 $\eta_{\text{opt}}(C)$、$B_{\text{opt}}(C)$ 幂律 → 外推muP 保证 $\eta$ 近似不变;batch 单独拟合 $B_{\text{opt}}(L)$
模型/数据配比IsoFLOP(方法 2),自变量用 $M$ = FLOPs/token损失包络(方法 1)+ 联合参数化拟合(方法 3)
降低拟合成本分段常数 LR(两级各降 10%)WSD,从稳定期 checkpoint 分叉衰减
报告的最优比67B 实际 $D/N\approx 15.5$$D/N\approx 96$($C=10^{21}$)
模型(年份)公开了什么缺什么
Qwen 2.5 / 3(2024–25)说明做了 LR/batch 缩放律,覆盖稠密 + MoE没有图、没有公式、没有实验细节
Kimi K2(2026)稀疏度缩放律(最终选 384 选 8,稀疏度 48)LR/batch 缩放细节
Hunyuan-Large(2024)对激活参数的 IsoFLOP,96:1其他缩放细节
LLaMA 3(2024)IsoFLOP(39:1)+ 算力→下游两段式预测超参缩放、muP 相关
MiniMax-01(2025)架构选型的缩放对比 + 方法 1超参细节

6. Step Law:把「LR/batch 该怎么缩放」当成科学问题来做

前面所有配方都在回答同一个问题——随规模变化时 LR 和 batch 该怎么设——但每家给的函数形式都不一样,而且都只有几十到几百个数据点。StepFun 的大规模缩放律研究(Step Law)把这件事做成了一个受控实验。

不同团队提出的 LR 与 batch size 缩放律公式对比表
这张表是本讲信息密度最高的一页:把已有的七种「超参缩放律」并排比较,列出各自的函数形式和在统一测试集上的相对误差。可以看到根本分歧在于「用什么变量」——OpenAI 用损失 $\mathcal{L}$(critical batch 观点:$B\propto \mathcal{L}^{-4.76}$),DeepSeek 用算力 $C$($\eta=0.3188C^{-0.125}$,$B=0.2920C^{0.3271}$),Microsoft 用 $N$ 和 $D$,Porian 用 $N$,MiniCPM 用 $\mathcal{L}$,美团(MeiTuan)额外考虑了模型稀疏度。最后一行是 StepFun 自己的 Step Law:$\eta=1.79\,N^{-0.713}D^{0.307}$,$B=0.58\,D^{0.571}$,相对误差 0.94‰,比第二好的 Porian Law(3.71‰)好近 4 倍,比 OpenAI/DeepSeek(9.5‰ / 9.26‰)好一个数量级。Step Law 也是唯一同时考虑了数据配方和模型稀疏度的(表中两个绿勾)。

读这张表要抓住三点。第一,$\eta$ 和 $B$ 应该是 $N$ 和 $D$ 的分离函数,而不是 $C$ 的函数。$C=6ND$ 把两个自由度压成一个,损失了信息——同样的 $C$ 可以由「大模型少数据」或「小模型多数据」实现,两者的最优超参不同。第二,batch size 只依赖 $D$(Step Law 里 $B=0.58D^{0.571}$,完全没有 $N$)。第三,$\eta$ 对 $N$ 是负指数($-0.713$,模型越大 LR 越小),对 $D$ 是正指数($+0.307$,训得越久 LR 越大)。

StepFun 的超参网格搜索实验设计
Step Law 的方法论:纯粹的暴力网格。右侧是他们的稠密模型配置表(18 组,$N$ 从 $1.07\times10^8$ 到 $1.07\times10^9$,$D$ 从 $8\times10^9$ 到 $2.27\times10^{11}$,$d_{\text{model}}$ 960–2048,层数 7–16)。左侧是关键的检验图:在某个 $(N,D)$ 上把损失画成 $(\text{学习率},\text{batch size})$ 平面的等高线,然后把各家公式的预测点标上去——红叉是实测全局最优,黄星是 Step Law 的预测(几乎重合),青三角是 DeepSeek Law、紫方块是 Porian Law(都落在 $+0.5\%$ 等高线之外),Microsoft Law 和 OpenAI Law 的橙色/粉色线偏得更远。等高线标注了 $+0.250\%$ / $+0.500\%$ / $+1.000\%$ / $+2.000\%$,可以直接读出各公式的损失代价。

6.1 观察 1:损失关于 (LR, batch) 是凸的

固定学习率时损失关于 batch size 的切片,以及固定 batch 时关于学习率的切片
Step Law 的第一个基础性发现。上排四张:固定学习率($3.45\times10^{-4}$ / $4.88\times10^{-4}$ / $6.91\times10^{-4}$ / $9.77\times10^{-4}$),损失关于 batch size 的切片——每一张都是干净的 U 形。下排四张:固定 batch size(262144 / 524288 / 786432 / 1048576),损失关于学习率的切片——同样是干净的 U 形。右侧两张三维图显示完整曲面是一个碗状结构。结论:在对数坐标下,预训练损失关于 $(\log \eta, \log B)$ 近似凸,因此最优点可以被干净地定位,不存在多个局部极小值来迷惑你的搜索。

这个结论听起来平淡,但它是整个「超参缩放律」事业的前提。如果损失曲面在超参空间里是多峰的、或者有长条形的病态山谷,那么「测出最优点然后拟合它随规模的变化」这套流程根本立不住——你测到的「最优点」会是噪声。凸性还意味着你可以用少数几个点加二次拟合来定位谷底,而不必密集扫描(这正是 Chinchilla 方法 2 在 IsoFLOP 曲线上用二次多项式的同一个理由)。

6.2 观察 2:batch 跟 $D$ 走,LR 跟 $N$ 走

StepFun 测得的最优学习率与最优 batch size 随数据量的变化,按模型规模分色
Step Law 的核心实证图。两张图横轴都是数据量 $D$,颜色区分七个模型规模(59M 到 1B)。左(最优学习率):七条线明显分层——同样的 $D$ 下,模型越大 LR 越低(这是 $N^{-0.713}$ 那一项),且每条线都缓慢上扬($D^{+0.307}$)。右(最优 batch size):七条线几乎完全重合,塌缩成一条带——batch size 与模型规模无关,只由 $D$ 决定。这就是为什么 Step Law 里 $B$ 的公式中没有 $N$。
注意

Tatsu 对「最优 LR 随 $D$ 升高」这一条打了问号。原话是:这个发现在换成 WSD 调度后很可能更脆弱,并点名了 InternLM 的缩放律论文(Zhou 等,2026)作为反例来源。理由不难想:$\eta_{\text{opt}}$ 随 $D$ 上升这个现象,在 cosine 调度下部分来自「训练越长,平均 LR 越低,所以峰值 LR 需要更高来补偿」这个纯调度效应,而不是优化本身的性质。WSD 的稳定期 LR 是恒定的,这个补偿机制就不存在了。

更一般的教训:任何超参缩放律都隐含地绑定了它所使用的学习率调度。DeepSeek 的 $\eta\propto C^{-0.125}$、Step Law 的 $\eta\propto N^{-0.713}D^{0.307}$、MiniCPM 的 $B\propto L^{-6.24}$——照抄之前先确认对方用的调度和你的一样。

6.3 观察 3:这套规律能推广到 MoE 和别的数据配方吗

Step Law 在不同稀疏度 MoE 与不同数据配方上的损失等高线验证
Step Law 的鲁棒性检验。上排(Figure 7)是 MoE:三种稀疏比($N_a/N=0.27$ 低稀疏、$0.58$ 中稀疏、$0.58$ 但 $D=8.0$B),画的是验证损失在 $(\text{学习率},\text{batch size})$ 平面上的等高线,图上同时标出各家公式给出的预测点——红叉是 Step Law 的预测,其他标记是 OpenAI/DeepSeek/Microsoft 各家的。Step Law 的预测点稳定落在真实全局最优的等高线内圈。下排是换数据配方:(a) 双语语料、(b) 代码混合、(c) 代码为主,同样的检验。结论是这套关系对稀疏度和数据分布都相对稳健。

等高线这种呈现方式本身值得学:它同时展示了最优点在哪和最优区域有多平。看这几张图,内圈都相当宽——在 2 倍的 LR 范围和 2 倍的 batch 范围内损失差别很小。这解释了为什么各家公式虽然形式差异巨大,实际训练效果却都还行(表里 9.5‰ 的相对误差听起来大,但落到损失上是小数点后第三位)。超参缩放律的实际价值不在于把你送到精确最优点,而在于保证你不掉进悬崖。

7. 优化器与规模:为什么「新优化器快 2 倍」多半是假的

优化器是 LLM 训练的核心,也是最容易被规模效应欺骗的地方。Tatsu 在这一节用 Stanford 自家的一篇工作(Wen, Hall, Ma, Liang,Fantastic Pretraining Optimizers and Where to Find Them)系统地拆解「优化器论文的加速比为什么普遍不可信」。

7.1 问题 1:超参根本没调公平

不同优化器在 130M 模型上的损失曲线,以及 Lion 与 AdamW 对 weight decay 的不同偏好
左图:130M 模型在 C4/EN 上的损失曲线。棕线是 AdamW 用 $\eta=6\times10^{-4}$(一个「常规」值),蓝线 Mars、紫线 Nesterov AdamW 都明显更快;但红线是同一个 AdamW,只是把 LR 调到 $8\times10^{-3}$——它和最好的新优化器完全重合。标注写着「调 AdamW 的 LR 带来 2× 加速」。换句话说,那些新优化器声称的加速,全部可以被「把基线的 LR 调对」吃掉。右图给出原因:C4/EN 损失 vs weight decay,红线 AdamW 的最优 wd $\approx 0.1$,绿线 Lion 的最优 wd $\approx 0.6$——相差 6 倍。用 AdamW 的默认超参去跑 Lion(或反过来)必然得到误导性的结论。
常见误区

「我们用了和基线相同的超参,所以比较是公平的」——这句话在优化器比较里恰恰是最不公平的做法。相同超参 ≠ 公平;公平的定义是每个优化器都在自己的最优超参下。而且不只是 LR:weight decay、$\beta_1/\beta_2$、warmup 长度、梯度裁剪阈值,每一项的最优值都可能随优化器改变。

更麻烦的是:不同优化器的最优超参缩放律也不同。即使你在 130M 上给两者都调到了各自最优,到了 1B 上这个「各自最优」的相对位置可能已经变了。所以严格的比较需要在每个规模上重新调每个优化器——这个成本高到几乎没人真的做。

7.2 问题 2:加速比随规模衰减

各优化器相对 AdamW 的加速比随模型规模衰减,以及不同 Chinchilla 比值下的损失
左图:在 8× Chinchilla 数据量下,各优化器相对 AdamW 的加速比 vs 模型规模(130M / 300M / 520M / 1.2B)。Muon 和 Soap 在 130M 上有 1.4× 加速,到 1.2B 只剩 1.1×;NAdamW 从 1.19× 掉到 1.10×。趋势是单调下降的。右图:520M 模型在不同 Chinchilla 比值(1× / 2× / 4× / 8×)下各优化器的损失——矩阵型优化器(实线:Muon / Soap / Kron)一致优于标量型(虚线:AdamW / Mars / NAdamW),但差距同样随训练时长收窄(1× 处差 0.04,8× 处差 0.01)。

Tatsu 由此给出一条通用的算法研发准则,值得抄下来:

核心结论

任何声称改进训练的方法,都必须在多个模型规模 × 多个 Chinchilla 比值上验证,因为这两者是最常见的混淆因子(confounder)。

为什么这两个维度特别重要?因为大多数「训练技巧」的作用机制是加速早期优化——让模型更快脱离初始的混沌期。而模型越大、训练越长,早期那段在总预算里的占比就越小,于是收益被稀释。一个只在 130M / 1× Chinchilla 上测过的方法,几乎必然会在 70B / 20× Chinchilla 上失效。

反过来说,如果一个方法的收益在两个维度上都不衰减甚至增长,那它就非常值得重视——这是极少数情况。

7.3 问题 2.5:看起来漂亮的缩放也可能炸

一次外推失败案例:拟合良好的缩放曲线在最大规模上发散
来自 William Held 的公开实验记录(Delphi 项目)。左:按算力分桶的 IsoFLOP 抛物线,从 $3\times10^{18}$ 到 $3\times10^{20}$,每条都拟合得很漂亮,谷底(叉号)位置规整。右:把谷底损失对算力作图,虚线是幂律拟合。在拟合区间内($10^{19}$–$10^{21}$)几乎完美;外推到 $10^{22}$ 时实测比预测差 2.5%,到 $10^{23}$ 时该次训练直接发散(Run Diverged),标注为「0.8% worse」的那个点已经是抢救回来的结果。配方是 Cautious AdamC + 学习率按 $\sqrt{B}$ 缩放;课上注明后来通过更仔细的参数化 / 缩放 / 优化器调整修好了。

这个案例的价值在于它展示了缩放外推的真实失败模式:不是缓慢偏离,而是在拟合区间外某处突然进入不稳定区。原因通常是某个量(激活范数、注意力 logits、梯度范数)在随规模单调增长,在小规模时还在安全范围内,跨过某个阈值后触发数值不稳定。缩放律拟合的是损失,它对这类阈值现象完全无感知。

注意

实践上的防御措施:不要只监控损失,还要监控那些「本应保持 $\Theta(1)$」的量随规模的变化——各层激活的 RMS、注意力 logits 的最大值、梯度范数、优化器二阶矩的分布。如果这些量在你的实验阶梯上呈现单调趋势(而不是稳定在常数附近),那么你的参数化就不是尺度不变的,外推迟早会出事。这正是下一节 muP 要解决的核心问题。

7.4 Muon:矩阵值参数的优化器

Muon 算法伪代码与 NanoGPT speedrun 上的优化器对比
Muon 的算法与效果。左侧伪代码只有五行:动量累积 $B_t\leftarrow\mu B_{t-1}+G_t$,然后 $O_t\leftarrow\text{NewtonSchulz5}(B_t)$,最后 $\theta_t\leftarrow\theta_{t-1}-\eta O_t$。关键是 NewtonSchulz5——它用五次迭代的多项式近似把矩阵正交化:若 $B_t=USV^\top$ 是奇异值分解,则输出近似 $UV^\top$,即把所有奇异值都压成 1。右图:NanoGPT speedrun 上按墙钟时间比较,Muon(紫)明显快于 Adam(蓝)、Distributed Shampoo(橙/绿)和 SOAP(红),且每步只要 142ms(Adam 是 139ms,几乎无额外开销,而 SOAP 要 301ms)。
直觉

为什么正交化有用?Adam 是逐元素归一化:每个坐标的更新幅度都被拉平成 $\Theta(\eta)$。Muon 是逐奇异方向归一化:每个奇异方向的更新幅度都被拉平成 $\Theta(\eta)$。

梯度矩阵的奇异值谱在实践中极度不均衡——少数几个方向占据绝大部分能量。这意味着 $\Delta W$ 几乎是低秩的,模型每一步只在很少的几个方向上移动。正交化强行把谱压平,让所有方向都得到同等更新,从而更充分地利用参数矩阵的全部容量。这也是它只对「矩阵值参数」有意义的原因:embedding、bias、norm gain 是向量或标量,没有奇异值谱可谈,Muon 的实现里这些参数仍然交给 AdamW。

另一个视角是「谱范数下的最速下降」:在约束 $\|\Delta W\|_{\text{spectral}}\le\eta$ 下最大化一阶下降量 $\langle \Delta W, -G\rangle$,最优解恰好是 $\eta\cdot UV^\top$。所以 Muon 就是谱范数几何下的 steepest descent,而 Adam 是 $\ell_\infty$ 几何下的。

Muon 在三种不同规模下的表现:NanoGPT、系统性缩放研究、Kimi K2 万亿 token 训练
Muon 的三重证据链,规模逐级递增。左:NanoGPT speedrun(模型极小,Muon 明显最快)。中:Stanford 的系统性缩放研究(130M–1.2B,加速比从 1.4× 衰减到 1.1×)。右:Kimi K2 的实际训练损失曲线,横轴跨到 15T token——曲线正常下降,没有发散。Tatsu 的总结:「缩放收益很难测准,但 Muon 在大规模上确实是能用的」。这个措辞很克制,值得注意:他没有说 Muon 快 X 倍,只说它 works at scale。

这个「三重证据链」的结构本身就是本节的方法论示范:小规模上测加速比、中规模上测加速比随规模的趋势、大规模上只验证「不炸」。第三点尤其重要——对于一个要投入千万美元训练预算的项目,「有没有人在万亿 token 规模上跑通过」比「加速 1.4×」重要得多。

8. muP 深入:两个条件推出全部规则

上一讲给了 muP 的规则表和最小实现,但没有说这些规则是怎么推出来的。这一节补上推导。理解推导的价值在于:当你的架构偏离标准 Transformer(加了新的 norm、新的激活、新的优化器)时,你能自己判断 muP 还成不成立。

Cerebras-GPT 使用 muP 与标准参数化的缩放稳定性对比
Cerebras-GPT(0.1B–13B,严格按 Chinchilla 配方训练)提供的动机性证据。左图是 Pile 测试损失 vs 训练 FLOPs,蓝线是 Cerebras-GPT 缩放律,与 Pythia(绿)、GPT-J(紫)、GPT-NeoX(红)对比。右图(Figure 5)才是重点:纵轴是各模型相对于缩放律拟合线的百分比偏差。蓝线(标准参数化 SP)剧烈震荡,在 $\pm 1\%$ 之间来回跳(111M 偏 +0.2%、256M 偏 $-0.7\%$、590M 偏 $-0.6\%$、1.3B 偏 +0.3%、2.7B 偏 $-0.9\%$、6.7B 偏 +0.8%、13B 偏 $-0.3\%$);橙线(muP)几乎贴着 0 平滑下行。做法是先在 40M 的 proxy 模型上调超参,再用 muTransfer 迁移到 2.7B。核心结论:muP 让缩放更稳定——不一定让单点损失更低,但让「按缩放律预测」这件事变得可靠。

8.1 muP 的两条公理

muP 的全部内容来自对「宽度趋于无穷时网络行为应该保持不变」的两个要求。设第 $l$ 层的宽度为 $n_l$,激活为 $h_l$:

推导

A1(初始化条件):初始化时,各层激活的每个分量应保持 $\Theta(1)$。等价地,$\|h_l\|_2=\Theta(\sqrt{n_l})$。

A2(更新条件):一步梯度更新后,激活的变化 $\Delta h_l$ 的每个分量也应是 $\Theta(1)$。

A1 保证前向不爆炸/不消失,A2 保证「每一步都在学东西,且不会一步跳飞」。注意 A2 才是关键——很多参数化能满足 A1(比如标准的 $1/\sqrt{\text{fan\_in}}$ 初始化),但违反 A2。

8.2 从 A1 推初始化

推导

考虑最简单的深度线性网络 $h_l=W_l h_{l-1}$,$W_l\in\R^{n_l\times n_{l-1}}$,初始化 $W_l\sim\mathcal N(0,\sigma^2 I)$。

由随机矩阵理论(Marchenko–Pastur / Bai–Yin 定理),高斯随机矩阵的谱范数满足

$$ \|W_l\|_\ast \;\longrightarrow\; \sigma\left(\sqrt{n_{l-1}}+\sqrt{n_l}\right) $$

($\|\cdot\|_\ast$ 表示谱范数即最大奇异值。)由此得到激活范数的上界

$$ \|h_l\|_2\;\le\;\|W_l\|_\ast\,\|h_{l-1}\|_2 $$

归纳假设 $\|h_{l-1}\|_2=\Theta(\sqrt{n_{l-1}})$。要让 $\|h_l\|_2=\Theta(\sqrt{n_l})$,需要

$$ \|W_l\|_\ast=\Theta\!\left(\sqrt{\tfrac{n_l}{n_{l-1}}}\right) \quad\Longrightarrow\quad \sigma\left(\sqrt{n_{l-1}}+\sqrt{n_l}\right)=\Theta\!\left(\sqrt{\tfrac{n_l}{n_{l-1}}}\right) $$

解出

$$ \boxed{\;\sigma=\Theta\!\left(\frac{1}{\sqrt{n_{l-1}}}\min\!\left(1,\sqrt{\tfrac{n_l}{n_{l-1}}}\right)\right)\;} $$

读法:当 $n_l\ge n_{l-1}$(fan-out 不小于 fan-in,包括方阵这个最常见情形)时,$\min$ 取 1,得到 $\sigma=\Theta(1/\sqrt{n_{l-1}})$——这就是熟悉的 $1/\sqrt{\text{fan\_in}}$ 初始化,和标准参数化一致。当 $n_l<n_{l-1}$(比如输出层,把宽度 $d$ 映射到固定的词表或标量)时,$\min$ 取第二项,$\sigma=\Theta(\sqrt{n_l}/n_{l-1})$,比标准做法更小。

Tatsu 特别注明:这是一个「最坏情况」的推导,因为用谱范数做上界假设了 $h_{l-1}$ 恰好对齐到 $W_l$ 的最大奇异方向。在初始化时($W$ 与 $h$ 独立)实际是 $\sqrt{n}$ 而不是谱范数量级;但训练开始后 $W$ 和 $h$ 会变得相关,最坏情况分析反而更贴近真实。

8.3 从 A2 推学习率

推导

第一步:更新的结构。对线性层做 SGD,$\Delta W_l=-\eta_l\,(\nabla_{h_l}\ell)\,h_{l-1}^\top$——这是一个秩一的外积。秩一矩阵的谱范数就是两个向量范数的乘积,于是

$$ \|\Delta W_l\, h_{l-1}\|_2=\|\Delta W_l\|_\ast\,\|h_{l-1}\|_2 $$

(秩一矩阵作用在它自己的右奇异方向 $h_{l-1}$ 上,取等号。)

第二步:激活变化的分解。一步更新后

$$ \Delta h_l=\underbrace{W_l\,\Delta h_{l-1}}_{\text{(i)}}+\underbrace{\Delta W_l\,(h_{l-1}+\Delta h_{l-1})}_{\text{(ii)}} $$

假设各项的主导阶不相消,逐项估计:

  • (i) $\|W_l\Delta h_{l-1}\|=\Theta(\sqrt{n_l})$——由归纳假设 $\|\Delta h_{l-1}\|=\Theta(\sqrt{n_{l-1}})$ 加上 A1 已定的 $\|W_l\|_\ast=\Theta(\sqrt{n_l/n_{l-1}})$。
  • (ii) 主项 $\|\Delta W_l h_{l-1}\|=\|\Delta W_l\|_\ast\sqrt{n_{l-1}}$。要让它也是 $\Theta(\sqrt{n_l})$,必须 $$ \|\Delta W_l\|_\ast=\Theta\!\left(\sqrt{\tfrac{n_l}{n_{l-1}}}\right)\cdot\frac{1}{\sqrt{n_{l-1}}}\cdot\sqrt{n_{l-1}}\Big/\sqrt{n_{l-1}}=\Theta\!\left(\frac{\sqrt{n_l}}{\sqrt{n_{l-1}}}\cdot\frac{1}{\sqrt{n_{l-1}}}\right) $$ 即 $\|\Delta W_l\|_\ast\sqrt{n_{l-1}}=\Theta(\sqrt{n_l})$。
  • 交叉项 $\|\Delta W_l\Delta h_{l-1}\|=O(\|\Delta W_l\|_\ast\sqrt{n_{l-1}})$,与 (ii) 同阶或更小,不改变结论。

第三步:把 $\|\Delta W_l\|_\ast$ 换算成学习率。再加一条自然要求:一步更新引起的损失变化也是 $O(1)$。用一阶展开并对偶配对(谱范数的对偶是核范数,但对秩一情形直接用 $\|\cdot\|_\ast$ 即可):

$$ \Delta\ell\approx\Theta\left(\langle \Delta W_l,\nabla_{W_l}\ell\rangle\right)=\Theta\left(\|\Delta W_l\|_\ast\,\|\nabla_{W_l}\ell\|_\ast\right) $$

代入 $\Delta\ell=O(1)$ 与 $\|\Delta W_l\|_\ast=\Theta(\sqrt{n_l}/\sqrt{n_{l-1}}\cdot n_{l-1}^{-1/2})$,反解出梯度的量级

$$ \|\nabla_{W_l}\ell\|_\ast=\Theta\!\left(\sqrt{\tfrac{n_{l-1}}{n_l}}\right) $$

最后,SGD 下 $\Delta W_l=-\eta_l\nabla_{W_l}\ell$,两边取谱范数:

$$ \boxed{\;\eta_l^{\text{SGD}}=\frac{\|\Delta W_l\|_\ast}{\|\nabla_{W_l}\ell\|_\ast}=\Theta\!\left(\frac{n_l}{n_{l-1}}\right)\;} $$

Adam 的情形不同。Adam 的更新是逐元素归一化的:$|\Delta W_{ij}|=\Theta(\eta)$ 与梯度大小无关。一个所有元素都是 $\Theta(\eta)$ 且方向相关的 $n_l\times n_{l-1}$ 矩阵,其谱范数是 $\Theta(\eta\sqrt{n_l n_{l-1}})$,于是 $\|\Delta W_l\|_\ast\sqrt{n_{l-1}}=\Theta(\eta\, n_{l-1}\sqrt{n_l})$。要它等于 $\Theta(\sqrt{n_l})$,得

$$ \boxed{\;\eta_l^{\text{Adam}}=\Theta\!\left(\frac{1}{n_{l-1}}\right)\;} $$

8.4 小结:muP 与标准参数化的差异到底在哪

muP标准参数化(SP)
初始化标准差$\Theta\!\left(\frac{1}{\sqrt{n_{l-1}}}\min\!\left(1,\sqrt{n_l/n_{l-1}}\right)\right)$$\Theta\!\left(\frac{1}{\sqrt{n_{l-1}}}\right)$
学习率(SGD)$\Theta(n_l/n_{l-1})$$\Theta(1)$
学习率(Adam)$\Theta(1/n_{l-1})$$\Theta(1)$

所以 muP 和 SP 的差异只有两处:①Adam 下学习率必须按 $1/\text{fan\_in}$ 缩放(SP 保持不变);②当 fan-out 小于 fan-in 时初始化更小(主要影响输出层/unembedding)。对隐藏层方阵($n_l=n_{l-1}=d$),初始化两者一致,差别全在学习率上。这就是为什么 MiniCPM 的 muP 清单只有五条——真正需要改的地方确实不多。

muP 对 Transformer 各类参数的初始化方差与 Adam 学习率规则表
Lingle 的《A Large-Scale Exploration of $\mu$-Transfer》给出的完整 Transformer muP 规则表,比上一讲那张更细。$M$ 是宽度、$F$ 是 FFN 中间维、$H$ 头数、$D$ 头维、$P$ 是 proxy 基准宽度、$\alpha$ 是 base LR。分四组:嵌入 $W^E$(初始化方差 $\Theta(1)$,LR $\alpha$——不随宽度变);注意力 $W^{AQ},W^{AK},W^{AV}$(方差 $1/M$,LR $\alpha P/M$),$W^{AO}$ 方差 $1/(HD)$;MLP 输入 $W^{FI}$ 方差 $1/M$、输出 $W^{FO}$ 方差 $1/F$(精确值 $0.25/M$);输出层 $W^U$ 方差 $1/M^2$(注意是平方!这正是 8.2 节 $n_l<n_{l-1}$ 那一支),LR $\alpha P/M$。下方文字补充一条容易漏掉的:muP 用注意力缩放 $\tau^{-1}=\Theta(1/D)$ 而不是通常的 $1/\sqrt{D}$,且实验显示这一项对性能和迁移性影响重大。
直觉

把整张表压成一句话记忆:凡是「两端都随宽度变大」的矩阵,Adam LR 按 $1/M$ 缩、初始化方差按 $1/M$ 缩;凡是有一端固定的(embedding 的词表端、unembedding 的词表端),按各自的固定端处理;凡是「把 $M$ 个数加起来」的地方(attention logits、output logits),归一化用 $1/M$ 而不是 $1/\sqrt M$。

最后那条的理由在上一讲讲过:$q\cdot k=\sum_{i=1}^{D}q_ik_i$,若 $q,k$ 独立随机则和是 $\Theta(\sqrt D)$,但训练后 $q$ 与 $k$ 会对齐,和变成 $\Theta(D)$。muP 关心的是训练后的行为,所以取 $1/D$。

9. muP 到底靠不靠谱:大规模复现实验

理论推导假设的是「深度线性网络 + SGD」。真实的 Transformer 有 SwiGLU、RMSNorm、旋转位置编码、weight decay、梯度裁剪——这些都不在推导范围内。Lingle 的《A Large-Scale Exploration of $\mu$-Transfer》系统地逐项检验了 muP 对这些偏离的鲁棒性,这一节就是它的结果。

9.1 基线:muP 确实工作

muP 基线与加入 projection bias 后的跨宽度学习率迁移实验表
实验协议:宽度 128 / 512 / 2048(每级 4 倍宽、16 倍参数),base LR 扫 $2^{-10}$ 到 $2^{-2}$ 五档,记录验证损失,加粗的是每行最优。Baseline muP:三个宽度的最优 base LR 全部落在 $2^{-6}$——完美迁移(打勾)。而且损失随宽度单调下降(3.695 → 2.953 → 2.511),说明缩放本身健康。Projection Biases(给线性层加 bias,muP 理论没覆盖的改动):最优仍然全在 $2^{-6}$,迁移不受影响。

这张表的读法很重要:「迁移成功」不等于「损失曲线完全一样」,而是「最优点的位置不变」。这正是 muTransfer 需要的全部保证——你在宽度 128 上找到 $2^{-6}$ 最好,就可以直接在宽度 2048 上用 $2^{-6}$,省掉一整轮大模型上的 LR 扫描。

现代语言模型中偏离 muP 理论的组件清单
被检验的偏离项清单:激活函数(SwiGLU、squared ReLU)、batch size(极大/极小)、初始化变体(如注意力零初始化)、RMSNorm 的可学习增益、非常规优化器(Lion)、正则项。问题是:这些当中哪些会破坏 muP?答案是绝大多数不会——SwiGLU、squared ReLU、各种 batch size、零初始化都通过了检验。真正出问题的只有下面三项。

9.2 失败项一:RMSNorm 的可学习增益

RMSNorm 可学习增益破坏 muP 学习率迁移的实验表
加上 RMSNorm 的可学习增益(gain)后,迁移失败(红叉)。Vector 版(每个通道一个增益):宽度 128 最优 LR 在 $2^{-4}$(3.670),512 也在 $2^{-4}$(2.950),但 2048 跑到了 $2^{-8}$(2.553)——最优点跳了 16 倍。Scalar 版(整层共享一个标量增益):128 和 512 最优在 $2^{-4}$,2048 最优在 $2^{-6}$,同样不一致。论文的说明指出:尽管 RMSNorm 前后特征的「坐标尺度」按设计就是关于宽度 $\Theta(1)$ 的,$\Theta(1)$ 的增益 LR 缩放仍然不能保证迁移;而且在 base LR 取最优时,可训练增益还会损害最大 muP 模型的质量。
核心结论

RMSNorm 的可学习增益是一个「白拿的坑」——它破坏 muP,而且去掉它几乎不掉性能。Lingle 论文进一步发现,带可训练增益的标准 Transformer 反而比不带增益的 muP Transformer 表现更差。

为什么增益会破坏迁移?直觉是:增益 $g$ 直接乘在归一化后的激活上,它的更新 $\Delta g$ 会以 $\Theta(\Delta g)$ 的幅度改变下游激活——这是一条绕过所有矩阵乘法的旁路。muP 的推导全部建立在「激活变化通过 $W$ 和 $\Delta W$ 传播」之上,增益提供了一条不受 $1/n$ 缩放约束的捷径。宽度越大,矩阵路径的更新被压得越小($\eta\propto 1/n$),而增益路径的更新保持 $\Theta(1)$,于是两条路径的相对重要性随宽度漂移——迁移自然失效。

实践建议:用 muP 时,把 RMSNorm 写成无参数版本(只做 $x/\text{RMS}(x)$)。代码上只是删掉一个 nn.Parameter。

class RMSNormNoGain(nn.Module):
    """muP 友好的 RMSNorm:不带可学习 gain。"""
    def __init__(self, eps=1e-6):
        super().__init__()
        self.eps = eps          # 注意:没有 self.weight

    def forward(self, x):
        # x: (..., d_model)
        rms = x.pow(2).mean(-1, keepdim=True).add(self.eps).rsqrt()
        return x * rms


# 对比:常见的带 gain 版本(会破坏 muP 的宽度迁移)
class RMSNormWithGain(nn.Module):
    def __init__(self, d_model, eps=1e-6):
        super().__init__()
        self.weight = nn.Parameter(torch.ones(d_model))   # <-- 这一行是问题所在
        self.eps = eps

    def forward(self, x):
        rms = x.pow(2).mean(-1, keepdim=True).add(self.eps).rsqrt()
        return x * rms * self.weight

9.3 失败项二:基于符号的优化器(Lion)

AdamW 与 Lion 算法对比,以及 Lion 下 muP 迁移失败的实验数据
上方并排列出 AdamW 与 Lion 的伪代码。差别在更新那一行:AdamW 是 $\theta\leftarrow\theta-\eta(\hat m/(\sqrt{\hat v}+\epsilon)+\lambda\theta)$,Lion 是 $\theta\leftarrow\theta-\eta(\text{sign}(c)+\lambda\theta)$,其中 $c=\beta_1 m+(1-\beta_1)g$——Lion 只用梯度的符号。下方是迁移检验:宽度 128 最优 LR 在 $2^{-10}$(3.708),512 在 $2^{-8}$(2.947),2048 也在 $2^{-8}$(2.511)。128 和另外两个不一致,判定为迁移失败(红叉)。而且注意 Lion 在大 LR 下的爆炸极其剧烈——$2^{-2}$ 处三个宽度的损失都是 10.3 左右,完全发散。

这个结果和 8.3 节的推导完全一致:muP 的 LR 规则依赖于优化器的更新几何。SGD 得到 $\eta\propto n_l/n_{l-1}$,Adam 得到 $\eta\propto 1/n_{l-1}$,那么纯符号更新($|\Delta W_{ij}|$ 恒等于 $\eta$,连自适应缩放都没有)自然又是另一套规则。用 Adam 版的 muP 规则去跑 Lion,等于用错了参数化——失败是意料之中的。

常见误区

「muP 是架构的性质」——不是,muP 是「架构 + 优化器」这一对的性质。每换一个优化器,理论上都要重新推一遍 LR 的宽度指数。这也是为什么 Muon 需要自己的 muP 变体(Muon 的更新是正交矩阵,谱范数恒为 $\eta$,规则又不同于 Adam)。如果你打算既换优化器又用 muP,务必先在两三个宽度上做一次迁移验证表——就是上面这种三行五列的表,成本很低但能省掉一次昂贵的失败。

9.4 失败项三:强 weight decay

强 decoupled weight decay 下 muP 迁移失败的实验数据
解耦式 weight decay(decoupled,即 AdamW 那种把 $-\eta\lambda\theta$ 直接加在参数更新上、不经过二阶矩归一化的形式)设为 0.1 时的结果:宽度 128 最优 LR 在 $2^{-8}$(3.679),512 在 $2^{-6}$(2.957),2048 也在 $2^{-6}$(2.502)——不一致,判失败。更严重的是 2048 在 $2^{-2}$ 处损失飙到 6.594,说明稳定区间也变窄了。下方引用的是 Loshchilov & Hutter 的 SGDW 算法,高亮出「$L_2$ 正则」(把 $\lambda\theta$ 加进梯度)与「解耦 weight decay」(把 $\eta\lambda\theta$ 直接从参数里减掉)的区别。Tatsu 的评价:这可能是 muP 唯一一个真正显著的失效点。
推导

为什么解耦 weight decay 会破坏 muP?看权重更新的两项:

$$ \Delta W = \underbrace{-\eta\cdot\frac{\hat m}{\sqrt{\hat v}+\epsilon}}_{\text{梯度项}}\;\underbrace{-\;\eta\lambda W}_{\text{衰减项}} $$

muP 要求梯度项满足 $\|\Delta W\|_\ast\sqrt{n_{l-1}}=\Theta(\sqrt{n_l})$,据此定出 $\eta\propto 1/n$。但衰减项的量级是 $\eta\lambda\|W\|_\ast$,而 $\|W\|_\ast=\Theta(\sqrt{n_l/n_{l-1}})$ 由 A1 固定。于是

$$ \frac{\|\text{衰减项}\|_\ast}{\|\text{梯度项}\|_\ast}\;\propto\;\frac{\eta\lambda\sqrt{n_l/n_{l-1}}}{\eta\cdot\Theta(\cdot)}\;=\;\lambda\cdot f(n) $$

关键是这两项对 $\eta$ 的依赖被消掉了——衰减项和梯度项都正比于 $\eta$,所以调 $\eta$ 不能改变它们的相对权重,但它们各自随宽度的缩放行为不同。等价地看,AdamW 的稳态权重范数由 $\eta\lambda$ 联合决定(平衡点在梯度项与衰减项相抵处),于是$\eta$ 和 $\lambda$ 的最优值是耦合的:muP 按 $1/n$ 改了 $\eta$,就相当于同时改了有效正则强度,最优点自然漂移。

已知的修法是把 weight decay 也纳入缩放(例如固定 $\eta\lambda$ 而不是固定 $\lambda$,这就是 AdamC 一类「修正版」优化器在做的事),或者干脆把 $\lambda$ 调小。注意 $\lambda=0.1$ 在 LLM 预训练里是很常见的默认值,所以这个坑踩中概率不低。

9.5 综合判断:muP 值不值得用

标准参数化的跨宽度 LR 迁移表,以及 muP 在 2M 到 10B 上的大规模验证
两张表回答「值不值得」。左(Table 3,标准参数化 SP):宽度 128 最优在 $2^{-6}$(3.706),512 最优在 $2^{-8}$(2.967),2048 最优在 $2^{-10}$(2.738)——最优 LR 随宽度单调左移,每 4 倍宽度就降 4 倍,完全符合上一讲的经典 muP 图。更要命的是 SP 在偏大的 LR 上直接崩:2048 在 $2^{-6}$ 处损失 7.247(对比 muP 同位置 2.511)。右(Table 4,muP 大规模验证):2M(128) / 40M(512) / 600M(2048) / 10B(8192) 四个规模,只扫三档 base LR,最优全部落在 $2^{-6}$——跨越 5000 倍参数量迁移成功。Tatsu 的总结:muP 总体有用,主要因为 SP 实在不稳定;现有证据表明 muP 的参数化/初始化更容易调。
核心结论

muP 的实际价值不在「理论正确」,而在把风险从「灾难性」降到「轻微次优」:

  • 用 SP 时,宽度 2048 上用宽度 128 的最优 LR,损失从 2.738 变成 7.247——模型基本废了。
  • 用 muP 时,即使某个组件破坏了严格迁移(比如带增益的 RMSNorm),最优点也只是漂移 1–2 档(4–16 倍),损失代价在小数点后第二位。

所以正确的心态是:muP 是一层保险,不是一个免除调参的许可证。标准工作流仍然是「按 muP 迁移 → 在目标规模上扫 $\{0.5\times,1\times,2\times\}$ 三档确认」。这也正是 MiniCPM 实际做的事。

10. 实战检查清单

课程总结:实践中缩放的三大挑战与对应解法
Tatsu 的收尾总结页,把整堂课压成「三个挑战 + 三个解法」。挑战:①设定架构超参(宽度等);②设定优化器超参(LR、batch);③拟合完整 Chinchilla 扫描所需的算力。解法:①假设稳定性(或用 muP);②在小规模搜索最优 LR/batch,然后要么固定不变、要么预测其缩放;③改用 WSD 类的学习率调度。

把整讲的可操作内容整理成一份可以照着做的流程。假设你要训练一个目标算力为 $C_{\text{target}}$ 的模型,手上有大约 $0.1\%\text{–}1\%$ 的算力可以用于缩放实验。

第 0 步:先定口径

  • 决定用 $N$(参数量)还是 $M$(每 token 非嵌入 FLOPs)作自变量。推荐 $M$(DeepSeek 做法)——它避开了「算不算 embedding」这个历史包袱,且 $C=MD$ 精确成立。
  • 决定损失指标。用 bits-per-byte 而不是 per-token,这样换 tokenizer 时曲线仍可比(MiniCPM 和 DeepSeek 都这么做)。
  • 准备一个固定的、不参与训练的验证集,最好覆盖你关心的多个域(MiniCPM 用了 code / 英文 / 中文三套)。

第 1 步:固定架构自由度

  • 固定长宽比($d_{\text{model}}/L$)、head dim(64 或 128)、FFN 倍数。这样「模型大小」变成一维。
  • 决定用不用 muP。用:改动只有五条(见 2.1 节),代价是必须去掉 RMSNorm 的可学习增益、控制 weight decay。不用:那就走 DeepSeek 路线,接受要拟合 $\eta_{\text{opt}}(\cdot)$。
  • 如果要比较架构(如线性注意力 vs softmax),每种架构各拟合一条完整缩放曲线,比较斜率与截距,不要只比某一个规模上的单点(MiniMax 做法)。

第 2 步:定 LR 和 batch

  • 在 2–3 个小规模上做 $(\eta, B)$ 二维网格。利用凸性:每个方向 5–7 个点、按 2 倍间隔就够定位谷底。
  • batch size 主要跟 $D$ 走,LR 主要跟 $N$ 走(Step Law)。如果只能省着做,优先扫 LR。
  • 复用中间 checkpoint:一次固定 batch 的训练可以同时给出所有 $D$ 值上的数据点(MiniCPM 做法)。
  • 记录你用的调度。换调度会让拟合出的超参缩放律失效。

第 3 步:定模型/数据配比

  • 换成 WSD 调度。稳定期长跑一条主干,在目标 $D$ 处分叉出 10% 长度的衰减分支。这是把 $O(n^2)$ 变 $O(n)$ 的关键。
  • 至少用两种Chinchilla 方法交叉验证(推荐方法 2 IsoFLOP + 方法 3 联合拟合)。三种方法结论差很多时,怀疑那条离群的。
  • 拟合时用 Huber loss 在对数空间做(Chinchilla 原文做法),而不是朴素的 curve_fit——幂律拟合对离群点极度敏感,一个发散的 run 能把整条曲线拽歪。
  • 报置信区间时如果算出 $\alpha\in(0.454,0.455)$ 这种宽度,那是不确定性估计错了(上一讲 10.3 节)。

第 4 步:验证与防御

  • 留出验证:用最大的 1–2 个实验点做留出,看拟合线预测得准不准,并把它画在同一张图上(DeepSeek 做法)。
  • 监控尺度不变量:各层激活 RMS、attention logits 最大值、梯度范数——它们在实验阶梯上应该基本恒定。若单调增长,说明参数化不是尺度不变的,外推会在某处炸掉(7.3 节的失败案例)。
  • 不要只看 loss:如果关心下游任务,用 LLaMA 3 的两段式(算力→loss 幂律,loss→准确率 S 形)分别拟合。
  • 算清部署账:Chinchilla 最优点忽略推理。如果模型要长期服务,故意往数据侧偏(过度训练)几乎总是对的——损失曲面在最优点附近很平,用 0.01 nats 换一半的推理成本是划算的。
注意

最后一条元建议,来自 7.2 节:无论你在验证什么(新优化器、新架构、新数据配方),都必须在至少 3 个模型规模 × 2 个 Chinchilla 比值上验证。大多数「小规模上有效」的技巧,其收益机制是加速早期优化,而这部分在大规模长训练里的占比会被稀释到接近于零。这条准则的成本是 6 倍实验量,但它能防止你把整个训练预算押在一个只在玩具规模成立的结论上。

本讲小结

一页速查。

公开配方的关键数字

来源拟合出的关系用途
MiniCPM 联合拟合$L=\frac{7.54\times10^{-2}}{N^{0.30}}+\frac{2.92\times10^{-1}}{D^{0.30}}+0.25$$D/N\approx 95.6$($C=10^{21}$)
MiniCPM batch$\log B=-6.24\log L+20.91$损失越低,batch 越大
DeepSeek 超参$\eta_{\text{opt}}=0.3118\,C^{-0.1250}$,$B_{\text{opt}}=0.2920\,C^{0.3271}$由算力直接预测 LR / batch
DeepSeek IsoFLOP$C=4.5\times10^{23}\Rightarrow M=4.3\times10^{11}$, $D=1.04\times10^{12}$定 67B 的规模与 token 数
Step Law$\eta=1.79\,N^{-0.713}D^{0.307}$,$B=0.58\,D^{0.571}$相对误差 0.94‰,当前最准
Hunyuan-LargeIsoFLOP over 激活参数96:1(数据 : 激活参数)
LLaMA 3IsoFLOP + 两段式下游预测39:1;准确率可外推到 405B
Kimi K2稀疏度缩放律稀疏度 48(384 选 8)

四条最该记住的判断

  1. WSD 是这一讲最实用的单点技术。它同时解决三件事:让 Chinchilla 拟合成本从 $O(n^2)$ 降到 $O(n)$、让持续预训练变得自然、性能与 cosine 持平。没有理由不用。
  2. muP 是保险而非免调参。它把 LR 搜索范围从三个数量级压到一个 2–4 倍窗口,把「用错 LR」的后果从模型报废降为轻微次优。但它对 RMSNorm 可学习增益、符号型优化器、强 weight decay 不鲁棒,用之前先做三行五列的迁移验证表。
  3. 超参缩放律要当量级参考读,不是精确预测。DeepSeek 那条 LR 拟合线在 Tatsu 看来「有点可疑」;各家公式在统一测试下相对误差差一个数量级。好消息是最优区域很平,所以差异的实际代价小——它们的价值在于保证你不掉悬崖。
  4. 规模和 Chinchilla 比值是最大的混淆因子。优化器加速比随规模单调衰减(Muon 从 1.4× 到 1.1×);「新方法有效」的结论在 130M/1× 上几乎必然成立、在 70B/20× 上几乎必然失效。这是本讲最可迁移的方法论。

两条路线的选择

如果你在从零搭一套缩放流程:算力紧、团队小、目标模型不超过 10B → 走 MiniCPM 路线(muP 锁住超参,只做联合拟合,省掉超参扫描)。要外推多个数量级、架构非标准、或已经有成熟的非 muP 代码库 → 走 DeepSeek 路线(不碰参数化,老老实实拟合 $\eta_{\text{opt}}(\cdot)$ 和 $B_{\text{opt}}(\cdot)$,用 IsoFLOP 定规模)。两条路都必须配 WSD。

延伸阅读

本讲逐页拆解的技术报告

方法论与实证研究

参数化与优化器

把推理成本纳入目标函数