为什么 Kaplan 与 Chinchilla 结论不同?这条「定律」该信几分?
这是一堂岔路课,也是本章的「证据三问」范例课。旧版课程里有一句话:「这两条结论直接冲突——冲突本身就是最好的教材。」这一课把冲突拆开:Kaplan 2020 说最优模型 N ∝ C0.73,Chinchilla 2022 说 ∝ C0.5 左右,差别大到决定了一代模型怎么训。
本课一问:两份都是认真做的大规模实验,为什么结论不同?这条被叫作「定律」的东西,该信几分?
这一课先不碰:推理成本(回主线第 3 课)。
从已有出发
第 2 课的 U 形与谷底,在 Chinchilla 的真实点上复现了 a ≈ 0.5。这一课不换数据,只换看数据的方式:参数怎么数、拟合怎么做、系数写几位小数。用的仍是那 123 个 IsoFLOP 点(本章的贯穿任务不变:给一个 Qwen3.8-27B 级别的模型定预算,拿什么数字才靠得住)。
- 解决了loss 随参数、数据、算力按幂律下降:参数翻倍,loss 乘以 0.9487(Kaplan 式 1.1)。幂律的多领域实证首见 Hestness 2017。卡在纯幂律没有底,直线外推偏乐观:Llama 3 的数据只用 ≤3×10²⁰ 的预算外推 10²²,预测 0.6574,真实 0.6931。
- 解决了给出 N ∝ C0.73:预算 ×10,模型 ×5.37、数据只 ×1.86。卡在Gopher 280B 只训 300B token;同预算的 Chinchilla 70B 训 1.4T,MMLU 60.0% → 67.6%。
- 解决了每个预算扫一遍模型大小,loss 呈 U 形,谷底连成前沿:N ∝ C≈0.5,约 20 token/参数。页内用 Chinchilla 的真实点拟得 a = 0.511,外推到 5.76×10²³ 得 67.1B / 1.43T。卡在只算训练的账。模型要服务 10T 个 token 时,按训练最优做的模型总算力 2.02×10²⁴,换成同样 loss 的 34.1B 小模型只要 1.44×10²⁴。
- 解决了Kaplan 偏大的主因找到了:只数非 embedding 参数 + 规模小(Pearce & Song);末层计算、warmup、按规模调优化器(Porian)。卡在Chinchilla 自己的拟合系数也有错:正文取整后的系数在 5.76×10²³ 隐含 92.6 token/参数,Besiroglu 重拟合是 18.4;抛物线法本身也有偏差(Llama 3 数据上相当于 6.5% 的预算配错)。
- 解决了把推理的 2N FLOPs/token 算进总账,最优模型变小、数据变多:Llama 3 8B 1,875 token/参数,Qwen3-0.6B 60,000。卡在小模型上调好的超参搬不过去:按 DeepSeek LLM 的式子,10¹⁷ FLOPs 的最优学习率是 67B 那一档的 7.5 倍。
- 解决了最优学习率、batch 写成 C 的幂律:DeepSeek LLM 7B 预测 η = 4.25e-4,实际用 4.2e-4。卡在换结构、换优化器,最优点就挪:Qwen3.8 报告里旧配方末了 loss 高 7.8e-3、下游平均低 4.14 分(自报);多数团队不公开系数。
- 解决了缩放不止一条轴:数据从哪来(C7)、测试时多想一会儿(C12)都进了预算。卡在高质量数据会先用完:我们项目只有 50 万 token 语料,val 在第 300 步(约 4.9 个 epoch)最低 4.7713,之后一路升到 6.9065(实验课)。
第一组修正:Kaplan 的 0.73 从哪来
2024 年有两篇论文专门复现了这个差异,结论相互补充:
- 参数怎么数(Pearce & Song 2024):Kaplan 只数不含 embedding 的参数,Chinchilla 数全部参数;再加上 Kaplan 的实验规模偏小。在 Chinchilla 的设置里按这两个条件模拟,就会得到接近 Kaplan 的偏大系数 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条模拟与重分析;作者据此建议今后的缩放研究一律用总参数和总算力。 出处Pearce & Song 2024 摘要 ↗需联网 。
- 三个实验设置(Porian et al. 2024):末层(输出投影)的计算量、warmup 的长短、按规模调优化器。三处都修正后,在 OpenWebText2 和 RefinedWeb 上复现出了 Chinchilla 的结果;并且发现 Chinchilla 自己猜测的原因——学习率要随训练长度仔细衰减——并不是必要条件 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条两个数据集、自己训练的模型;说明「谁对」要连同实验设置一起说。 出处Porian et al. 2024 摘要 ↗需联网 。
「只数非 embedding 参数」为什么在小规模上影响这么大?看几个真实的数:
| 模型 | 全部参数 | 其中 embedding(含输出层) | 占比 | 出处 |
|---|---|---|---|---|
| DeepSeek LLM 表 3 最小的一档(8 层、d = 512、词表 102,400) | 77.6M | 77.6M − 25.2M = 52.4M | 67.5% | DeepSeek LLM 表 3 |
| 我们的 minillm 基线(词表 2,048,输入输出共享) | 3,688,704 | 524,288 | 14.2% | 04-实践项目 README |
| Qwen3.8-27B 文本主干 | 26,895,998,464 | 2,542,796,800 | 9.5% | anchor-model.json |
小模型里 embedding 可以占到大头,大模型里只占零头。用「非 embedding 参数」和「全部参数」当横轴,小模型那一端的点会整体左右平移,拟合出的斜率就跟着变——而 Kaplan 的实验恰恰集中在小模型。DeepSeek LLM 为此干脆换了一把尺子:用每 token 的非 embedding FLOPs M(含注意力开销),并报告 6N 与 M 在小模型上能差到 50%(报告表 3:6N1/M 从 0.43 到 0.92)。
第二组修正:Chinchilla 自己的第三种方法也错了
Chinchilla 用三种方法求分配指数,前两种给出 a = 0.50 与 0.49,第三种(参数化拟合)给出 0.46,并附了一个窄得出奇的置信区间 [0.454, 0.455]。2024 年,Epoch AI 的 Besiroglu 等人想复现第三种方法,遇到的第一个问题是:原始数据没有公开。他们只好下载论文 PDF,从图 4 的矢量图里把 245 个点的坐标一个个读出来,loss 从颜色刻度读(256 级颜色,精度约 0.01)。复现结果:
- 用同样的函数形式和同样的拟合方法重拟合,得到 E = 1.8172、A = 482.01、B = 2085.43、α = 0.3478、β = 0.3658;它在 5.76×10²³ 处给出 18.4 token/参数,和前两种方法、和 Chinchilla 实际训练用的 20 一致。
- 原文正文的系数(取整后)在同一预算给出 92.6,TeX 源里未取整的系数给出 59.1——Besiroglu 概括为「约 70 token/参数」,和原文自己的另外两种方法对不上。
- 原文的置信区间要窄到那个程度,需要约 60 万次训练 run;而原文只有 400 多个。
- 原因后来由原作者之一 Borgeaud 澄清:拟合时 Huber 损失被求了平均而不是求和,损失尺度太小,L-BFGS 优化器提前停了;再加上正文系数取整。 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条从 PDF 矢量图重建的数据;作者的代码与数据公开(epoch-research/analyzing-chinchilla)。 出处Besiroglu et al. 2024 §3 ↗需联网
取整这件事单独拿出来看,影响有多大:
试三件事:① 默认预算 5.76×10²³:对比三行的 D/N(92.6 / 59.1 / 18.4);② 点「1 位」小数,把重拟合的 α、β 取到 0.3 与 0.4,D/N 一下变成 0.08——指数的末位能把结论推到荒谬;③ 看下半张表:Llama 3 报告正文的系数(两位小数)外推出 10.5T token,图例的三位小数外推出 16.3T,报告结论是 16.55T。
第三组修正:拟合方法本身
就算数据和系数都没问题,「怎么拟合」也是一个选择。下面用同一批 Chinchilla 点,在页内把 L = E + A/Nα + B/Dβ 重新拟合(变量投影:α、β 在网格上逐一试,每一组对 E、A、B 解一次 3×3 最小二乘),你来改拟合选择:
试四件事:① 默认(最小二乘、排除 5 个离群点):5.76×10²³ 处 D/N = 12.2;把离群点「包含」进来,变成 2.9——5 个点改变了结论。② 目标函数切到 Huber(近似 Chinchilla 原文的做法):排除离群点时 12.1,包含时 7.5——Huber 对离群点更稳,这正是原文选它的理由。③ 「只用这些预算」选 ≤3×10²⁰:D/N 掉到 3.1;选「取 2 位小数」:几乎不动(12.3)。④ 点「8 个随机种子」:σ = 0.01 的噪声(正好是从颜色读 loss 的精度)就让 D/N 在 9.5–13.4 之间摆动;再点「算法自检」,同一段代码在 ml-scalefit 版数据上复现数据集卡片公布的 α = 0.39、β = 0.43、E = 1.916。
这些数都比 Besiroglu 的 18.4 小,因为这里只有 123 个点(落在 9 个 IsoFLOP 预算附近的那部分),而他们用了图 4 的全部 245 个点——这本身就说明:用哪些点拟合,也是结论的一部分。抛物线法(Approach 2)也不是无懈可击:Czech 等人 2026 年证明,当 U 形左右不对称(α ≠ β)、或者采样的模型没有以谷底为中心时,抛物线顶点会系统性地偏离真正的最优点;用在 Llama 3 公开的数据上,相当于把 3.8×10²⁵ FLOPs 预算的 6.5% 配错了地方,按 50% 的 H100 利用率折合约 1.4 百万美元(90% 置信区间 412 千到 2.9 百万美元) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条合成数据上的偏差分析 + 公开的 Llama 3 IsoFLOP 数据;金额是作者按其假设折算的。 出处Czech et al. 2026 摘要 ↗需联网 。
常见误解一:「经验定律就是真理。」缩放律是在特定数据、分词、参数口径、训练设置下拟合出来的经验规律。换了其中任何一项,指数都可能变(DeepSeek LLM 表 4:换数据,a 从 0.450 到 0.578)。
常见误解二:「系数写到两位小数就够了。」C 动辄 10²⁴ 以上,指数乘上 ln C ≈ 55–59,末位的 0.007 就是 1.5 倍的差别。Besiroglu 的原话大意是:只报告几位有效数字的指数,不足以准确确定这个关系。
常见误解三:「拟合结果只取决于数据。」离群点留不留、目标函数用平方还是 Huber、用哪些预算,都会挪动结论(上面的探针)。报告缩放律时要一并报告这些选择。
证据三问:这条缩放律该信几分
把第 2 课的结论逐层拆开:
| 层 | 内容 | 能信到什么程度 |
|---|---|---|
| 数学可证明 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条给定函数形式与系数,约束 6ND = C 下求极值是严格的。 出处Hoffmann 2022 式 (4) ↗ | 若 L = E + A/Nα + B/Dβ,则最优 a = β/(α+β);α ≈ β 时 N、D 同比例长 | 推导本身可靠;但它只把「系数」翻译成「建议」,系数错了建议就错 |
| 有理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条近似误差、估计误差、不可约误差的三段分解;没有证明 Transformer 的 loss 必须是这个形状。 出处Hoffmann 2022 附录 D.2 ↗ | 三段分解:语言的熵 + 模型类太小 + 样本有限 | 说明「为什么可能是这个形状」,不说明指数是多少 |
| 实验验证 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条多个团队、多个数据集;指数随数据与设置变化,引用时要带条件。 出处Hoffmann 2022;Besiroglu 2024;Porian 2024 ↗需联网 | 三种方法 a ≈ 0.46–0.50;被 Epoch、Porian 等独立复现并修正;DeepSeek、Llama 3 在自家数据上各拟一遍 | 「参数和数据大致同比例长」这个定性结论很稳;「具体是 20」要连同数据与拟合方法一起说 |
这正是 C2 岔路课留下的那条证据链的最后一环——对话样本里的原话是:「Scaling:验证扩大到 7B / 70B / 训练万亿 token 后规律还成立吗」。缩放律本身,也要过这一关。
🔍 为什么 Chinchilla 选 Huber、选 log 残差?
原文附录 D.2:在 log loss 上做 Huber(δ = 10⁻³),因为小预算的点残差大,平方损失会被它们主导,预测不好留出的大预算点;δ 取更大会过拟合小算力区域,取更小则不影响结果。本页的 Huber 选项用相对残差 r/L 近似 log 残差(r/L ≈ log L − log L̂),用迭代加权最小二乘(IRLS)求解,是原文目标函数的一阶近似,不是逐字复刻。
一句话
Kaplan 与 Chinchilla 的差别主要来自参数口径和实验设置,连 Chinchilla 自己的系数也被复现者修正过:缩放律是经验规律,引用时要连同数据、口径和拟合方法一起引用。
回到主线
回主线第 3 课:模型要被调用十亿次,还按训练最优训吗? → 第 3 课
你可能会问
- 「那 Kaplan 2020 还值得读吗?」 值得:幂律形式、C ≈ 6N 的逐项表、临界 batch(第 4 课)都出自它,而且被后来的工作沿用。要注意的是它的分配指数,以及「参数只数非 embedding」这个口径。
- 「DeepMind 为什么不公开原始数据?」 原文没有说明。结果是一篇被广泛采用的论文,要靠别人从 PDF 的矢量图里读数来复现——这本身就是一个关于「证据可复现性」的例子。
- 「我们自己的小模型能拟出这些数吗?」 能拟,但条件很不一样(语料只有 50 万 token、会重复很多遍)。见实验课。