什么是 Scaling Law?Chinchilla 给出了什么结论?
简化版
Scaling Law(缩放定律) 是一条经验规律:大模型的测试损失会随着参数量 N、数据量 D、算力 C 的增大而按幂律平滑下降——也就是「加规模就变强,且可预测」。Chinchilla(DeepMind 2022) 修正了早期结论,指出在固定算力预算下,参数量和数据量应当同比例增长,此前的大模型(如 GPT-3、Gopher)都训练数据不足、参数过多。它的经验法则是:每个参数大约配 20 个训练 token 才算「算力最优(compute-optimal)」。据此训练的 70B Chinchilla 用 1.4T token,反超了 280B 的 Gopher。
详细版
Scaling Law 说了什么
Kaplan 等人 2020 发现,语言模型的损失 L 与 N、D、C 之间存在幂律关系(在很大范围内平滑、可外推):
L(N) ≈ (N_c / N)^α_N # 损失随参数量幂律下降
L(D) ≈ (D_c / D)^α_D # 损失随数据量幂律下降
意义重大:可以用小模型的实验结果外推出大模型的表现,从而在真正烧钱训练前就预测效果、规划资源。
Chinchilla 的修正
Kaplan 的工作倾向于「优先加参数」,导致业界一窝蜂造大模型但喂的数据不够。Chinchilla 重新做实验,结论是:
- 给定算力 C(约等于
C ≈ 6ND),最优配置是让 N 和 D 同比例放大。 - 经验比例约为 D ≈ 20 × N(每参数约 20 token)。
- 实证:Chinchilla(70B, 1.4T token)全面优于 Gopher(280B, 300B token),用更小的模型 + 更多数据,在同等算力下效果更好、推理还更便宜。
对比
| 模型 | 参数量 | 训练 token | token/参数 | 是否算力最优 |
|---|---|---|---|---|
| GPT-3 | 175B | 300B | ~1.7 | 数据严重不足 |
| Gopher | 280B | 300B | ~1.1 | 数据严重不足 |
| Chinchilla | 70B | 1.4T | ~20 | 接近最优 |
| Llama 系 | 7B~70B | 1T~15T | 远超 20 | 为推理便宜”过度训练” |
完整版教学
一、Scaling Law 为什么是大模型时代的”底层信仰”
在 Scaling Law 出现之前,做深度学习靠调结构、试超参、拼技巧。Scaling Law 揭示了一件颠覆性的事:模型效果主要由规模(参数、数据、算力)决定,且这种关系是平滑、可预测的幂律。
这带来两个深远影响:
- 可预测性:可以先用一系列小模型跑实验,拟合出幂律曲线,外推预测「花 X 算力能达到什么损失」,把训练大模型从”赌博”变成”工程规划”。GPT-4 就公开说用了这种方法预测最终性能。
- 确定性路线:既然「加规模就变强」,那战略就清晰了——堆参数、堆数据、堆算力。这条信仰直接驱动了近年大模型的军备竞赛。
简要说把握:Scaling Law 让「变强」这件事从玄学变成了可外推的曲线——这是它最大的价值。
二、三个变量:N、D、C 的关系
- N(参数量):模型容量,决定能记多少、拟合多复杂的函数。
- D(数据量):训练 token 数,决定见过多少、学到多少。
- C(算力):训练总计算量,近似
C ≈ 6ND(6 倍于「参数 × token」的 FLOPs)。
三者互相制约:算力有限时,你只能在「更大模型 + 更少数据」和「更小模型 + 更多数据」之间权衡。Scaling Law 要回答的核心问题就是:给定算力预算 C,N 和 D 各分多少最划算? 这正是 Chinchilla 的贡献。
三、Kaplan vs Chinchilla:一次重要的观点修正
Kaplan(2020) 的实验暗示:算力增加时,应该把大部分投到参数量上,数据量增长可以慢一些。于是 GPT-3(175B)、Gopher(280B)等都造得很大,但只喂了约 300B token。
Chinchilla(2022) 重新、更严谨地扫描了 N 和 D 的组合,发现 Kaplan 的实验设置(如学习率调度)有偏差,真实的最优是:N 和 D 应当同比例增长——参数翻倍,数据也该翻倍。按此,GPT-3、Gopher 都是「参数过剩、数据饥饿」,它们的算力其实被浪费了:同样的算力,换成小一点但训得更充分的模型会更强。
Chinchilla(70B)用 1.4T token 训练,在几乎所有基准上超过了 4 倍大的 Gopher,有力地证明了这一点。这次修正让全行业意识到:盲目堆参数不如把数据喂够。
四、“每参数 20 token”怎么用
Chinchilla 的经验法则 D ≈ 20 × N 是「算力最优」的近似:如果你有固定算力,想让训练损失最低,就按这个比例分配。例如:
- 想训一个 10B 模型的算力最优版,应喂约 200B token;
- 有 1.4T token,算力最优的模型约 70B。
但要注意:「算力最优」是”训练”最优,不是”部署”最优。 Chinchilla 只考虑了训练成本,没算推理成本。而模型一旦部署,要服务海量请求,推理成本才是长期大头。
五、为什么 Llama 们”过度训练”小模型
Llama 系列(尤其 Llama 2/3)明显偏离 Chinchilla 最优:用 7B/8B 的小模型,却喂 1T~15T token,token/参数远超 20。这是”次优”吗?不,这是清醒的取舍:
- Chinchilla 最优追求的是「给定训练算力,损失最低」。
- 但工业界要的是「给定目标能力,部署最便宜」。
- 同样能力下,小模型推理更快、更省显存、更好部署。为此在训练时多喂数据(多花训练算力)把小模型「训到底」,是完全值得的——训练是一次性成本,推理是持续成本。
所以现代趋势是:为了推理效率,故意”过度训练”小模型,让它在小体积里榨出尽可能强的能力。理解「训练最优 ≠ 部署最优」这个分野,是这道题的高阶得分点。
六、用 Token 预算检查是否欠训练
按常见的 Chinchilla 量级经验,每个参数约配 20 个训练 token。7B 模型对应约 140B token,70B 对应约 1.4T token;若只有 200B token 却训练 70B 模型,计算预算很可能过多花在参数、数据不足,较小模型训练更充分可能更优。
| 参数量 | 20 token/参数的量级 | 固定数据下的风险 |
|---|---|---|
| 7B | 140B token | 相对容易训足 |
| 13B | 260B token | 需更多高质数据 |
| 70B | 1.4T token | 数据不足时欠训练 |
rough token budget = parameter_count * 20
7B -> 140B tokens
70B -> 1.4T tokens
这只是特定实验条件下的经验比例,不是永久常数。推理成本、数据质量、重复训练、多模态比例与目标部署寿命都会改变最优点;工程决策应拟合自己的小规模实验曲线,再外推而不是机械套 20。
七、常见误区与追问
- 误区:Scaling Law 说模型越大越好。 更准确是「在数据/算力配比合理时,规模越大越好」;参数大但数据不足反而浪费算力(Chinchilla 的教训)。
- 误区:Chinchilla 说小模型更好。 它说的是给定算力下,N 与 D 要同比例增长,别把算力全砸参数上。
- 追问:C≈6ND 怎么来的? 前向约 2ND、反向约 4ND,合计每 token 每参数约 6 FLOPs。
- 追问:为什么 GPT-3 被认为训练不足? 175B 参数只配 300B token(~1.7 token/参数),远低于最优的 ~20。
- 追问:既然 20 token/参数最优,为什么 Llama 用几百 token/参数? 那是为推理便宜故意过度训练小模型;训练最优≠部署最优。
- 追问:Scaling Law 会一直成立吗? 幂律在很大范围内稳健,但存在数据枯竭、边际收益递减等隐忧,是否有极限仍是开放问题。
八、加强记忆
Scaling Law 记「加规模、幂律降、可外推」:损失随参数 N、数据 D、算力 C 幂律下降,且能用小模型外推大模型,把训练从赌博变成规划。 Chinchilla 记两句:「N 和 D 要同比例增长」「每参数约配 20 token 才算力最优」,据此 70B/1.4T 的 Chinchilla 反超 280B/300B 的 Gopher,证明 GPT-3/Gopher 都”参数过剩、数据饥饿”。最后钉死高阶认知——「训练算力最优(20 token/参数)≠ 部署最优」,所以 Llama 故意过度训练小模型以换取推理便宜。记住 C≈6ND 这个换算,整套账就能自己算。