19 · 扩展 · 9 min

更大的模型总是更好吗?

Kaplan 与 Chinchilla 的扩展法则。为什么 GPT-3 训练不足,以及每个参数 20 个 token 的最优比。

一种误导性的直觉

多年来,AI 行业一直靠着一个简单的信念在运转:模型大一倍,效果更好。GPT-2(15 亿参数)被 GPT-3(1750 亿)超越。PaLM、Megatron、Gopher——比拼参数的军备竞赛似乎没有尽头。

然后,2022 年,DeepMind 的一个团队发表了一篇改变了一切的论文。他们的论点是:那个时代的大模型严重训练不足。不是太小——而是数据上吃得不够饱。

证明这一论点的模型叫 Chinchilla。

Kaplan 定律:第一种表述

2020 年,OpenAI 发表了 Jared Kaplan 等人的一篇论文——《Scaling Laws for Neural Language Models》——提出了一个引人注目的发现。在数十个不同规模的模型上,验证损失遵循一个简单的幂律

L ≈ L∞ + (C₀ / C)^α

公式解读:

  • C —— 训练投入的总算力(以 FLOPs 计)。
  • L —— 最终的验证损失。
  • L∞ —— 不可约损失:即使算力无限,也无法低于这个下限。它是人类语言的天然熵——下一个词总有一部分是不可预测的。
  • C₀ —— 一个依赖于架构的归一化常数。
  • α ≈ 0.05 —— 幂律指数。

说人话:把算力翻倍,损失会以一个可预测的量减少。这条规律在 7 个数量级上都惊人地稳健。

Kaplan 由此得出一个会指导整个行业两年的结论:给定一个算力预算,把大部分分给模型大小,给数据分一点点就好

OpenAI 在 GPT-3 上正是这么做的:1750 亿参数,但"只有"3000 亿训练 Token

Chinchilla 把桌子掀了

2022 年,Hoffmann 等人(DeepMind)用不同的方法重做了实验。他们不是固定模型大小再变化算力,而是在恒定算力下系统性地探索 (N, D) 平面。

他们的结论与 Kaplan 直接矛盾:N 和 D 应该以同样的速度一起增长。在固定算力预算下要让损失最小,就该用一个规模适中的模型,在大量数据上训练。

更精确地说,最优比例是:

D ≈ 20 × N

对于一个 700 亿参数的模型,最优的数据量大约是 1.4 万亿 Token。GPT-3(1750 亿参数,3000 亿 Token)的比例是 1.7——比最优值低了 20 倍。

DeepMind 通过训练 Chinchilla 证明了这一点:700 亿参数,1.4 万亿 Token。比 GPT-3 小,Token 比它多,而且在所有基准上都更好

算力地图

在双对数图上,loss 随 compute 呈幂律下降。N(参数量)和 D(tokens 数)滑块显示出 iso-compute 曲线:在固定预算下存在一个最优 N/D 比——按 Chinchilla 大约是每个参数 20 个 token

拖动这个点来探索 (N, D) 平面。Chinchilla 对角线是每一美元算力都被最优地花掉的那条线。在它上方,你训练了一个太小的模型却训得太久;在它下方,反过来。

你会注意到一件有意思的事:LLaMA-3 远远在对角线之上。700 亿参数训练在 15 万亿 Token 上,比例是 214——比 Chinchilla 最优值高出 10 倍。

为什么?因为 Meta 优化的不是训练算力效率。他们优化的是推理成本。一个更小的模型训练得更久,训练时贵一点(一点点而已),但在生产环境里服务起来便宜得多。在数十亿次请求的尺度上,省下来的钱是巨量的。

超越参数:数据质量

缩放定律并不是故事的终点。几个限制开始浮现。

**可获得的数据是有限的。**Common Crawl、维基百科、GitHub、ArXiv、扫描的书籍——互联网上高质量文本数据的库存并不是无穷的。多个团队估计我们正在接近这堵墙:把一个 1 万亿参数的模型训练到 Chinchilla 最优需要 20 万亿 Token,这远超过干净的公开语料。

**质量胜过数量,但只到某个点为止。**对语料做过滤、只保留高质量数据(教科书、技术书、干净的代码),比起加入平庸的数据,对模型的提升要大。但过于激进的过滤最终会让分布变得贫瘠,损害泛化。

涌现能力打乱了曲线。对于某些任务(多步推理、复杂数学、罕见指令),表现一直保持平稳直到某个规模阈值——然后突然抬升。这些"涌现能力(emergent abilities)"是有争议的:一些研究者(Schaeffer 等人,2023)展示了,当你换用一个更连续的指标时,它们就消失了。但实际现象依然存在:小模型就是做不到某些事,无论怎么微调都不行。

实用的教训

如果你今天要训练一个模型,下面是缩放定律对你说的话:

  • 算力固定? 把 D/N 比例瞄准 20 附近。这是训练最优。
  • 要把模型大规模上线服务? 把比例往上推。一个更小的模型训练得更久,在推理时更便宜——这正是 Meta、Mistral 以及越来越多团队在做的事。
  • 目标是某种涌现能力? 小修小补不够。你得跨过一个规模阈值。
  • 数据不够? 质量、过滤和多样性比语料的原始大小更重要。

缩放定律说的不是要无限地变大。它说的是参数和数据之间存在一个正确的比例——而我们已经在错误的那一边浪费了好几年。

更新于

Scaling Laws:Kaplan、Chinchilla 与最优比例 · Step by Token