Scaling Laws
Scaling Laws 研究的是模型性能如何随参数量、训练数据量和计算量变化。它不是单纯“越大越好”,而是告诉你在哪种资源分配下,提升最划算。
核心概念
- 核心变量一般包括参数量
N、数据量D、计算量C。 - 在资源固定时,模型、数据和训练步数之间存在平衡,不是只堆某一项就能最优。
- Chinchilla 风格的结论强调:很多模型过去是“参数太多、数据太少”。
- Scaling 讨论的不仅是 loss,也包括下游任务、泛化、推理成本和部署现实。
- MoE、量化、蒸馏、检索增强,也都可以看成在 scaling 压力下做的不同折中。
Scaling Laws 是什么
在大语言模型里,Scaling Laws 指的是这样一类经验规律:当你把模型参数量
TIP
Scaling Laws 不是一句“模型越大越好”。
它真正研究的是:模型、数据、算力应该按什么比例一起变大,才最划算。
最基础的幂律形式
最常见的入门写法是:
这里,
这三条式子都在说同一件事:
当你继续往上加资源时,loss 会继续下降,但边际收益会越来越小。也就是说,参数翻倍当然有用,但通常不会让损失减半。
为什么叫 power law
因为如果把第一条式子移项:
再对两边取对数:
这说明如果横轴画
WARNING
这里的 “law” 更接近“经验拟合规律”,不是物理学里那种严格定律。
它在某个模型家族、某套训练设置、某个数据分布上往往很好用,但换架构、换数据、换目标函数,常数项和指数都可能变化。
Kaplan 版 Scaling Laws:先证明“确实有幂律”
Kaplan et al., 2020 是这条线最经典的起点之一。它研究的是自回归语言模型的测试损失如何随参数、数据和算力变化。
论文在 summary 里给出的代表性形式是:
你可以把它们理解成三条边际规律:
第一条说“模型太小时,增大参数会带来稳定收益”;
第二条说“数据太少时,增加 token 也会带来稳定收益”;
第三条说“如果算力本身是瓶颈,那么最优 loss 也会随 compute 呈幂律下降”。
Kaplan 还给了一个同时考虑参数量和数据量的拟合式:
这个式子很有直觉:
如果
如果
只有两项都一起压下去,loss 才能持续下降。
Kaplan 的核心结论
Kaplan 不只是说“变大有用”,而是进一步问:
如果训练算力固定,应该把预算更多花在更大的模型上,还是更多的数据上?
他们在自己的拟合与训练设定下得到的 compute-efficient 结论是:
这意味着在 Kaplan 的结论里,算力增加时,最优策略更偏向:
模型长得更快,数据长得更慢。
所以早期很多人对 scaling laws 的直观印象会是:
在固定训练算力下,宁可训练更大的模型,但不要非把它训练到完全收敛;让模型偏大、早点停,往往更算得过来。
Chinchilla 为什么会改写这件事
Hoffmann et al., 2022 也就是常说的 Chinchilla,对这个故事做了一个非常重要的修正。
它的核心观点不是“Kaplan 完全错了”,而是:
如果你真正把参数量和训练 token 数一起系统地扫一遍,再在固定 FLOPs 下找最优点,最优配比会比 Kaplan 预测得更偏向“多数据”。
Chinchilla 论文里甚至明确指出,Kaplan 的分析里,不同模型共享固定 token 预算和训练日程的做法,会让“继续增加训练 token”的收益被低估,于是最终把最优点推得更偏向“大模型、少数据”。
他们给出的参数化损失形式是:
这个式子非常直观。
其中
和 Kaplan 相比,Chinchilla 的写法把“模型不够大”和“数据不够多”更干净地拆成了两项,这也让后面的 compute-optimal 推导更透明。
Chinchilla 的推导:为什么会得到“模型和数据差不多一起长”
Chinchilla 用的是固定训练算力约束。对 dense autoregressive Transformer,一个常见近似是:
这里
这条式子很好理解:模型更大,要花更多算力;看更多 token,也要花更多算力。
既然算力固定,那么
把它代入 Chinchilla 的损失式:
整理一下:
现在要做的事很简单:
在
令导数为 0:
移项后得到:
两边同乘
于是:
最后开
其中
再由
这就是 Chinchilla 最重要的 closed-form 结论。
这条推导到底说明了什么
它说明:在固定算力下,最优参数量和最优 token 数,本身也都会随算力呈幂律增长。
而且它们的指数分别是:
也就是说:
如果
这正是 Chinchilla 的核心结论来源:模型大小和数据大小应该大致同速增长。
论文中三种估计方法给出的结果都接近:
所以 Chinchilla 的总结经常会写成:
每当模型参数量翻倍,训练 token 数也应该大致翻倍。
大约 20 tokens per parameter
看 token / parameter 的比值:
如果
这就是为什么 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 会如何随着参数
如果只记两条式子,记这两条就够了:
和
它们已经把 Scaling Laws 里最核心的思想都装进去了。