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——比最优值低了十来倍。

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

算力地图

两个滑块,地图上一个点。先把它放到"大模型、少数据"那一侧(N 高、D 低),再反过来试一次。每挪动一次,都盯住 D / N 比例估计损失这两个数字:Kaplan 与 Chinchilla 之间的全部争论,就藏在这个数字随你拖动而变化的方式里。

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

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

你会注意到一件有意思的事:LLaMA-3 远远在对角线之上。2024 年,它用 15 万亿 Token 训练了 700 亿参数,比例是 214——比 Chinchilla 最优值高出 10 倍。这在当年很惊人;此后,过度训练的趋势只增不减,小模型的比例超过这个数已是家常便饭。

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

超越参数:数据质量

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

**真正高质量的数据是有限的。**Common Crawl、维基百科、GitHub、ArXiv、扫描的书籍——互联网上真正干净的文本库存并不是无穷的。人们曾长期预言"数据墙"迫在眉睫:把一个 1 万亿参数的模型训练到 Chinchilla 最优需要 20 万亿 Token。但这堵墙一直在后退。质量过滤(FineWeb 及其后继者)、多语言、受控的多轮重复,以及合成数据,已经让 15 万亿甚至 30 万亿 Token 的训练变得寻常。今天缺的不再是文本——缺的是文本。

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

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

实用的教训

你大概永远不会亲手训练一个模型。但这些定律解释了你挑选模型时所处的那片地形长什么样。

为什么你在用的模型又小又"过度训练"。 在算力预算固定时,训练最优的 D/N 比例接近 20。而今天几乎没人守这条线——这是有意为之。一个更小的模型喂得更久,训练时贵一点,服务时却便宜得多。在数十亿次请求的尺度上,是后面这笔账说了算。于是满地都是 8B 和 70B,训练量远远越过 Chinchilla,而不是 5000 亿参数的庞然大物。

为什么小模型在某些任务上怎么都过不去。 涌现能力只在超过某个规模阈值之后才出现。如果一个模型在一整类问题上都失败,任何提示词和任何微调都救不回来:该换的是模型,不是方法。

为什么新一代能在不变大的情况下继续进步。 这几年,增量已经不再来自参数,而是来自数据:过滤、多样性、质量。一个和一年前同等大小的模型,可能明显更强,而参数一个没多——变的是它读了什么。

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

不过这些定律描述的是一条曲线,不是一套机制。它们能预言一个吃得更好的模型会犯更少的错,却对它究竟学到了什么只字不提。那几十亿个参数里到底装着什么——里面有没有什么是可读的,还是只是一锅碰巧能用的数字糊糊?下一章尝试把这个盒子打开。

更新于