跳转至

第 10 章:Scaling Law 与大模型为什么变大

1. 本章要解决的问题

第 9 章里,我们已经把预训练这件事讲清楚了一半:

  • 文本怎样变成训练样本
  • GPT 怎样做 next-token prediction
  • loss 怎样计算
  • 一个预训练循环为什么会非常贵

但只理解这些,还不够回答一个更大的问题:

既然训练已经这么贵了,为什么大家还在不停把模型做大?

这背后并不只是“参数越多越强”这么一句口号,而是涉及一组更具体的训练规律:

  • 参数量变大时,loss 会怎样变化
  • 数据量变大时,模型是不是一定继续变好
  • 在固定算力预算下,应该优先增大模型,还是优先多训一些 token
  • 为什么后来很多团队开始强调 compute-optimal training

这些问题共同指向一个核心主题:

模型性能并不是随机增长的,它和参数量、数据量、算力预算之间存在可观察的缩放规律。

这就是 scaling law 要解决的事。

从全书结构上看,这一章有三个作用:

  • 它承接第 9 章,把“预训练为什么贵”进一步推进到“训练资源应该怎么分配”
  • 它解释为什么现代 LLM 的讨论总绕不开 7B / 13B / 70B、token budget、FLOPs 这些词
  • 它也为第 11 章的评估做铺垫,因为只有先知道模型是怎么被 scale 出来的,才更容易理解“变大之后到底强在什么地方、又该怎么测”

如果第 9 章回答的是:

模型怎样通过海量文本学会预测下一个 token。

那么这一章要回答的是:

当我们继续投入更多参数、更多数据、更多算力时,模型能力为什么会系统性提升,以及这种提升的边界在哪里。

2. 你学完后应该会什么

  • 能解释 scaling law 是什么,以及它为什么重要
  • 能区分参数量、数据量、算力预算分别在影响什么
  • 能理解“大模型变强”不是单因素结果,而是三者共同作用
  • 能说清 undertrainedovertrainedcompute-optimal 的基本含义
  • 能理解 Chinchilla 结论为什么改变了很多人的训练直觉
  • 能把这一章内容自然衔接到第 11 章的 LLM 评估

3. 为什么预训练之后,问题会自然走到 scaling law

当你第一次自己训练一个小语言模型时,最容易关心的是:

  • 模型能不能跑起来
  • loss 会不会下降
  • 数据管线有没有问题

但只要规模继续往上走,问题马上就会变化。

因为这时你面对的已经不是“能不能训练”,而是:

同样花一大笔算力,怎样训练更值。

比如你有一笔固定预算,可以有很多不同花法:

  • 训练一个更大的模型,但 token 数少一些
  • 训练一个小一些的模型,但喂更多数据
  • 模型和数据都增大,但训练步数变短

这三种方案都在“花钱训练模型”,但最后效果可能差很多。

所以在大模型时代,训练不只是优化器和代码层面的问题,更是一个资源分配问题。

而 scaling law 的价值就在这里:

它试图告诉你,在资源有限时,性能会怎样随规模变化,以及资源应该怎样分配得更合理。

4. scaling law 到底是什么

先给一个尽量直白的定义。

所谓 scaling law,通常指的是:

当模型规模、数据规模、训练算力持续增大时,模型的某些性能指标会以相对稳定、可拟合的规律变化。

这里要注意两点。

4.1 它说的是“规律”,不是“神话”

scaling law 不是说:

  • 模型无限变大就一定无限变强
  • 只要参数量翻倍,能力就一定翻倍

它说的是更朴素的事:

在相当长的一段规模区间内,loss 或 error 往往会按某种比较平滑的趋势下降。

这个趋势常常近似表现为 power law,也就是幂律关系。

4.2 它关心的通常不是单点最好,而是整体趋势

比如我们不会只问:

“这个 7B 模型最后是多少分?”

而会更关心:

  • 从 1B 到 7B 再到 70B,整体趋势怎样
  • 在相似数据质量下,loss 是怎么下降的
  • 在固定计算预算下,怎样的模型和数据配比更划算

也就是说,scaling law 更像是一张地图,而不是某个孤立实验结果。

5. 三个最关键的变量:参数、数据、算力

在 LLM 训练里,最核心的三个规模变量通常是:

  • 参数量 N
  • 训练 token 数 D
  • 计算预算 C

它们分别对应三种不同的“变大”。

5.1 参数量 N

参数量决定了模型的容量上限。

你可以把它粗略理解成:

模型能用多复杂的函数去拟合语言规律。

参数更多,通常意味着:

  • 表达能力更强
  • 能容纳更复杂的模式
  • 在足够数据和足够训练下,上限更高

但参数量变大也会带来代价:

  • 显存需求更高
  • 训练更慢
  • 推理成本更高
  • 如果数据不够,容易出现“模型很大但没训透”

5.2 数据量 D

数据量这里通常更关心的是:

模型一共看过多少训练 token。

注意不是简单看有多少篇文档,而是看 token 级别的总训练预算。

数据量变大,意味着模型能接触更多:

  • 语言模式
  • 领域知识
  • 表达变体
  • 长尾样本

但数据也不是越多越无脑有效。

如果模型本身太小,它可能吃不下那么多信息; 如果数据质量很差,更多 token 也只是把噪声重复喂给模型。

5.3 算力预算 C

算力预算决定了你总共能做多少训练计算。

在非常粗略的层面上,我们常把训练计算量写成:

\[ C \propto N \times D \]

更精细的工程实现里常会看到类似:

\[ C \approx 6ND \]

这里不必过分纠结常数,关键直觉是:

参数越大、训练 token 越多,算力消耗就越高。

所以很多训练决策,本质上都是在固定 C 的情况下,重新分配 ND

6. 为什么“更大模型更强”往往是真的

很多人第一次听到“大模型更强”时,会觉得这像一句行业宣传。

但从训练角度看,它其实有很强的统计学习直觉。

6.1 更大的模型通常有更高的拟合上限

如果模型太小,它会很快遇到一种情况:

不是数据不够,而是模型装不下。

这时即使继续加数据,loss 下降也会越来越有限,因为容量已经成了瓶颈。

更大的模型可以:

  • 学到更细的模式
  • 保存更多知识
  • 更好地利用上下文
  • 对复杂分布做更精确的近似

6.2 更大模型往往也更“会用数据”

一个容易忽略的点是:

参数更多的模型,不只是容量更大,它通常也能从同样一份数据里学到更多。

换句话说,不同规模模型对数据的“消化能力”并不一样。

同样是 100B token:

  • 小模型可能早早饱和
  • 大模型还在继续稳定收益

这也是为什么我们不能脱离模型规模,孤立谈“数据够不够多”。

6.3 但“更大”不等于“随便大”

如果你把模型做得很大,却没有给它足够训练 token,那么会出现一种很常见的问题:

模型参数很多,但训练不充分。

这就是后面要讲的 undertrained

所以正确的理解不是:

只要参数大就行。

而是:

模型变大以后,数据和算力也要跟着匹配。

7. scaling law 常见的数学直觉

这一节不追求推导,只保留最核心的理解。

很多 scaling law 工作都会观察到:

当我们把验证集 loss 画到对数坐标下时,它会随着模型规模或数据规模的扩大,呈现近似线性的下降趋势。

这对应的就是一种幂律关系,例如:

\[ L(N) \approx A N^{-\alpha} + B \]

或者:

\[ L(D) \approx A D^{-\beta} + B \]

其中:

  • \( L \) 是 loss
  • \( N \) 是参数量
  • \( D \) 是数据量
  • \( A \)\( B \) 是常数
  • \( \alpha \)\( \beta \) 表示缩放速度

这组式子不用死记,重要的是它表达的直觉:

7.1 性能提升通常是持续的,但不是线性的

模型从 1B 扩到 2B,不会自动得到“两倍好”的效果。

更常见的是:

  • 会继续变好
  • 但收益会逐步递减

也就是每继续扩大一截规模,往往还能赚到性能,但边际收益会慢慢下降。

7.2 会存在一个噪声底或不可约误差

公式里的 B 可以理解成一个下界项。

它提醒我们:

就算规模继续增大,loss 也不会永远按同样速度下降。

因为数据噪声、分布复杂度、训练目标本身的限制,都会让曲线最终变缓。

所以 scaling law 给我们的并不是“无限乐观”,而是“有规律地继续进步,但伴随收益递减”。

8. 从 Kaplan 到 Chinchilla:训练直觉为什么变了

在大模型讨论里,大家经常会把 scaling law 分成两个阶段去理解:

  • 一个是早期更强调“模型继续变大”的直觉
  • 一个是后来更强调“模型和数据要一起匹配”的直觉

这里可以用两个关键词来记:

  • Kaplan-style intuition
  • Chinchilla-style intuition

8.1 早期直觉:大模型很重要

早期工作让大家更明确地看到:

  • 更大的模型通常有更低的 loss
  • 更大的 batch、更长的训练、更大数据集,整体上是值得的
  • 很多性能并不是突然跳出来的,而是随着规模持续改进

这对行业的一个重要影响是:

大家开始相信,继续 scale 是有回报的。

也正因为如此,后来的 GPT、PaLM、LLaMA 这些路线都越来越重视规模化训练。

8.2 后来修正:很多模型其实没有训透

但后来的研究进一步指出了一件很重要的事:

有些大模型虽然参数很大,但相对它的规模来说,训练 token 还不够。

换句话说,问题不是模型太大,而是:

模型变大以后,没有给它足够多的数据和训练计算去把潜力真正发挥出来。

这就把讨论从“要不要更大模型”推进到了:

在固定算力下,模型和数据应该按什么比例一起增长。

9. Chinchilla scaling 的核心结论

这一部分是这一章最重要的结论之一。

Chinchilla 路线最常被总结成一句话:

很多语言模型不是太小,而是数据太少。

更准确一点说,是:

在固定训练计算预算下,最优方案往往不是一味增大参数,而是让模型规模和训练 token 数同时处在更平衡的位置。

9.1 什么叫 compute-optimal

所谓 compute-optimal training,就是:

在给定总训练 FLOPs 的前提下,找到参数量和训练数据量的更优配比,让最终 loss 最低。

这里的重点不是把某一个变量做到最大,而是让资源配置最合理。

举个直觉化的例子。

如果你有固定预算:

  • 方案 A:参数非常大,但只训练很少 token
  • 方案 B:参数略小一些,但训练 token 显著更多

Chinchilla 风格的结论往往会倾向于认为:

方案 B 可能更划算。

因为方案 A 容易出现“大而没训透”的问题。

9.2 什么叫 undertrained

undertrained 指的是:

相对于模型规模,这个模型看到的训练 token 太少。

典型表现是:

  • 参数很多
  • 训练很贵
  • 但 loss 还没有降到该规模应有的位置

这类模型并不是没有潜力,而是潜力还没被充分训练出来。

9.3 什么叫 overtrained

与之相对,overtrained 可以粗略理解成:

对当前模型容量来说,训练 token 已经非常多,继续在同类数据上训练的收益变得很小。

当然,这个词在不同语境下有时还会和过拟合混在一起用,但在 scaling 讨论里,更常见的是表达:

当前参数规模已经成了瓶颈,继续堆同类训练计算不够划算。

9.4 一句话总结 Chinchilla 的训练观

不是:

参数越大越好。

而是:

在固定算力下,要让参数规模和 token 预算彼此匹配。

10. 一个更实用的训练决策视角

如果你未来真的要参与模型训练,scaling law 最有用的地方,不是背几条论文结论,而是帮你建立一个判断框架。

可以先问四个问题。

10.1 我们的瓶颈到底是什么

先判断当前受限的是哪一项:

  • GPU 算力不够
  • 高质量数据不够
  • 显存不够,模型放不下
  • 训练时间窗口不够

不同瓶颈下,最优决策可能完全不同。

10.2 我们是“模型太小”,还是“没训透”

如果训练 loss 和验证 loss 都还在稳定下降,且 token 预算不多,那么更常见的问题可能不是模型太小,而是训练还不够。

如果已经喂了很多高质量 token,但性能迟迟不涨,才更可能是模型容量到了瓶颈。

10.3 新增预算应该投到哪里

多出来的一笔预算,理论上可以投到:

  • 更大的模型
  • 更多训练 token
  • 更高质量的数据清洗
  • 更长 context 的训练
  • 更稳定的训练系统

scaling law 能告诉你大方向,但真实工程里,数据质量和系统稳定性同样会改变最终收益。

10.4 不要把“训练最优”和“部署最优”混为一谈

这是非常容易混淆的一点。

从训练角度看,某个模型-数据配比可能最优; 但从部署角度看,它不一定最合适。

因为部署还要考虑:

  • 推理延迟
  • 显存占用
  • 吞吐
  • 成本
  • 用户体验

所以训练最优模型,不一定是产品最优模型。

11. scaling law 为什么不能直接等于“能力定律”

很多人在看大模型新闻时,会把 scaling law 和“涌现能力”直接绑定起来,觉得只要规模够大,就会自动跳出新智能。

这种理解有一点过头。

11.1 scaling law 主要描述的是平滑趋势

它更擅长描述的是:

  • loss 怎么下降
  • error 怎么下降
  • 平均性能怎样变化

它首先是一种统计趋势,而不是神秘跳变公式。

11.2 某些能力看起来像“突然出现”,可能和评测方式有关

有些任务在小模型上几乎全错,大模型上突然过阈值,于是看起来像“涌现”。

但这里面可能混着几种因素:

  • 指标是离散的,通过线一过就像断崖变化
  • prompt 形式对不同规模模型影响不同
  • 训练数据覆盖和任务结构本身有门槛效应

所以更谨慎的说法应该是:

规模提升确实可能带来新能力区间,但这种现象并不意味着一切都由单一尺度定律直接决定。

11.3 loss 下降不等于所有能力同步提升

一个模型在整体语言建模 loss 上更好,不代表它在每类任务上都同比例进步。

例如:

  • 数学推理
  • 代码生成
  • 多轮对话
  • 幻觉控制

这些能力会受到:

  • 数据配比
  • 训练目标
  • 后训练策略
  • 评测方式

的共同影响。

这也是为什么下一章必须专门讲评估。

12. 常见误区

12.1 误区一:scaling law 的意思就是参数越大越好

不对。

scaling law 从来不是只讨论参数量,而是讨论:

参数、数据、算力三者怎样共同变化。

12.2 误区二:有了 scaling law,就能精确预测任何模型结果

不对。

它能提供很强的趋势判断,但真实结果还会受到很多因素影响,比如:

  • 数据质量
  • 数据分布
  • tokenizer
  • 优化器设置
  • 训练稳定性
  • 架构细节

所以它更像决策指南,而不是算命公式。

12.3 误区三:只要继续堆训练 token,就一定更好

也不对。

如果模型容量已经成了瓶颈,继续堆大量相似数据,收益会越来越小。

12.4 误区四:训练最优就等于应用最优

不对。

训练时更优的规模选择,未必符合线上服务的延迟和成本约束。

13. 面试里怎么讲这章

Q1:什么是 scaling law?

可以回答:

scaling law 指的是语言模型性能会随着参数量、数据量和训练计算量的增加,呈现相对稳定的缩放规律。它的重要性在于帮助我们在固定预算下决定资源应该怎样分配,而不是只凭经验拍脑袋做大模型。

Q2:为什么不能只看参数量?

可以回答:

因为模型性能不是由参数单独决定的。参数量决定容量上限,但如果训练 token 不够,模型会 undertrained;如果数据很多但模型太小,又可能容量不够。所以必须把参数、数据和算力一起看。

Q3:Chinchilla 结论的核心是什么?

可以回答:

核心是很多模型不是参数太少,而是相对其规模来说训练数据不够。在固定算力预算下,更优做法往往是让模型规模和训练 token 数保持更平衡的配比,而不是一味把参数做得更大。

Q4:scaling law 和评估有什么关系?

可以回答:

scaling law 告诉我们规模扩张通常会带来整体性能提升,但它主要描述的是趋势,不等于已经完整回答“模型具体强在哪”。要判断模型在知识、推理、代码、对话等任务上的真实能力,还需要系统评估。

14. 本章小结

这一章最核心的内容可以压缩成四句话:

  • 大模型变强,不只是因为参数更多,而是因为参数、数据、算力一起被 scale
  • scaling law 说明性能提升通常有稳定趋势,但收益会递减
  • 在固定预算下,资源配置比单纯追求最大参数更重要
  • Chinchilla 风格的结论提醒我们,很多模型的问题不是太小,而是没训透

从全书主线看,到这里我们已经把现代 LLM 训练流程中的前三个关键问题串起来了:

  • 第 8 章:数据怎样进入模型
  • 第 9 章:模型怎样完成预训练
  • 第 10 章:训练资源怎样影响模型规模和效果

接下来很自然就会进入下一个问题:

模型训练出来以后,我们到底该怎样判断它好不好?

这就是第 11 章要解决的主题:LLM 评估。

15. 延伸阅读

  • Kaplan et al., Scaling Laws for Neural Language Models
  • Hoffmann et al., Training Compute-Optimal Large Language Models
  • 深入对比不同规模模型在固定 FLOPs 下的训练策略
  • 结合第 11 章继续看 benchmark 与 loss 之间的关系