在前几篇文章中,我们沿着 GPT 路线依次讲了 GPT-1、GPT-2、GPT-3、In-Context Learning 和 Prompt Engineering。
这条路线可以简单概括为:
GPT-1:生成式预训练 + 下游任务微调
GPT-2:大规模语言模型开始表现出 zero-shot 能力
GPT-3:模型扩大到 175B,few-shot / in-context learning 能力显著增强
到 GPT-3 之后,一个非常重要的问题出现了:
大语言模型是不是只要不断增大参数量,就会持续变强?
最直观的想法是:模型越大,能力越强。但实际情况并没有这么简单。大语言模型的性能不只取决于参数量,还取决于训练数据规模、训练计算量、数据质量、训练步数和优化策略。
如果模型很大,但训练数据不够,它可能没有被充分训练。
如果数据很多,但模型太小,它可能没有足够容量吸收数据中的规律。
如果计算预算有限,就需要在模型大小和数据规模之间做取舍。
这就引出了本章的主题:Scaling Law。Scaling Law 可以翻译为:
规模化规律
在大语言模型中,它主要研究:
模型性能如何随着参数量、训练数据量和计算量的增加而变化?
这一章我们先做入门解释,不急着推导复杂公式,而是把几个核心概念讲清楚:
模型规模是什么?
数据规模是什么?
计算量是什么?
为什么三者需要平衡?
为什么 GPT-3 之后 Chinchilla 改变了大家对大模型训练的理解?
一、为什么需要 Scaling Law?
训练大语言模型非常昂贵。当模型规模达到几十亿、几百亿甚至上千亿参数时,训练一次模型需要大量 GPU、海量数据和很长训练时间。因此,研究者和工程团队必须回答一个现实问题:
在有限计算预算下,应该训练多大的模型?用多少数据?训练多久?
例如现在有一笔固定训练预算。你可以选择:
方案 A:训练一个很大的模型,但只看较少数据
方案 B:训练一个较小模型,但看更多数据
方案 C:训练一个中等模型,同时使用中等规模数据
哪个方案更好?如果没有 Scaling Law,只能靠经验反复试错。但大模型训练成本太高,不可能随便训练几十个几百亿参数模型来试。Scaling Law 的意义就在于:
通过小规模实验总结规律,预测更大规模模型在不同参数量、数据量和计算量下的表现。
它的作用有点像工程设计中的经验公式。虽然不能完美预测所有细节,但可以给出重要方向:
模型继续变大是否值得?
数据是否不够?
计算预算应该分给参数量还是训练 token 数?
当前模型是不是 undertrained?
这也是 GPT-3、Chinchilla、PaLM、LLaMA、DeepSeek 等模型背后都非常关注的问题。
二、Scaling Law 中的三个核心变量
在语言模型 Scaling Law 中,最常见的三个变量是:
N:模型参数量
D:训练数据量
C:训练计算量
这三个变量决定了大模型训练的基本规模。
1. 模型参数量 N
模型参数量通常记为:N
它表示模型中可训练参数的数量。例如:
GPT-2 最大模型:约 1.5B 参数
GPT-3 最大模型:175B 参数
Chinchilla:70B 参数
参数越多,模型容量越大。可以简单理解为:
参数量决定模型能够存储和表达多少复杂模式。
更大的模型通常可以学习更复杂的语言结构、更丰富的知识、更强的上下文关系和更复杂的任务模式。但参数量不是越大越好。如果模型很大,但训练数据不足,模型可能没有被充分训练。这就像一个容量很大的学生,只看了很少的书,虽然脑容量很大,但知识仍然不够。
2. 训练数据量 D
训练数据量通常记为:D
在大语言模型中,数据量一般用 token 数表示。例如:
300B tokens
1T tokens
2T tokens
10T tokens
这里的 token 不是字数,也不完全等于单词数,而是 tokenizer 切分后的基本单位。训练数据越多,模型能看到的语言模式越丰富。它可以学习:
语法结构
事实知识
代码模式
数学表达
问答格式
推理过程
多语言表达
领域术语
但数据也不是越多越好。如果数据质量很差,大量重复、噪声、垃圾文本会降低训练效率。
如果模型太小,即使给它很多数据,它也未必能充分吸收。所以数据规模必须和模型规模匹配。
3. 训练计算量 C
训练计算量通常记为:C
它表示训练模型消耗的计算资源,常用 FLOPs 衡量。在 Transformer 语言模型中,一个常见近似是:
其中:
-
C 是训练计算量;
-
N是模型参数量;
-
D是训练 token 数;
-
系数 6 来自 Transformer 前向和反向传播中的经验近似。
这个公式不用死记,理解它的含义更重要:
训练计算量大致和模型参数量、训练 token 数都成正比。
也就是说,如果模型参数量翻倍,在训练 token 数不变时,计算量大约也会翻倍。如果训练 token 数翻倍,在模型大小不变时,计算量也大约翻倍。所以,在固定计算预算下,模型大小和训练数据量之间存在取舍:
模型更大 → 每个 token 训练更贵 → 能训练的 token 数可能减少
数据更多 → 训练 token 数增加 → 模型可能不能做得太大
这正是 Scaling Law 要研究的问题。
三、早期 Scaling Law:模型越大,数据越多,计算越多,损失越低
2020 年,OpenAI 的 Kaplan 等人提出了著名的 Scaling Laws for Neural Language Models。
这篇论文研究了语言模型性能和模型参数量、数据集大小、训练计算量之间的关系。它的一个核心结论是:
语言模型的交叉熵损失会随着模型规模、数据规模和计算量的增加呈现可预测的幂律下降趋势。
通俗来说就是:
模型更大,loss 通常会下降
数据更多,loss 通常会下降
计算更多,loss 通常会下降
所谓 loss,可以简单理解为模型预测下一个 token 的错误程度。loss 越低,说明模型越能准确预测文本分布。早期 Scaling Law 的直观意义是:
大模型不是靠运气变强,而是存在相对稳定的规模化趋势。
这给 GPT-3 这样的模型提供了重要背景。如果模型性能随着规模增加可以预测性提升,那么训练更大模型就有了理论和经验依据。
四、GPT-3 与"大模型路线"
GPT-3 可以看作早期 Scaling Law 思路下的重要实践。
GPT-3 最大模型达到 175B 参数,远大于 GPT-2 的 1.5B。
GPT-3 论文展示了一个重要现象:
随着模型规模扩大,语言模型的 few-shot 能力显著增强。
GPT-3 并没有针对每个任务微调,而是通过 prompt 中的任务说明和少量示例完成任务。
例如:
English: cat
Chinese: 猫
English: dog
Chinese: 狗
English: book
Chinese:
模型可以根据上下文继续输出:
书
这说明模型规模扩大后,不只是语言建模 loss 下降,还会带来更强的上下文任务适应能力。因此,在 GPT-3 之后,很多人形成了一个直觉:
只要模型继续变大,能力就会继续增强。
这个直觉并不完全错,但它不完整。因为它忽略了另一个关键变量:
训练数据量
如果模型非常大,但训练 token 数不够,那么它可能是 undertrained,也就是训练不足。这正是 Chinchilla 后来指出的问题。
五、Chinchilla:大模型不能只堆参数
2022 年,DeepMind 提出了 Training Compute-Optimal Large Language Models,也就是常说的 Chinchilla 论文。这篇论文对大模型训练规律产生了很大影响。它指出:当时许多大语言模型过度重视扩大参数量,但训练 token 数不足。换句话说,很多模型是:
参数很多
但看过的数据不够多
这类模型可以称为 undertrained。Chinchilla 的核心观点是:
在固定计算预算下,模型参数量和训练 token 数应该同时增长,而不是只增大模型参数。
更具体地说,Chinchilla 论文发现:
如果模型参数量翻倍,训练 token 数也应该大致翻倍。
这和早期一些实践中"把模型做得特别大,但训练数据相对不足"的做法不同。Chinchilla 的实验非常有代表性。DeepMind 训练了一个 70B 参数的 Chinchilla 模型。虽然它比 Gopher 的 280B 参数小很多,但使用了更多训练数据,并在相同计算预算下取得了更好效果。
这说明:
一个参数更小但训练更充分的模型,可能比一个参数更大但训练不足的模型更强。
这也是为什么 Chinchilla 之后,大家越来越重视:
参数量和 token 数的配比
而不是只看模型参数量。
六、什么是 Compute-Optimal Training?
Compute-Optimal Training 可以翻译为:
计算最优训练
它要解决的问题是:
给定固定计算预算,如何选择模型参数量和训练 token 数,使最终模型效果最好?
假设训练预算固定为:C
我们知道训练计算量大致满足:
其中:
-
N 是模型参数量;
-
D是训练 token 数。
如果C固定,那么 N 和 D 不能同时无限增大。
例如:
选择更大的 N,就要减少 D
选择更大的 D,就要减小 N
Compute-Optimal Training 研究的就是:
在固定 C 下,N 和 D 应该如何分配?
早期很多模型更偏向选择较大的 (N),也就是更大的参数量。Chinchilla 则强调:
很多模型的数据量不够,应该使用更小的模型训练更多 token。
这就是 Chinchilla scaling law 带来的训练范式变化。
七、为什么"大模型 + 少数据"不一定最优?
直观上,参数越多,模型越强。但这只说对了一半。模型参数可以看作容量,数据可以看作学习材料。如果一个模型参数很多,但训练数据很少,就像一个容量很大的学生只读了少量书。它虽然有很大潜力,但没有足够材料学习。这会导致:
训练不充分
数据利用不足
模型能力没有完全释放
推理成本却很高
反过来,如果模型比较小,但训练数据很多,也可能遇到另一个问题:
模型容量不够
无法充分吸收数据中的复杂规律
所以最优状态不是简单地:
模型越大越好
也不是简单地:
数据越多越好
而是:
模型规模和数据规模要匹配
这就是 Scaling Law 的核心价值。
八、从 GPT-3 到 Chinchilla:理解训练范式变化
我们可以用一个简单表格比较 GPT-3 和 Chinchilla 的思路。
| 对比维度 | GPT-3 路线 | Chinchilla 路线 |
|---|---|---|
| 重点 | 扩大模型参数量 | 参数量和数据量平衡 |
| 代表模型 | GPT-3 175B | Chinchilla 70B |
| 核心问题 | 大模型能否 few-shot? | 固定计算预算下怎么训练最优? |
| 训练理解 | 模型越大能力越强 | 只堆参数可能 undertrained |
| 启发 | 扩大模型带来能力提升 | 更小模型 + 更多数据可能更优 |
GPT-3 证明了大模型规模化会带来强大的 few-shot 能力。Chinchilla 则进一步提醒我们:
在计算预算有限时,不应该只问模型有多大,还要问模型训练了多少 token。
所以今天讨论一个大语言模型时,不能只看参数量。还要看:
训练 token 数
数据质量
上下文长度
模型结构
训练计算量
是否 compute-optimal
这也是为什么很多新模型虽然参数量不是最大,但效果却很强。
九、Scaling Law 对今天大模型训练的影响
Scaling Law 对大模型训练影响非常大。
1. 不再只看参数量
过去很多人评价模型,第一反应是:
这个模型多少 B 参数?
例如:
7B
13B
70B
175B
405B
但现在我们知道,参数量只是一个维度。一个 70B 模型,如果训练 token 数充足、数据质量高、训练策略好,可能超过更大的 undertrained 模型。所以更合理的问题是:
这个模型多少参数?
用了多少 token 训练?
数据质量如何?
训练是否充分?
推理成本是多少?
2. 更重视数据质量和数据规模
Chinchilla 之后,训练 token 数变得更加重要。很多模型开始使用数万亿 token 进行训练。但数据越多,并不代表越好。如果数据充满重复、低质量网页、垃圾文本、错误代码和污染样本,模型效果可能受影响。因此,现代大模型训练非常重视:
数据清洗
去重
质量过滤
领域混合
代码数据比例
数学数据比例
多语言比例
安全过滤
数据工程逐渐成为大模型训练的核心环节。
3. 更重视小模型训练充分
Chinchilla 的启发之一是:
充分训练的小模型可能非常强。
这对开源模型尤其重要。因为不是所有团队都有能力训练几百 B 参数模型。如果能在 7B、13B、70B 这类规模上使用更高质量数据和更充分训练,也可以得到非常有竞争力的模型。这也是 LLaMA、Mistral、Qwen、DeepSeek 等开源模型路线的重要基础。
4. 更重视推理成本
参数越大,推理成本通常越高。一个 175B 模型即使效果很好,部署和推理也非常昂贵。如果一个 70B 模型通过更多数据训练可以达到类似甚至更好效果,那么它在实际应用中更有优势。所以 Scaling Law 不只是训练问题,也影响部署成本。
十、Scaling Law 不是万能规律
Scaling Law 很重要,但不能过度神化。它主要描述的是:
在一定条件下,语言模型 loss 和规模变量之间的经验关系
但实际模型能力还受到很多其他因素影响。
1. 数据质量会改变结果
同样是 1T tokens,高质量书籍、代码、数学和问答数据,与低质量重复网页数据,训练效果差异很大。Scaling Law 中的 token 数量不能完全代表数据质量。
2. 任务能力不只由 loss 决定
语言建模 loss 下降,通常有助于模型能力提升。但某些能力,例如复杂推理、工具调用、长程规划、安全对齐,不一定只靠降低预训练 loss 就能解决。这也是为什么后面还需要:
指令微调
RLHF
DPO
Chain-of-Thought
RAG
工具调用
强化学习推理
3. 架构变化也会影响规律
不同模型架构可能有不同效率。例如:
Dense Transformer
MoE Transformer
GQA / MQA / MLA
不同 FFN 结构
不同位置编码
不同上下文长度扩展方式
这些都会影响训练和推理效率。
4. 评测可能存在数据污染
大模型训练数据来自互联网,评测集也可能出现在互联网中。如果训练数据中包含评测题,模型表现可能被高估。所以 Scaling Law 之外,还需要认真处理数据污染和评测可靠性问题。
十一、如何用 Scaling Law 理解后续模型?
理解 Scaling Law 后,我们看后续大模型会更清楚。例如:
为什么 LLaMA 系列强调用更多 token 训练?
为什么 Chinchilla 70B 能超过更大的 Gopher?
为什么很多 7B / 13B 模型效果越来越强?
为什么 MoE 模型可以增加总参数但控制激活计算?
为什么大模型训练越来越重视数据配比?
这些问题背后都和规模化规律有关。我们可以用三个问题分析一个模型:
模型有多大?
训练了多少 token?
用了多少计算量?
再进一步问:
数据质量如何?
模型结构是否高效?
推理成本是否可接受?
是否做了指令对齐?
是否支持长上下文?
这样就不会只看参数量,而能更全面理解模型。
十二、本文小结
本文介绍了 Scaling Law,也就是大语言模型中的规模化规律。Scaling Law 主要研究:
模型性能如何随着参数量、训练数据量和计算量的增加而变化。
在大语言模型中,最核心的三个变量是:
N:模型参数量
D:训练 token 数
C:训练计算量
训练计算量可以粗略理解为:
这说明训练成本和模型参数量、训练 token 数都密切相关。早期 Scaling Law 研究发现,语言模型 loss 会随着模型规模、数据规模和计算量增加而呈现可预测的下降趋势。GPT-3 是大模型规模化路线的重要代表。它将模型扩大到 175B 参数,并展示了显著的 zero-shot、one-shot 和 few-shot 能力。但 Chinchilla 进一步指出,大模型不能只堆参数。在固定计算预算下,模型参数量和训练 token 数应该平衡增长。很多早期大模型可能参数很大,但训练数据不足,属于 undertrained。Chinchilla 的重要启发是:
更大模型不一定最优
训练更充分的较小模型可能更强
参数量和数据量需要匹配
因此,今天理解大语言模型时,不能只看模型参数量,还要同时关注:
训练 token 数
数据质量
训练计算量
模型结构
推理成本
对齐方式
如果用一句话总结:
Scaling Law 告诉我们,大语言模型能力的提升不是单纯依赖参数变大,而是模型规模、数据规模和计算预算共同作用的结果。
下一章我们可以继续写: