第 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 是什么,以及它为什么重要
- 能区分参数量、数据量、算力预算分别在影响什么
- 能理解“大模型变强”不是单因素结果,而是三者共同作用
- 能说清
undertrained、overtrained、compute-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¶
算力预算决定了你总共能做多少训练计算。
在非常粗略的层面上,我们常把训练计算量写成:
更精细的工程实现里常会看到类似:
这里不必过分纠结常数,关键直觉是:
参数越大、训练 token 越多,算力消耗就越高。
所以很多训练决策,本质上都是在固定 C 的情况下,重新分配 N 和 D。
6. 为什么“更大模型更强”往往是真的¶
很多人第一次听到“大模型更强”时,会觉得这像一句行业宣传。
但从训练角度看,它其实有很强的统计学习直觉。
6.1 更大的模型通常有更高的拟合上限¶
如果模型太小,它会很快遇到一种情况:
不是数据不够,而是模型装不下。
这时即使继续加数据,loss 下降也会越来越有限,因为容量已经成了瓶颈。
更大的模型可以:
- 学到更细的模式
- 保存更多知识
- 更好地利用上下文
- 对复杂分布做更精确的近似
6.2 更大模型往往也更“会用数据”¶
一个容易忽略的点是:
参数更多的模型,不只是容量更大,它通常也能从同样一份数据里学到更多。
换句话说,不同规模模型对数据的“消化能力”并不一样。
同样是 100B token:
- 小模型可能早早饱和
- 大模型还在继续稳定收益
这也是为什么我们不能脱离模型规模,孤立谈“数据够不够多”。
6.3 但“更大”不等于“随便大”¶
如果你把模型做得很大,却没有给它足够训练 token,那么会出现一种很常见的问题:
模型参数很多,但训练不充分。
这就是后面要讲的 undertrained。
所以正确的理解不是:
只要参数大就行。
而是:
模型变大以后,数据和算力也要跟着匹配。
7. scaling law 常见的数学直觉¶
这一节不追求推导,只保留最核心的理解。
很多 scaling law 工作都会观察到:
当我们把验证集 loss 画到对数坐标下时,它会随着模型规模或数据规模的扩大,呈现近似线性的下降趋势。
这对应的就是一种幂律关系,例如:
或者:
其中:
- \( 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 intuitionChinchilla-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 之间的关系