Kaplan定律 vs Chinchilla定律:大语言模型缩放法则的演进
本文对比分析了大语言模型训练中两条核心资源分配定律:Kaplan定律(2020)和Chinchilla定律(2022)。Kaplan定律认为模型规模比数据更重要,主张计算预算增加时应主要扩大模型参数(N∝C^0.73)。而Chinchilla定律通过更系统的实验发现,模型参数与训练数据应同步增长(N,D∝C^0.5),这一结论促使业界转向更平衡的训练策略,如LLaMA等模型虽参数较小但因数据充足表
这两条定律都是关于如何最优地分配计算资源来训练大语言模型的核心理论。
1. Kaplan定律(2020年,OpenAI)
背景
2020年,OpenAI发表论文 “Scaling Laws for Neural Language Models”,通过对不同规模的GPT模型进行系统研究,总结出模型性能与计算资源之间的幂律关系。
核心发现
Kaplan定律提出了三个关键的缩放关系:
① 模型性能与模型大小的关系
测试损失 ∝ N^(-0.076)
- N = 模型参数量(不含嵌入层)
- 模型越大,性能越好,但收益递减
② 模型性能与数据量的关系
测试损失 ∝ D^(-0.095)
- D = 训练数据集的规模(token数)
- 数据越多,性能越好,同样收益递减
③ 模型性能与计算量的关系
测试损失 ∝ C^(-0.050)
- C = 训练计算量(FLOPs)
- 计算资源增加,性能提升
关键结论(重要!)
当计算预算增加时,应该主要增加模型规模,而不是数据规模:
“We find that performance depends significantly on scale, weakly on model shape, and that larger models are more sample-efficient.”
也就是说,如果计算预算增加10倍:
- 模型规模应增加约5.5倍
- 数据规模只需增加约1.8倍
影响
这一结论直接影响了GPT-3等早期大模型的训练策略:
- GPT-3(175B参数)训练数据量(约300B tokens)并没有按比例放大
- 业界普遍认为:模型越大,数据效率越高
2. Chinchilla定律(2022年,DeepMind)
背景
2022年,DeepMind发表论文 “Training Compute-Optimal Large Language Models”,对Kaplan定律提出了重要修正。他们训练了超过400个模型(从70M到16B参数),重新审视了缩放规律。
核心发现
修正的缩放关系
Chinchilla发现,之前低估了数据的重要性:
L(N, D) = E + A/N^α + B/D^β
其中:
- L = 最终损失
- N = 模型参数量
- D = 训练token数
- α ≈ 0.34, β ≈ 0.28(幂律指数)
关键结论(重大修正!)
模型规模和数据规模应该同步增长:
“For compute-optimal training, the model size and the number of training tokens should be scaled in equal proportions.”
如果计算预算增加10倍:
- 模型规模应增加约3.3倍
- 数据规模应增加约3.3倍
- 两者保持相同比例!
计算公式
给定计算预算 C(FLOPs),最优分配为:
N_opt ∝ C^0.5
D_opt ∝ C^0.5
这意味着:
- 参数量(N)和训练数据量(D)应该按相同比例增长
- FLOPS = 6 × N × D(训练一个transformer的前向+反向计算量)
3. 两条定律的对比
| 维度 | Kaplan定律 (2020) | Chinchilla定律 (2022) |
|---|---|---|
| 核心主张 | 模型规模更重要 | 模型和数据同等重要 |
| 计算分配 | N ∝ C^0.73, D ∝ C^0.27 | N ∝ C^0.5, D ∝ C^0.5 |
| 数据效率 | 大模型更"数据高效" | 数据效率被高估 |
| 最优比例 | 20倍参数:1倍数据 | 1倍参数:1倍数据 |
| 代表模型 | GPT-3 (175B, 300B tokens) | Chinchilla (70B, 1.4T tokens) |
4. 实际案例对比
GPT-3(遵循Kaplan思路)
- 参数量:1750亿
- 训练tokens:3000亿
- 比例:1:1.7(每参数约1.7个token)
Chinchilla(遵循新定律)
- 参数量:700亿
- 训练tokens:1.4万亿
- 比例:1:20(每参数约20个token)
性能对比
尽管Chinchilla参数量只有GPT-3的40%,但在多项任务上表现更好或相当:
- 更小的模型,更多的训练数据
- 推理更快,部署成本更低
5. 为什么Chinchilla更准确?
Kaplan的局限
- 实验范围有限:主要基于小模型(<1B)外推到大模型
- 固定数据规模:没有充分探索不同数据规模的影响
- 计算预算估计:低估了数据规模的重要性
Chinchilla的改进
- 更广的实验范围:覆盖70M到16B的参数范围
- 系统性的数据规模扫描:对不同模型配不同数据量
- 更准确的计算模型:精确计算FLOPs需求
6. 对行业的影响
训练策略转变
2020-2021(Kaplan时代): 2022至今(Chinchilla时代):
- 追求超大模型 - 追求优质数据
- 参数越多越好 - 参数和数据平衡
- GPT-3, PaLM - LLaMA, Mistral
代表性模型
- LLaMA系列:130亿参数,1.4万亿tokens(接近Chinchilla最优)
- Mistral 7B:70亿参数,训练数据充足
- GPT-4:具体参数未公开,但推测采用了更平衡的策略
经济意义
- 同样的计算预算,性能更好
- 同样的性能,成本更低(小模型推理更快)
- 数据质量变得比纯粹的数量更重要
7. 当前共识
现在业界普遍接受:
- Chinchilla定律更准确地描述了计算最优训练
- 模型和数据应该同步扩展
- 但实际中会有偏差,因为:
- 数据质量差异
- 重复数据的影响
- 不同架构的效率差异
- 推理成本的考虑(小模型更便宜)
总结
| 定律 | 核心洞见 | 对行业的影响 |
|---|---|---|
| Kaplan定律 | 模型规模比数据更重要 | 催生了GPT-3等超大模型 |
| Chinchilla定律 | 模型和数据同等重要 | 转向更平衡的训练策略,LLaMA等模型受益 |
最终结论:在固定计算预算下,不要只追求模型大小,要给模型喂足够的优质数据。这也是为什么今天的开源模型(如LLaMA)虽然参数量不大,但性能却很出色。
绘制这种“Scaling Laws 对比图”的逻辑其实非常清晰,它的核心目的是把“理论上的最优解”和“现实中各家模型的真实做法”放在同一个坐标系下进行对比。
以下是具体的绘制思路、所需数据以及数据来源的拆解:
一、 绘制的整体思路 (思路是什么?)
绘制这张图可以分为两条线:“画基准线”和“打散点”。
- 设定坐标系:
- 这是一个双对数坐标系 (Log-Log Scale)。因为算力、参数和数据量的跨度极大(从百亿到万亿甚至更高),只有用对数坐标才能把它们均匀地塞进一张图里。
- 横轴固定为总算力 (FLOPs),代表预算。
- 纵轴分别是参数量 (Parameters) 和 数据量 (Tokens)。
- 画理论基准线 (The Lines):
- 图中的实线和虚线(Kaplan, Chinchilla 1/2/3)是根据论文中推导出的**数学公式(幂律函数)**画出来的。
- 比如给定一个算力 CCC,代入 Chinchilla 的公式,就能算出一个理论上最优的参数量 NoptN_{opt}Nopt 和数据量 DoptD_{opt}Dopt,把这些点连起来就成了图中的线。
- 打真实模型散点 (The Dots):
- 收集市面上各个真实大模型的“参数量”、“训练数据量”和“总算力”这三个指标,作为一个个坐标点 (X,Y)(X, Y)(X,Y) 画在图上。
- 通过对比散点和基准线的位置,就能直观看出某个模型是“偏向大参数(线上方)”还是“偏向大数据(线下方)”。
二、 需要哪些数据?
要完美复现这张图,你需要两组完全不同的数据:
1. 理论曲线的数学参数(画线用)
你需要查阅 Kaplan (2020) 和 Hoffmann/Chinchilla (2022) 这两篇论文,提取出他们拟合出的幂律函数常数。
- Kaplan 公式大致为: Nopt∝C0.73N_{opt} \propto C^{0.73}Nopt∝C0.73, Dopt∝C0.27D_{opt} \propto C^{0.27}Dopt∝C0.27(算力增加时,把绝大部分预算给参数)。
- Chinchilla 公式大致为: Nopt∝C0.50N_{opt} \propto C^{0.50}Nopt∝C0.50, Dopt∝C0.50D_{opt} \propto C^{0.50}Dopt∝C0.50(算力增加时,参数和数据按 1:1 比例增加)。
2. 具体模型的三大核心指标(打点用)
针对图上的每一个模型(如 LLaMA, PaLM, GPT-3 等),你都需要以下三个具体数值:
- NNN (Parameters): 模型的参数规模(例如 65B, 175B)。
- DDD (Tokens): 训练该模型所使用的总 Token 数量(例如 1.4T, 300B)。
- CCC (FLOPs): 训练消耗的总计算量。
补充:在大部分情况下,CCC (FLOPs) 并不需要官方直接公布,因为深度学习界有一个通用的经验估算公式:
C≈6×N×DC \approx 6 \times N \times DC≈6×N×D
(即:训练一个 Transformer 模型,每个 token 大约需要 6 倍参数量的浮点运算。拿参数量乘以训练数据量再乘 6,就能估算出横坐标 FLOPs)
三、 其他模型的数据怎么来的?
这些业界知名模型的数据主要有以下几个获取渠道:
- 模型发布的官方论文 / 技术报告 (Technical Reports) —— 最权威的来源
- 只要是一个正经发布的开源或闭源大模型,作者都会发布一篇论文。
- 例如:你想找 LLaMA 的数据,就去读 Meta 发布的 LLaMA: Open and Efficient Foundation Language Models 论文,里面会有一张表清晰地写着:LLaMA-65B,用了 1.4T tokens 训练。
- 你想找 PaLM 的数据,就去看 Google 的 PaLM 论文。图里的点就是研究人员从这些几十篇不同的论文里挨个“抄”下来的。
- 权威的第三方开源数据库 —— 最省事的来源
- 学术界有很多专门追踪 AI 发展趋势的机构,他们已经帮你把所有论文里的数据整理成 Excel 或 CSV 表格了。
- Epoch AI (Compute Trends): 这是目前业内最著名的数据源。你可以去他们官网,他们维护了一个巨大的数据库,包含了过去几十年来所有著名 AI 模型的发布时间、参数量、训练数据量、算力消耗估算等。这张图的作者极有可能就是直接下载了 Epoch AI 的公开数据集。
- Hugging Face 模型卡片 (Model Cards): 各大模型上传到 HF 社区时,通常也会在介绍页写明参数量和训练数据。
- 逆向估算 (少部分闭源模型)
- 像 GPT-4 这种完全不公布技术细节的闭源模型(虽然这张图里没有 GPT-4),业界通常是通过内部泄露的信息,结合其硬件使用规模(用了多少张 A100 训练了多少天),来反向推算它的 FLOPs 和参数量。
总结一下:
如果你自己想画这样一张图,第一步是去查 Chinchilla 论文拿到画线的公式,第二步是去 Epoch AI 下载各家大模型的历史数据表,最后用 Python 的 matplotlib 库画一个对数坐标图,把点和线叠加在一起就可以了。
更多推荐


所有评论(0)