Skip to content

Scaling Laws

Scaling Laws 研究的是模型性能如何随参数量、训练数据量和计算量变化。它不是单纯“越大越好”,而是告诉你在哪种资源分配下,提升最划算。

核心概念

  • 核心变量一般包括参数量 N、数据量 D、计算量 C
  • 在资源固定时,模型、数据和训练步数之间存在平衡,不是只堆某一项就能最优。
  • Chinchilla 风格的结论强调:很多模型过去是“参数太多、数据太少”。
  • Scaling 讨论的不仅是 loss,也包括下游任务、泛化、推理成本和部署现实。
  • MoE、量化、蒸馏、检索增强,也都可以看成在 scaling 压力下做的不同折中。

Scaling Laws 是什么

在大语言模型里,Scaling Laws 指的是这样一类经验规律:当你把模型参数量 N、训练中看到的 token 数 D、训练算力 C 按某种方式放大时,预训练损失 L 会以相当稳定的方式下降。这里的 L 通常指 token-level cross-entropy loss,也就是“平均每个 token 还有多难预测”。

TIP

Scaling Laws 不是一句“模型越大越好”。

它真正研究的是:模型、数据、算力应该按什么比例一起变大,才最划算。

最基础的幂律形式

最常见的入门写法是:

L(N)L+ANαL(D)L+BDβL(C)L+KCγ

这里,N 是参数量,D 是训练 token 数,C 是训练 FLOPs,L 是“再怎么放大也不可能低于的损失下界”,而 α,β,γ>0 是缩放指数。

这三条式子都在说同一件事:
当你继续往上加资源时,loss 会继续下降,但边际收益会越来越小。也就是说,参数翻倍当然有用,但通常不会让损失减半。

为什么叫 power law

因为如果把第一条式子移项:

L(N)L=ANα

再对两边取对数:

log(L(N)L)=logAαlogN

这说明如果横轴画 logN,纵轴画 log(LL),图上会接近一条直线,斜率就是 α。所以大家才会说“在 log-log 坐标里,它接近线性”。

WARNING

这里的 “law” 更接近“经验拟合规律”,不是物理学里那种严格定律。

它在某个模型家族、某套训练设置、某个数据分布上往往很好用,但换架构、换数据、换目标函数,常数项和指数都可能变化。

Kaplan 版 Scaling Laws:先证明“确实有幂律”

Kaplan et al., 2020 是这条线最经典的起点之一。它研究的是自回归语言模型的测试损失如何随参数、数据和算力变化。

论文在 summary 里给出的代表性形式是:

L(N)=(NcN)αN,αN0.076L(D)=(DcD)αD,αD0.095L(Cmin)=(CcCmin)αC,αC0.050

你可以把它们理解成三条边际规律:

第一条说“模型太小时,增大参数会带来稳定收益”;
第二条说“数据太少时,增加 token 也会带来稳定收益”;
第三条说“如果算力本身是瓶颈,那么最优 loss 也会随 compute 呈幂律下降”。

Kaplan 还给了一个同时考虑参数量和数据量的拟合式:

L(N,D)=[(NcN)αN/αD+DcD]αD

这个式子很有直觉:

如果 N 太小,模型能力不够,第一项会主导;
如果 D 太小,数据不够,第二项会主导;
只有两项都一起压下去,loss 才能持续下降。

Kaplan 的核心结论

Kaplan 不只是说“变大有用”,而是进一步问:

如果训练算力固定,应该把预算更多花在更大的模型上,还是更多的数据上?

他们在自己的拟合与训练设定下得到的 compute-efficient 结论是:

NoptC0.73,DoptC0.27

这意味着在 Kaplan 的结论里,算力增加时,最优策略更偏向:

模型长得更快,数据长得更慢。

所以早期很多人对 scaling laws 的直观印象会是:

在固定训练算力下,宁可训练更大的模型,但不要非把它训练到完全收敛;让模型偏大、早点停,往往更算得过来。

Chinchilla 为什么会改写这件事

Hoffmann et al., 2022 也就是常说的 Chinchilla,对这个故事做了一个非常重要的修正。

它的核心观点不是“Kaplan 完全错了”,而是:

如果你真正把参数量和训练 token 数一起系统地扫一遍,再在固定 FLOPs 下找最优点,最优配比会比 Kaplan 预测得更偏向“多数据”。

Chinchilla 论文里甚至明确指出,Kaplan 的分析里,不同模型共享固定 token 预算和训练日程的做法,会让“继续增加训练 token”的收益被低估,于是最终把最优点推得更偏向“大模型、少数据”。

他们给出的参数化损失形式是:

L^(N,D)=E+ANα+BDβ

这个式子非常直观。
其中 E 是不可约损失,可以理解成自然文本本身的熵下界;ANα 表示模型不够大带来的误差;BDβ 表示训练 token 不够多带来的误差。

和 Kaplan 相比,Chinchilla 的写法把“模型不够大”和“数据不够多”更干净地拆成了两项,这也让后面的 compute-optimal 推导更透明。


Chinchilla 的推导:为什么会得到“模型和数据差不多一起长”

Chinchilla 用的是固定训练算力约束。对 dense autoregressive Transformer,一个常见近似是:

C6ND

这里 C 是训练 FLOPs,N 是参数量,D 是训练 token 数。
这条式子很好理解:模型更大,要花更多算力;看更多 token,也要花更多算力。

既然算力固定,那么

D=C6N

把它代入 Chinchilla 的损失式:

L^(N)=E+ANα+B(C/(6N))β

整理一下:

L^(N)=E+ANα+B(6NC)β

现在要做的事很简单:
C 固定时,找出哪个 N 让 loss 最小。于是对 N 求导:

dL^dN=αAN(α+1)+βB6βCβNβ1

令导数为 0:

αAN(α+1)+βB6βCβNβ1=0

移项后得到:

αAN(α+1)=βB6βCβNβ1

两边同乘 Nα+1

αA=βB6βCβNα+β

于是:

Nα+β=αAβB6βCβ

最后开 (α+β) 次方:

Nopt(C)=G(C6)βα+β

其中

G=(αAβB)1α+β

再由 D=C/(6N) 可得:

Dopt(C)=G1(C6)αα+β

这就是 Chinchilla 最重要的 closed-form 结论。

这条推导到底说明了什么

它说明:在固定算力下,最优参数量和最优 token 数,本身也都会随算力呈幂律增长。

而且它们的指数分别是:

a=βα+β,b=αα+β

也就是说:

NoptCa,DoptCb

如果 αβ 比较接近,那么 ab 就都会接近 0.5
这正是 Chinchilla 的核心结论来源:模型大小和数据大小应该大致同速增长。

论文中三种估计方法给出的结果都接近:

NoptC0.5,DoptC0.5

所以 Chinchilla 的总结经常会写成:

每当模型参数量翻倍,训练 token 数也应该大致翻倍。

大约 20 tokens per parameter

看 token / parameter 的比值:

DoptNopt=G2(C6)αβα+β

如果 αβ,那么上式里关于 C 的指数就接近 0,于是

DoptNopt常数

这就是为什么 Chinchilla 常被总结成一个经验法则:

训练 token 数大约是参数量的 20 倍左右。

这个“20”不是数学定理,而是 Chinchilla 那组 dense Transformer、那套数据、那种 compute 记账方式下得到的经验常数
它适合作为直觉,不适合当成所有模型、所有场景下都不变的自然常数。

Chinchilla 最著名的例子

Chinchilla 论文最有名的实验结论是:

在与 Gopher 相同训练 FLOPs 下,训练一个更小但喂更多数据的模型会更好。
他们训练的 Chinchilla 是 70B 参数、1.4T tokens;相比之下,Gopher 是一个更大的 280B 级模型,但数据使用更少。结果是 Chinchilla 在大量下游任务上整体更强。

所以 Chinchilla 给业界的真正冲击不是一句“70B 很厉害”,而是:

同样的训练预算,很多旧模型其实不是太小了,而是太大且没喂够数据。

Kaplan 和 Chinchilla 到底差在哪里

如果硬要把两者差别压成一句话,那就是:

Kaplan 更强调“大模型非常值钱,甚至应该偏大一些、早点停”;
Chinchilla 更强调“大模型当然值钱,但数据也不能省,固定 FLOPs 下模型和 token 应该一起长”。

所以今天大家说 “Chinchilla-optimal”,通常就是在说:

在固定训练 FLOPs 下,模型不要一味做大,而要和训练 token 数一起配平。

这些 Scaling Laws 该怎么用,怎么别用错

不要把 Scaling Laws 想成“万能公式”

它们最稳的时候,描述的是某类模型在某类数据上的预训练 loss如何变化。

这不等于任何下游指标都严格 obey 同样的指数。

真正使用时,至少要记住三件事。

第一,指数和常数是模型家族相关的。dense Transformer、MoE、检索增强模型、不同 tokenizer、不同数据混合,都会影响拟合结果。

第二,预训练 loss 的最优,不一定等于所有下游指标都最优。Scaling law 最稳的对象通常是 pretraining loss;而你真正关心的可能是对话效果、代码能力、工具调用能力、推理能力,这些和 loss 往往强相关,但不完全等价。

第三,经典 Chinchilla 主要优化的是训练期的 compute。
如果把推理成本也算进去,最优点可能继续移动。Sardana et al., 2024 就指出:如果预期推理需求很大,最优模型可能会比 Chinchilla-optimal 更小一些、训练更久一些。

总结

Scaling Laws 研究的是:

loss 会如何随着参数 N、数据 D、算力 C 的增长而按幂律下降,以及在固定预算下,ND 应该怎么分配才最划算。

如果只记两条式子,记这两条就够了:

L^(N,D)=E+ANα+BDβ

Nopt(C)Cβα+β,Dopt(C)Cαα+β

它们已经把 Scaling Laws 里最核心的思想都装进去了。