摘要(Abstract)
我们研究了在给定计算预算下训练 Transformer 语言模型的最优模型大小和训练 token 数量。我们发现,当前的大语言模型严重欠训练(undertrained)——这是因为近期人们倾向于在保持训练数据量不变的情况下扩展模型规模。通过在 5 亿到 500 亿 token 上训练了超过 400 个参数量从 7000 万到超过 160 亿的模型,我们发现:对于计算最优训练,模型大小和训练 token 数量应该等比扩展——每翻一倍模型参数,训练 token 数量也应翻一倍。
我们通过训练 Chinchilla 来验证这一假设。Chinchilla 与 Gopher 使用相同的计算预算,但参数量为 700 亿(是 Gopher 的 1/4),训练数据是 Gopher 的 4 倍。Chinchilla 在大量下游评估任务上均匀且显著地优于 Gopher(2800 亿参数)、GPT-3(1750 亿参数)、Jurassic-1(1780 亿参数)和 Megatron-Turing NLG(5300 亿参数)。在 MMLU 基准上,Chinchilla 达到 67.5% 的准确率,比 Gopher 高出超过 7%。
近年来,一系列大语言模型(LLM)被推出,最大的 dense 语言模型现已拥有超过 5000 亿参数。这些大模型的自回归 transformer 在许多任务上表现出令人印象深刻的能力。训练大语言模型的计算和能源成本相当可观,且随模型规模增加而上升。在实践中,分配的训练计算预算通常是提前已知的。由于通常只来得及训练这些大模型一次,准确估算给定计算预算下的最佳模型超参数至关重要。
Kaplan et al. (2020)(即 Kaplan 论文)表明,自回归语言模型参数数量与其性能之间存在幂律关系。因此,业界开始训练越来越大、越来越强的模型。然而 Kaplan et al. (2020) 的一个著名结论是:大模型应该用相对较少的 token 来训练。我们的工作表明,这个结论是错误的。
⚠️ Kaplan 定律的错误:Kaplan 建议 Nopt ∝ C0.73,Dopt ∝ C0.27——即模型参数增长应快于训练数据增长。但这建立在不完整的实验基础上。DeepMind 通过超过 400 个模型的系统实验,证明正确结论是:Nopt ∝ C0.5,Dopt ∝ C0.5——两者应等比增长。
我们使用以下方程描述语言模型损失:
其中:
✅ 关键发现:A ≈ B 且 α ≈ β
这意味着 N 和 D 对损失的贡献在形式上完全对称!因此在最优情况下 N ≈ D(按适当单位衡量)。
给定计算预算 C,求最优 N* 和 D*:
使用拉格朗日乘数法,构造拉格朗日函数:
对 N 和 D 求偏导并设为零:
两式相除并利用 A ≈ B,得:
| 参数量 | 隐藏维度 | 层数 | FFN 维度 | 注意力头 | 头维度 |
|---|---|---|---|---|---|
| 70M | 512 | 6 | 2048 | 8 | 64 |
| 410M | 1024 | 12 | 4096 | 16 | 64 |
| 1B | 1536 | 16 | 6144 | 16 | 96 |
| 7B | 4096 | 32 | 16384 | 32 | 128 |
| 16B | 6144 | 40 | 24576 | 32 | 192 |
我们使用标准的仅解码器 transformer 架构,具有 RoPE 位置编码和 Gated Linear Units (GLU)。我们训练了超过 400 个模型,总训练计算量约 6.7 × 1023 FLOPs。训练使用余弦学习率调度,配合线性预热和权重衰减。
图 1:Chinchilla 定律核心图。 在固定计算预算下,模型参数量 N(横轴)和训练 token 数 D(纵轴)与测试损失(颜色)的关系。最优区域(冷色)位于 N × D ≈ C 的曲线上,且该曲线斜率 ≈ -1,即 N ∝ D。这证明 Chinchilla 定律的正确性:模型大小和训练 token 应等比扩展。
图 2:实验设计。 DeepMind 的系统实验策略:(1) 固定 N 变化 D;(2) 固定 D 变化 N;(3) 固定 C 变化 N/D 比值。超过 400 个模型,参数范围 70M~16B,token 范围 5B~500B。
图 3:损失曲面。 3D 曲面证明 L(N,D) 对 N 和 D 的依赖具有完美对称性——从几何上验证了 A ≈ B 且 α ≈ β。最优解位于曲面的"山脊"上,即 N = D 的对角线。
| 配置项 | Chinchilla | Gopher |
|---|---|---|
| 参数量 | 70B | 280B |
| 训练 Token | 1.4T | 300B |
| 总计算量 | ≈ 5.76 × 1024 FLOPs | ≈ 5.76 × 1024 FLOPs |
| N/D 比率 | ≈ 1:20 | ≈ 1:1.07 |
| 每 1B 参数配 Token | 20B | 1.07B |
🎯 核心发现:Chinchilla 仅用 Gopher 1/4 的参数,却训练了 4 倍以上的数据,计算量完全相同,但性能大幅领先!
我们用公式 N* ≈ √(C0/6) 预测 Chinchilla 的最优配置。给定 Gopher 的计算预算 C0:
我们的 Chinchilla 配置(N = 70B,D = 1.4T)与预测非常吻合!
| 模型 | 参数量 | 训练 Token | MMLU 准确率 | vs Chinchilla |
|---|---|---|---|---|
| Chinchilla | 70B | 1.4T | 67.5% | — |
| Gopher | 280B | 300B | 60.0% | -7.5% |
| GPT-3 | 175B | 300B | ~55% | -12.5% |
| Jurassic-1 | 178B | 300B | ~55% | -12.5% |
| MT-NLG | 530B | 270B | ~58% | -9.5% |
Chinchilla 在以下基准上也大幅领先:
💡 重要优势:Chinchilla 使用远少于 Gopher 的计算量进行推理和微调,大大促进了下游应用。
Kaplan 的实验在数据量方面范围不足(最大 ~300B token),导致其对 α 和 β 的估计产生了系统性偏差。
| 计算预算 | 推荐参数量 | 推荐训练 Token | 每 1B 参数配 |
|---|---|---|---|
| 1022 FLOPs | ~10M | ~200M | ~20B |
| 1024 FLOPs | ~1B | ~20B | ~20B |
| 1025 FLOPs | ~10B | ~200B | ~20B |
| 1026 FLOPs | ~100B | ~2T | ~20B |
核心原则:每 1B 参数配备约 20B token 训练数据
Chinchilla 论文将语言模型的损失分解为三个项:
其中:
这个数字不是理论推导出来的,而是通过实验拟合得到的。
拟合方法:Chinchilla 团队训练了超过 400 个模型,参数范围从 70M 到 16B,token 范围从 5B 到 500B。然后使用 Huber 损失函数(Huber, 1964)来最小化预测对数损失与观测对数损失之间的误差,从而拟合出公式 (2) 中的五个参数 (A, B, E, α, β)。
最终拟合结果为:
注意:论文原文中 α 和 β 的值略有差异(α = 0.034,β = 0.028),但在最优分配的推导中,两者被近似为相等(α ≈ β ≈ 0.034),这才得到了 N* ≈ D* 的结论。
E ≈ 1.69 的单位是 nats(自然对数单位),表示自然语言的固有随机性。即使有一个无限强大的模型和无限的数据,也无法将交叉熵损失降到这个值以下。
如果换算成以 2 为底的比特(bits/字符):
这个数值与语言学中已知的英语熵率(约 1.0~1.5 bits/词,与上下文长度有关)大致吻合。需要注意的是,2.44 bits/字符 是按每字符计算的,而语言学中的典型值是按每词计算的,直接比较需要考虑分词方式。
关键证据:
| 指数 | Kaplan (2020) | Chinchilla (2022) | 差异原因 |
|---|---|---|---|
| αN | 0.076 | 0.034 | Kaplan 实验的 token 范围不足(最大 ~300B),导致幂律指数估计偏高 |
| αD | 0.095 | 0.028 | |
| Nopt | ∝ C0.73 | ∝ C0.5 | Kaplan 误认为 αN ≠ αD,导致错误推导 |
| Dopt | ∝ C0.27 | ∝ C0.5 |
我们的分析也适用于微调场景。给定一个预训练好的语言模型,在任务特定数据上进行微调时,性能遵循:
其中 X 是模型参数量,Df 是微调数据量。这意味着微调性能也遵循可预测的缩放定律——只要 Df 足够大以避免严重过拟合。
我们的分析也适用于微调场景。给定一个预训练好的语言模型,在任务特定数据上进行微调时,性能遵循:
其中 X 是模型参数量,Df 是微调数据量。这意味着微调性能也遵循可预测的缩放定律——只要 Df 足够大以避免严重过拟合。
[1] Kaplan et al. (2020). Scaling Laws for Neural Language Models. arXiv: 2001.08361
[2] Hoffmann et al. (2022). Training Compute-Optimal Large Language Models. arXiv: 2203.15556
[3] Brown et al. (2020). Language Models are Few-Shot Learners. NeurIPS
[4] Rae et al. (2021). Scaling Language Models. arXiv
本文为 Hoffmann et al. (2022) 的完整中文翻译版,保持原文全部内容。
原文:Training Compute-Optimal Large Language Models · arXiv: 2203.15556 · Google DeepMind