前情提要:训练一个 7B 模型,凭什么正好是 7B?

Next-Token Prediction 里,我们走通了预训练的核心 loop:数据 → forward → loss → backward → 更新参数 → 重复。现在,模型能”学会续写”了。

但如果我们真的要烧钱训练一个模型,第一个问题不是”怎么学”,而是”该做多大”。

为什么 GPT-3 是 175B?为什么 Llama 2 选了 7B、13B、70B?为什么 Mistral 是 7B?这些数字不是拍脑袋决定的——背后有一整套数学理论在指导,这就是 Scaling Laws(规模法则)

核心问题

给定一个固定的计算预算(Compute Budget,单位是 FLOPs),我应该:

  • 造一个大模型训练少量数据
  • 还是造一个小模型训练海量数据

答案会直接影响你的 GPU 采购清单、训练时长估算和最终的模型质量。

为什么需要 Scaling Laws?

在 Scaling Laws 出现之前,AI 实验室的训练决策是这样的:

  • “我们有钱,就做大一点”
  • “我觉得数据和参数差不多 1:1 比较好”
  • “先试试,看 loss 怎么样了再说”

这不是工程,这是炼丹。Scaling Laws 要做的就是把炼丹变成工程学——用数学精确描述模型大小、数据量、计算预算和最终 loss 之间的关系。

更具体地说,如果你的老板批了 100 万美元的算力预算,你要回答:

  • 训练多大的模型?
  • 准备多少 token 的数据?
  • 最终的 loss 大概是多少?
  • 如果预算翻倍,应该加模型还是加数据?

Scaling Laws 就是这些问题的计算器。

损失函数的形式:一个幂律世界

大量实验发现,语言模型的测试 loss 和模型参数量 、训练数据量 之间存在幂律关系(Power Law)

其中:

符号含义
测试集上的 loss(越低越好)
不可约损失(Irreducible Loss):即使模型无限大、数据无限多,loss 也不能低于这个值——这是文本本身的固有熵
模型参数量(不含 embedding)
训练数据量(token 数)
幂律指数,控制收益递减的速度
比例常数

这个公式告诉我们两件事:

  1. 加参数有用,但收益递减 意味着从 1B 加到 2B 的效果,远大于从 100B 加到 101B
  2. 加数据也有用,同样递减:第 1T 数据很值钱,第 100T 数据就没那么值钱了

Kaplan et al. (2020):OpenAI 的开山之作

Jared Kaplan 等人在 OpenAI 发表了第一篇系统性的 Scaling Laws 研究[1]。他们的核心发现:

  1. 模型大小比数据量更重要——对于固定算力预算,应该优先扩大模型
  2. 给定算力预算增加 10×,模型大小应增加约 5.6×,数据量只增加约 1.8×
  3. 最优配置下,

按这个配方,如果你有算力训练 GPT-3 (175B),你就应该把所有预算烧在模型上,数据用大约 300B token 就够了。

这也正是 GPT-3 时代的做法:大模型 + 相对少的数据

Chinchilla (2022):DeepMind 的”纠正”

2022 年,DeepMind 的 Hoffmann 等人发表了 Chinchilla 论文[2],直接推翻了 Kaplan 的结论。

他们的核心论点是:Kaplan 算错了——Kaplan 的实验中只增加了模型大小而没有相应增加训练数据,导致结论偏向”模型越大越好”。

Chinchilla 重新做了大规模实验(模型从 70M 到 16B),得出了截然不同的配方:

Chinchilla 最优

对于计算最优的训练,模型参数量和数据量应该等比例增长:每增加 1 个参数,大约需要 20 个 token 的数据。

换句话说:一个 7B 的模型,应该用约 140B token 来训练。

更通俗的换算:

模型大小Chinchilla 最优数据量
1B~20B tokens
7B~140B tokens
13B~260B tokens
70B~1.4T tokens
175B (GPT-3)~3.5T tokens

对比现实:GPT-3 只用了约 300B token——按 Chinchilla 的标准,它严重”训练不足”(undertrained)

Tip

这直接解释了为什么 Chinchilla 只用 70B 参数 + 1.4T token 就在大多数 benchmark 上打败了 175B 的 GPT-3:不是模型不够大,是 GPT-3 没吃饱。这也催生了”小模型 + 多数据”的新范式。

核心结论:把曲线画出来

下面的可视化展示了 scaling laws 的核心关系——给定固定算力,如何分配模型大小和训练数据才能达到最低 loss。

关键观察:

  • 左边:模型太小、数据很大 → 模型容量不够,学不动
  • 右边:模型太大、数据不够 → 过拟合,浪费参数
  • 底部凹陷:最优配置的甜蜜点(sweet spot)

Chinchilla 之后的现实

Chinchilla 发表后,几乎所有主流模型都开始往”数据更充足”的方向倾斜

模型参数量训练数据是否 Chinchilla 最优
GPT-3 (2020)175B~300B远远不够
Chinchilla (2022)70B1.4T
Llama 2 (2023)7B2T远超 Chinchilla
Llama 3 (2024)8B15T+远超 Chinchilla

有意思的是,Llama 2/3 的训练数据量远超 Chinchilla 公式的推荐。这不是说 Chinchilla “错了”,而是说明我们已经进入了 “数据多多益善”的新时代——Chinchilla 给出的是”给定算力预算下的计算最优”,但如果你的目标是”不惜代价做到最好”,Chinchilla 的公式就不再是你的上限。

为什么 Chinchilla 不是终点?

Scaling Laws 本身也在不断演进:

1. 数据重复的问题

Chinchilla 假设所有训练数据都是”新鲜的”——模型只会见每个 token 一次。但在实践中:

  • Llama 2 在 2T token 上训练 7B 模型,远超 Chinchilla 推荐的 140B
  • 这意味着数据开始”重复”——同一个 token 被模型见了多次
  • 重复数据依然有效,但效率会下降[3]

2. 数据质量 vs. 数据数量

Chinchilla 的公式里没有”数据质量”这个变量。但实践反复证明:经过筛选的高质量数据,效果远优于原始网络数据。Phi 系列模型(1.3B 参数却能媲美 7B 模型)就是”数据质量 > 数据数量”的极端证明。

3. Inference-Time Scaling

Brown et al. (2024)[4] 发现,推理时的计算量(inference-time compute)也遵循 scaling laws——通过 chain-of-thought、self-consistency 等技术,你可以在不改变模型参数的情况下,用更多的推理计算换取更好的答案。这意味着 scaling 的故事不只在训练阶段成立。

实战:一块 GTX 1080 Ti 的最佳博弈

把理论拉到现实——实验室那块 GTX 1080 Ti(11GB VRAM,11.3 TFLOPS FP32),能训练多大的模型?

两个硬约束

约束一:显存

训练时的显存占用不只是模型参数本身。以混合精度训练 + AdamW 优化器为例:

组件每参数占用
模型权重 (FP16)2 bytes
梯度 (FP16)2 bytes
AdamW 动量 + 方差 (FP32)8 bytes
基础合计~12 bytes
激活值 + 框架开销(gradient checkpointing)~4-8 bytes
实际总计~16-20 bytes/param

11GB 除以 18 bytes/param ≈ 理论上限 ~600M 参数。但要留余量给 batch size 和序列长度,实用上限大约在 300-400M

约束二:时间

Chinchilla 说最优数据量是 20× 参数量。结合训练计算量 FLOPs 和 1080 Ti 实际训练吞吐(混合精度,没有专用 tensor core,大约 2 TFLOPS 有效算力):

模型大小Chinchilla 数据量总计算量预估训练时间
50M1B tokens FLOPs~1.7 天
100M2B tokens FLOPs~7 天
200M4B tokens FLOPs~28 天
350M7B tokens FLOPs~85 天

甜蜜点

100M-150M 参数 + 2-3B tokens 是最务实的选择。显存绰绰有余,一周左右出结果,刚好能在耐心耗尽前看到模型说话。

这不是一个”最优解”问题

Chinchilla 公式告诉你的是:给定 FLOPs 预算,怎么分配 N 和 D 能让 loss 最低。但你的约束不是 FLOPs 预算,而是显存上限 + 你愿意等多久

在 1080 Ti 这个具体场景下,200M 以下你是在做”计算最优”训练;超过 350M 你根本塞不进显存;在两者之间,决定因素是你有多想快点看到结果

一个反直觉的事实:100M 参数的模型已经可以学到相当有意义的语言规律了。Andrej Karpathy 的 nanoGPT 用 ~10M 参数在 Shakespeare 上就能生成像样的文本。100M 参数 + 高质量中文语料,完全能训练出一个有趣的实验模型。

小结

Scaling Laws 是 LLM 训练决策的计算器:

  1. 幂律世界:Loss 和 N、D 之间是 的关系
  2. Kaplan → Chinchilla 的范式转变:从”砸参数”到”数据和参数要匹配”
  3. 经验公式:每 1 个参数配约 20 个 token(Chinchilla 最优)
  4. 现实超越理论:Llama 2/3 的实践证明,充足甚至”过量”的数据加上高质量筛选,是当前的最优解
  5. Scaling 不会停:数据质量、推理时计算、合成数据……新的维度还在不断被发现

Reference

[1] Kaplan, J., McCandlish, S., Henighan, T., et al. (2020). Scaling Laws for Neural Language Models. arXiv.

[2] Hoffmann, J., Borgeaud, S., Mensch, A., et al. (2022). Training Compute-Optimal Large Language Models. NeurIPS 2022. (The “Chinchilla” paper)

[3] Muennighoff, N., Rush, A. M., Barak, B., et al. (2023). Scaling Data-Constrained Language Models. NeurIPS 2023.

[4] Brown, B., Juravsky, J., Ehrlich, R., et al. (2024). Scaling Scaling Laws with Board Games. arXiv.