在上一篇文章中,我们介绍了 Scaling Law,也就是大语言模型中的规模化规律。

Scaling Law 关注的问题是:

模型能力如何随着参数量、训练数据量和计算量的增加而变化?

在 GPT-3 之后,很多人形成了一个直觉:

模型越大,能力越强。

这个判断有一定道理。GPT-3 从 GPT-2 的 1.5B 参数扩大到 175B 参数后,zero-shot、one-shot 和 few-shot 能力都有明显增强。模型规模扩大确实会带来能力提升。但是,到了 Chinchilla 论文,这个理解被进一步修正了。

Chinchilla 对应的论文是:

Training Compute-Optimal Large Language Models

这篇论文由 DeepMind 在 2022 年提出。它的核心观点可以概括为一句话:

在固定训练计算预算下,大语言模型不能只堆参数,还必须同时增加训练 token 数。

换句话说:

模型参数量很大,但训练数据不够,模型仍然可能没有被充分训练。

这类模型可以称为:

undertrained models

也就是训练不足的模型。Chinchilla 的重要意义在于,它把大家对大模型训练的关注点从:

模型参数越大越好

推进到:

模型参数量、训练 token 数和计算预算必须平衡

这一章我们就来详细精读 Chinchilla,重点讲清楚:

1. Chinchilla 想解决什么问题?
2. 什么是 compute-optimal training?
3. 为什么很多大模型是 undertrained?
4. Chinchilla 如何重新分配参数量和训练 token 数?
5. 为什么 70B 的 Chinchilla 能超过 280B 的 Gopher?
6. Chinchilla 对后续 LLaMA、Qwen、DeepSeek 等模型有什么影响?

一、Chinchilla 想解决什么问题?

Chinchilla 论文关注的问题非常现实:

给定一笔固定训练计算预算,我们应该训练多大的模型?又应该用多少 token 来训练它?

这里有三个核心变量:

N:模型参数量
D:训练 token 数
C:训练计算量

其中:

  • (N) 表示模型有多少参数;

  • (D) 表示模型训练时看了多少 token;

  • (C) 表示训练消耗了多少计算量。

在 Transformer 语言模型中,一个常用的粗略估计是:

C \approx 6ND

这个公式的意思是:

训练计算量大致与模型参数量和训练 token 数都成正比。

也就是说,如果模型参数量翻倍,在训练 token 数不变的情况下,训练计算量大约也会翻倍。如果训练 token 数翻倍,在模型参数量不变的情况下,训练计算量也会大约翻倍。所以,当计算预算固定时,参数量和训练 token 数之间必须做取舍。例如,有同样一笔训练预算,可以选择:

方案 A:训练一个很大的模型,但训练 token 数较少
方案 B:训练一个较小的模型,但训练 token 数更多
方案 C:训练一个中等大小模型,同时使用中等规模 token 数

哪一种更好?这就是 Chinchilla 要回答的问题。


二、为什么“大模型只堆参数”可能不是最优?

在 GPT-3 之后,很多人关注模型参数量。

例如:

GPT-3:175B
Gopher:280B
Megatron-Turing NLG:530B

参数量越来越大,模型看起来也越来越强。但是 Chinchilla 论文指出,当时许多大模型虽然参数很多,但训练 token 数相对不足。也就是说,它们可能没有被充分训练。这可以用一个简单类比理解。模型参数量像学生的大脑容量,训练 token 数像学生读过的书。如果一个学生脑容量很大,但是只读了很少的书,他的潜力很大,但知识和能力不一定充分发挥出来。反过来,如果学生脑容量较小,但是读了很多书,也可能因为容量有限,无法充分吸收复杂知识。所以,最优情况不是只追求:

更大的模型

而是要追求:

合适的模型规模 + 足够的训练 token 数

这就是 Chinchilla 的核心思想。它不是否定模型规模的重要性,而是强调:

模型规模和数据规模必须匹配。


三、什么是 Compute-Optimal Training?

Chinchilla 论文中的关键词是:

compute-optimal

可以翻译为:

计算最优

所谓 compute-optimal training,就是在固定计算预算 (C) 下,选择最合适的参数量 (N) 和训练 token 数 (D),让模型最终 loss 最低、效果最好。也就是说,它不是问:

如果无限增加计算量,模型能做到多强?

而是问:

如果计算预算固定,应该怎么分配给模型参数和训练数据?

这个问题非常重要。因为现实中没有无限计算资源。训练大语言模型时,团队通常会面对固定资源约束:

多少张 GPU
训练多久
总 FLOPs 预算是多少
数据规模有多少
推理成本能接受多少

在这种情况下,如果把太多预算用于扩大模型参数,模型就可能看不够多的数据。如果把太多预算用于增加训练 token 数,模型参数又可能太小,容量不足。Compute-optimal training 要找的是一个平衡点:

在给定计算预算下,模型不太大,也不太小;
训练数据不太少,也不浪费;
最终效果最好。

四、Chinchilla 如何研究这个问题?

Chinchilla 论文不是直接训练一个大模型然后给结论。它首先做了大量小规模实验,研究模型大小、训练 token 数和 loss 之间的关系。论文训练了超过 400 个语言模型,参数规模从 70M 到 16B,训练 token 数从 5B 到 500B 不等。这些实验的目标是拟合一个规律:

在不同计算预算下,什么样的 N 和 D 配比最优?

也就是说,作者不是只比较一个模型,而是系统研究:

模型参数量增加时,loss 怎么变化?
训练 token 数增加时,loss 怎么变化?
固定计算量时,N 和 D 如何分配最好?

最终,论文得出一个重要结论:

对于 compute-optimal training,模型参数量和训练 token 数应该大致等比例增加。

通俗地说:

模型参数量翻倍,训练 token 数也应该大致翻倍。

这和当时很多大模型的做法不同。当时很多模型更偏向于:

参数量变得很大
但训练 token 数没有同步增加

Chinchilla 认为,这会导致模型训练不足。


五、Chinchilla 的核心结论:参数量和 token 数要一起增长

Chinchilla 最重要的结论可以写成:

在计算最优条件下,模型大小和训练 token 数应该同时增长。

也就是说,如果我们把模型从 10B 扩大到 20B,那么训练 token 数也应该相应增加。这和一种错误直觉不同。

错误直觉是:

我有更多计算资源,就应该优先把模型做得更大。

Chinchilla 的结论是:

更多计算资源不应该只用来增加参数,也应该用来增加训练 token。

为什么?因为大模型如果数据不够,就没有被充分训练。从 loss 的角度看,模型最终误差主要受到几方面影响:

模型容量不足带来的误差
数据不足带来的误差
不可避免的数据噪声或建模误差

如果模型很大,但数据不足,那么限制模型表现的主要因素可能不是参数量,而是数据量。这时继续扩大模型参数,收益会变小。更好的做法可能是:

减少模型参数
增加训练 token 数
让模型训练得更充分

Chinchilla 正是这样做的。


六、Gopher 和 Chinchilla 的对比

Chinchilla 最经典的对比对象是 DeepMind 自己之前提出的 Gopher。Gopher 是一个 280B 参数模型。Chinchilla 只有 70B 参数。

从参数量看:

Gopher:280B
Chinchilla:70B

Chinchilla 只有 Gopher 的四分之一。如果只看参数量,很多人会以为 Gopher 更强。但 Chinchilla 使用了更多训练数据。可以简单理解为:

Gopher:更大模型,训练 token 相对较少
Chinchilla:更小模型,训练 token 更多

Chinchilla 使用和 Gopher 大致相同的训练计算预算,但重新分配了参数量和训练 token 数:

参数量减少
训练 token 数增加
计算预算基本保持相近

结果是,Chinchilla 在许多下游任务上显著超过 Gopher。这说明:

在相同训练计算预算下,更合理的参数量和数据量配比,比单纯扩大参数量更重要。

这也是 Chinchilla 论文最有影响力的地方。它让大家意识到:

不是模型越大就一定越好,
而是要看模型有没有被充分训练。

七、为什么 70B 的 Chinchilla 能超过 280B 的 Gopher?

这个现象看起来反直觉,但其实很好理解。Gopher 的参数量很大,但训练 token 数相对不足。这意味着:

它有很大容量,
但没有看够足够多的数据。

Chinchilla 参数更小,但训练 token 更多。这意味着:

它容量较小,
但训练更充分,
参数利用率更高。

可以用一个表格理解:

对比维度 Gopher Chinchilla
参数量 更大,280B 更小,70B
训练 token 数 相对较少 更多,约 1.4T
计算预算 与 Chinchilla 接近 与 Gopher 接近
训练状态 可能 undertrained 更接近 compute-optimal
下游表现 更强

这里的关键不是说:

70B 一定比 280B 强

而是说:

在相同训练计算预算下,
一个训练更充分的 70B 模型,
可能超过一个训练不足的 280B 模型。

这对后续大模型训练影响非常大。因为它说明:

参数量不是唯一指标,训练 token 数和计算分配同样重要。


八、Chinchilla 对 Scaling Law 的修正

在早期 Scaling Law 研究中,一个重要结论是:

模型越大、数据越多、计算越多,loss 会以可预测方式下降。

这给 GPT-3 这类大模型提供了理论支持。但是早期实践中,很多人更关注模型参数量扩展。Chinchilla 则进一步强调:

对于固定计算预算,参数量和训练 token 数应该平衡增长。

这相当于把 Scaling Law 从“模型越大越好”的粗略理解,推进到“计算预算如何最优分配”的更精细理解。可以这样概括:

早期 Scaling Law:
扩大模型、数据和计算,loss 会下降。

GPT-3 路线:
大幅扩大参数量,观察 few-shot 能力。

Chinchilla 路线:
在固定计算预算下,重新平衡参数量和训练 token 数。

因此,Chinchilla 不是否定 GPT-3,而是进一步补充了 GPT-3 之后的问题:

如果模型继续扩大,数据是否也要同步增加?

Chinchilla 的答案是:

是的,而且非常重要。

九、Chinchilla 对后续大模型有什么影响?

Chinchilla 之后,大模型训练思想发生了明显变化。

1. 训练 token 数变得更重要

过去大家经常首先问:

这个模型多少参数?

Chinchilla 之后,一个更合理的问题是:

这个模型多少参数?
训练了多少 token?
数据质量如何?
训练是否充分?

很多后续模型开始使用更多 token 训练。例如,一些 7B、13B、70B 模型虽然参数量不算最大,但因为训练 token 数充足、数据质量较高,表现非常强。

2. 小模型也可以很强

Chinchilla 说明:

较小模型如果训练充分,也可以超过更大的训练不足模型。

这对开源社区非常重要。因为并不是所有团队都能训练 175B、280B 或 530B 参数模型。如果能在较小规模上使用高质量数据和充分训练,就可以得到更实用、更便宜、更容易部署的模型。这也是后来很多高性能开源模型的重要思路。

3. 数据工程变得更加关键

如果训练 token 数要增加,那么数据质量就变得更重要。因为不是所有 token 都同样有价值。高质量数据可能包括:

高质量网页
书籍
百科
代码
数学题
论文
问答数据
多语言数据
领域数据

低质量数据可能包括:

重复网页
垃圾文本
乱码
广告
模板化内容
低质量爬虫数据
错误代码
污染评测集的数据

因此,现代大模型训练越来越重视:

数据清洗
去重
质量过滤
数据配比
领域采样
训练数据混合策略

可以说,Chinchilla 之后,数据工程在大模型训练中的地位显著上升。

4. 推理成本也被重新考虑

大模型不仅训练贵,推理也贵。如果一个较小但训练充分的模型可以达到更大模型的效果,那么它在部署时更有优势。因为推理成本通常和模型参数量密切相关。所以 Chinchilla 的影响不只是训练阶段,也影响实际应用:

模型更小
推理更便宜
部署更容易
微调成本更低

这也是为什么很多团队会追求:

不是最大模型,
而是性价比最高的模型。

十、Chinchilla 和 LLaMA、Qwen、DeepSeek 的关系

Chinchilla 之后,很多开源大模型都更重视训练 token 数和数据质量。虽然不同模型的具体训练策略不同,但整体趋势非常明显:

不再只追求参数量最大
而是追求参数量、训练 token、数据质量和推理成本之间的平衡

例如 LLaMA 系列就强调使用高质量公开数据进行充分训练。Mistral 等模型强调较小模型的高效性。Qwen、DeepSeek 等模型则进一步在数据、结构、代码数学能力、长上下文和 MoE 等方面做系统优化。这些模型的发展都体现了 Chinchilla 后的一个共同认识:

模型能力不是只由参数量决定,而是由参数量、训练数据、训练策略和模型结构共同决定。

因此,我们今天看一个模型,不能只问:

它是多少 B 参数?

还应该问:

它训练了多少 token?
数据质量如何?
是否充分训练?
是否使用高效结构?
推理成本如何?
是否做了指令对齐?

这就是 Chinchilla 对大模型理解方式的长期影响。


十一、Chinchilla 的局限性

Chinchilla 非常重要,但它也不是万能规律。

1. 它主要关注预训练 loss

Chinchilla 研究的是语言模型预训练中的 compute-optimal scaling。它主要关注:

在固定计算预算下,如何降低语言模型 loss。

但是今天我们关心的大模型能力不只是 loss。还包括:

指令跟随
数学推理
代码能力
工具调用
长上下文理解
安全对齐
事实可靠性
Agent 能力

这些能力不一定完全由预训练 loss 决定。

2. 它没有直接解决数据质量问题

Chinchilla 强调训练 token 数,但 token 数量不等于 token 质量。同样是 1T tokens,高质量数据和低质量数据效果可能差别很大。所以后续模型不能只机械地追求:

更多 token

还必须关注:

更好的 token

3. 它主要针对 dense Transformer

Chinchilla 的分析主要基于自回归 Transformer 语言模型。后续出现了很多新结构,例如:

MoE
GQA
MQA
MLA
长上下文稀疏注意力
混合专家路由

这些结构可能会改变训练和推理成本关系。

4. 它主要考虑训练计算,不充分考虑推理成本

Chinchilla 关注的是训练 compute-optimal。但现实部署中,推理成本也非常重要。一个训练上 compute-optimal 的模型,不一定在实际服务中总成本最优。如果模型要每天服务大量用户,那么推理成本可能远远超过训练成本。所以后续研究开始进一步考虑:

训练成本 + 推理成本

而不只是训练成本。


十二、本文小结

本文精读了 Chinchilla 论文 Training Compute-Optimal Large Language Models。Chinchilla 关注的问题是:

在固定训练计算预算下,应该训练多大的模型,以及使用多少 token?

它提出,大语言模型不能只堆参数。很多早期大模型虽然参数量很大,但训练 token 数不足,因此可能是 undertrained。在大语言模型训练中,三个核心变量是:

N:模型参数量
D:训练 token 数
C:训练计算量

训练计算量可以粗略写成:

C \approx 6ND

这说明参数量和训练 token 数都会显著影响训练成本。Chinchilla 的核心结论是:

在 compute-optimal training 下,
模型参数量和训练 token 数应该大致同时增长。

也就是说:

模型参数量翻倍,
训练 token 数也应该大致翻倍。

Chinchilla 论文训练了大量不同规模模型,用来拟合参数量、训练 token 数和 loss 之间的关系。最终,DeepMind 训练了一个 70B 参数的 Chinchilla 模型,使用约 1.4T tokens。虽然它比 280B 参数的 Gopher 小很多,但在相近训练计算预算下表现更强。这说明:

一个更小但训练更充分的模型,可能超过一个更大但训练不足的模型。

Chinchilla 对后续大模型训练影响很大。它让研究者更加重视:

训练 token 数
数据质量
模型是否训练充分
参数量和数据量的配比
训练成本和推理成本之间的平衡

如果用一句话总结 Chinchilla:

Chinchilla 告诉我们,大模型能力不是只靠参数堆出来的,而是参数量、训练 token 数和计算预算合理分配的结果。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐