第 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 亿参数的庞然大物。
为什么小模型在某些任务上怎么都过不去。 涌现能力只在超过某个规模阈值之后才出现。如果一个模型在一整类问题上都失败,任何提示词和任何微调都救不回来:该换的是模型,不是方法。
为什么新一代能在不变大的情况下继续进步。 这几年,增量已经不再来自参数,而是来自数据:过滤、多样性、质量。一个和一年前同等大小的模型,可能明显更强,而参数一个没多——变的是它读了什么。
缩放定律说的不是要无限地变大。它说的是参数和数据之间存在一个正确的比例——而我们已经在错误的那一边浪费了好几年。
不过这些定律描述的是一条曲线,不是一套机制。它们能预言一个吃得更好的模型会犯更少的错,却对它究竟学到了什么只字不提。那几十亿个参数里到底装着什么——里面有没有什么是可读的,还是只是一锅碰巧能用的数字糊糊?下一章尝试把这个盒子打开。
更新于