AI/ML 详解:Scaling Laws 规模定律

Day 14 · 2026-05-31 · 难度 ★★★★☆
面向:有编程经验的非 AI 方向工程师

开篇:为什么"花多少钱能换多少智能"可以被预测?Why Scaling Laws Matter

训一个前沿大模型要烧上千万美元、占满几万张 GPU 几个月。这意味着一个残酷的现实:你几乎没有试错的机会——不能先训一个 GPT-4 看看效果不好再调。那怎么决定"要多大模型、喂多少数据、花多少算力"?答案是 Scaling Laws(规模定律):在小规模上画一条曲线,外推到大规模,提前预测大模型的效果。

这是过去六年 AI 工业化的底层方法论——把"炼丹"变成了"工程预算规划"。今天拆四个核心:幂律规模定律(loss 怎么随规模下降)、Chinchilla 计算最优(固定预算下参数和数据怎么分)、涌现能力(为什么有些能力是"突然冒出来"的)、以及涌现是不是错觉(一个还没结论的争论)。一条主线:从可预测的平滑曲线,到不可预测的突变,再到追问"突变是真的还是尺子造的"

神经规模定律Neural Scaling Laws

Kaplan 2020幂律可外推
一句话类比

像你做容量规划压测:在 1/10/100 台机器上各测一次吞吐,发现点连起来是一条漂亮的 log-log 直线,于是你能外推"上 1000 台会到多少"——不用真去搭 1000 台。Scaling law 就是把「模型规模 → loss」画成同样一条可外推的直线,让你在小规模上预测大模型。

它解决什么问题 + 工作机制

痛点:大模型太贵,必须能提前预测Scaling Laws for Neural Language Models(Kaplan 等 2020,arXiv 2001.08361)系统测了一批模型,发现一个惊人规律:语言模型的 cross-entropy loss(交叉熵损失,衡量"预测下一个词有多准")随三个量呈幂律(power-law)下降——模型参数量 N、训练数据量 D、训练算力 C。以参数为例:

L(N) ≈ (Nc / N)αN

每个符号L 是 loss(越小越好),N 是参数量,NcαN 是拟合出来的常数(α 约 0.076,很小)。幂律的含义:两边取对数,log Llog N一条直线——这就是为什么在 log-log 图上能用小模型外推大模型。Kaplan 发现这条直线横跨 7 个数量级都不弯,干净得不像经验科学。

最反直觉的洞察:大模型样本效率更高。所以在固定算力下,最优策略是训一个非常大的模型,但不要训到收敛就提前停——把算力花在"更大"而不是"看更多遍数据"上。这条结论后来被 Chinchilla 修正了一半(见下一张卡)。

log-log 图上 loss 是一条直线(示意)

loss 
高 
    ·
       ·
          ·
低             · → 趋近不可降的 floor
   小        模型规模 N (对数)     大

直线 → 可外推;但永远到不了 0(有 irreducible loss)
代码示例
import numpy as np
# 几个小模型实测的 (参数量 N, loss),拟合幂律外推大模型
N    = np.array([1e6, 1e7, 1e8, 1e9])      # 参数量
loss = np.array([4.2, 3.6, 3.1, 2.7])      # 实测 loss
# 幂律在 log-log 下是直线:log L = a*log N + b → 线性拟合
a, b = np.polyfit(np.log(N), np.log(loss), 1)
def predict(n):
    return np.exp(b) * n ** a       # L(N) = e^b * N^a
print(predict(1e11))   # 外推到 100B 参数的 loss(没真训过)
# a 是负数(loss 随 N 增大而降);real-world 还要加 irreducible 项
常见误区 + 实践场景
"幂律意味着无限堆参数 loss 能到 0"——错。真实公式带一个不可降的常数项(irreducible loss),对应语言里固有的随机性(同一句话下一个词本来就有多种合理可能)。曲线趋近这个 floor,不是趋近 0。堆规模收益是递减的——每砍一半 loss,成本指数级上涨。
📌 判断力场景:scaling law 给 BigCat 的真正价值是识别"算力 vs 数据 vs 模型大小"的边际收益。当你看到一个团队宣称"我们模型更强因为参数更多",你该问:在那条幂律曲线上,他们多花的算力换来的 loss 下降值不值?很多"更大"只是滑到了收益递减的尾部。
Takeaway + 思考题
💡 规模定律 = loss 随规模呈幂律下降,log-log 下是可外推的直线——把"炼丹"变成"预算规划"。
🤔 一条横跨 7 个数量级的干净直线,为什么没有"理论"也能被工业界当成铁律用?这种"只知其然"的经验定律,你在系统性能领域见过哪些(如排队论、Amdahl 定律)?

计算最优 / ChinchillaCompute-Optimal Scaling

Hoffmann 2022参数 vs 数据~20 tokens/参数
一句话类比

固定预算下分配 CPU 和内存:你有固定的服务器开销,要在"算力强"和"内存大"间分。Kaplan 的结论被误读成"把钱都砸在 CPU(更大模型)";Chinchilla 重做实验发现:CPU 和内存(模型大小和数据量)该各加一半,砸偏了反而浪费。

它解决什么问题 + 工作机制

痛点:给定一个固定的算力预算 C(C ≈ 6·N·D,参数量 × 数据量的函数),该怎么在"模型做大"和"数据喂多"之间分配,才能 loss 最低?Training Compute-Optimal Large Language Models(Hoffmann 等 2022,arXiv 2203.15556,即 Chinchilla 论文)训了 400 多个模型系统扫描,得出结论:

最优时:N ∝ C0.5,D ∝ C0.5  →  参数翻倍,数据也该翻倍

含义:参数量 N 和数据量 D 应当等比例放大,落地经验值约为 每个参数配 20 个训练 token。这直接打脸了当时的主流做法——GPT-3(175B 参数只训了约 300B token)严重「训不足」(undertrained)。Chinchilla 用同样算力,造了个更小(70B)但喂 4 倍数据(约 1.4T token)的模型,在 MMLU 等基准上反超了更大的 Gopher。

为什么 Kaplan 和 Chinchilla 结论不同?主要是 Kaplan 实验里学习率调度等设置让"数据维度"被低估了。Chinchilla 修正后,行业从"盲目堆参数"转向"参数和数据并重"——这也是为什么后来的模型参数没疯涨、但训练数据量暴增。

同样算力预算,两种分配

Kaplan 路线参数 ████ 巨大 数据 █ 偏少 → 训不足
Chinchilla: 参数 ██ 中等 数据 ███ 充足 → 同算力更优

经验法则:tokens ≈ 20 × 参数量(计算最优点)
代码示例
# 给定算力预算,估计计算最优的参数量与数据量
# 近似:训练算力 C ≈ 6 * N * D(FLOPs),且最优时 D ≈ 20 * N
def compute_optimal(C):
    # 代入 D=20N → C ≈ 6 * N * 20N = 120 N^2
    N = (C / 120) ** 0.5          # 最优参数量
    D = 20 * N                    # 最优 token 数
    return N, D

N, D = compute_optimal(C=1e23)   # 给一个算力预算(FLOPs)
print(f"参数 ~{N:.1e}, 训练 token ~{D:.1e}")
# 想要 70B 参数 → 该配约 1.4T token,正是 Chinchilla 的配方
常见误区 + 实践场景
"20 tokens/参数是必须遵守的铁律"——不是。它是训练算力最优完全没算推理成本。如果模型要被部署、被亿万次调用,推理成本远超训练,这时该故意「过度训练」一个更小的模型(喂远超 20 倍的数据)——小模型推理便宜,多花的训练一次性摊掉。Llama 系列正是这条路:用远超 Chinchilla 最优的数据量训小模型。
📌 跨学科场景:Chinchilla 是一道约束优化题(固定预算下两个变量配比),和你做系统容量规划、投资组合配置同构。它给 BigCat 的迁移启示是:"最优配比"永远要先问清「优化的是哪个目标函数」——训练最优 ≠ 部署最优 ≠ 总成本最优,搞错目标,配比全错。
Takeaway + 思考题
💡 Chinchilla = 固定算力下,参数和数据该等比例放大(约 20 token/参数);它修正了"盲目堆参数",但只对"训练成本"最优。
🤔 同样的"训练 vs 推理"成本权衡,决定了"该训多大模型"。如果你的应用是低频高价值(每天几次复杂决策)vs 高频低价值(每秒上千次),这个配比会怎么反向?

涌现能力Emergent Abilities

Wei 2022相变不可外推
一句话类比

水到 100°C 突然沸腾:温度一直平滑上升,但到某个临界点状态突变。某些能力(多步算术、跟着示例推理)在小模型上几乎是零/随机,规模过了某个阈值突然飙起来——这种"在小模型上看不到、放大才冒出来"就是涌现。后端类比:分布式系统里单机看不到的群体涌现行为(如缓存雪崩、羊群效应),到一定节点数才显现。

它解决什么问题 + 工作机制

张力:上一张卡说 loss 随规模平滑下降、可外推。但 Emergent Abilities of Large Language Models(Wei 等 2022,arXiv 2206.07682)指出——下游任务的表现不一定平滑。论文编录了一批能力:在某个参数规模之前,模型在该任务上的准确率几乎是随机猜(如多步算术、考试类问答、few-shot 跟例子学);过了临界规模,准确率陡然上升

为什么这很重要?因为它意味着不能简单从小模型外推下游能力——你在 1B、10B 模型上测某任务全是随机,可能据此判定"这条路不行",但 100B 上它可能突然 work。这给了"继续放大规模"一个强动机:也许下一个能力就藏在下一个数量级里。CoT(chain-of-thought,思维链提示)的有效性也被观察到是规模相关的——小模型用 CoT 没用甚至更差,大模型才吃这一套。

平滑下降 vs 涌现突变

loss(预训练):  平滑、可外推

某下游任务准确率
 随机线 ···················· 过临界点陡升
      1B     10B   ↑阈值  100B

小模型外推 → 会误判"这任务做不了"
代码示例
import numpy as np
# 用 exact-match(全对才算 1 分)这种"全或无"指标看某任务
sizes = np.array([1e8, 1e9, 1e10, 5e10, 1e11])
# 需连对 5 步才算对,单步正确率随规模平滑上升
per_step = np.array([0.30, 0.45, 0.60, 0.80, 0.92])
# 任务分 = 5 步全对的概率 = 单步^5 → 放大后才显著非零
task_acc = per_step ** 5
for s, a in zip(sizes, task_acc):
    print(f"{s:.0e}: {a:.2%}")   # 0.2% → 0.6% → 7.8% → 33% → 66%
# 看着像"突然涌现"——但这其实是下一张卡的伏笔
常见误区 + 实践场景
"涌现 = 模型突然有了智能 / 意识"——不要神秘化。涌现描述的是某个具体任务指标的非线性跃升,是 capability 的统计现象,不是"灵光乍现"。把它浪漫化成"AI 觉醒"是对这个技术词的误用。
📌 跨学科场景:涌现是 BigCat 兴趣里复杂系统科学的核心母题——蚁群的集体智能、神经元到意识、市场从个体到宏观。LLM 的涌现给了一个可量化的样本:但要小心,"看起来涌现"和"真的相变"是两回事——下一张卡正是要拆穿这个。
Takeaway + 思考题
💡 涌现能力 = 某些下游能力在小模型上几乎为零,过临界规模突然出现,无法从小模型外推——是"继续放大"的核心动机。
🤔 如果一个能力"无法从小模型外推、必须放大才知道",这对"用小实验预测大系统"的科学方法本身意味着什么?哪些领域也有这种"不到规模看不到"的现象?

涌现是错觉吗?The Mirage Critique

Schaeffer 2023度量产物开放争论
一句话类比

用错了进度条:你用"全部测试通过才算完成"的二元指标看一个项目,会看到"某天突然 0% → 100%"的假突变;换成"通过测试数 / 总数"的连续指标,其实进度一直在平滑爬升。突变是尺子造的,不是事情本身突变。

它解决什么问题 + 工作机制

反转:Are Emergent Abilities of Large Language Models a Mirage?(Schaeffer 等 2023,arXiv 2304.15004)对上一张卡的"涌现"提出尖锐质疑——很多被报告的涌现,是研究者选的「评测指标」造成的,不是模型行为的真实突变

机制:关键在指标是非线性/不连续还是线性/连续。用 exact-match(多步全对才给分)这种"全或无"指标,单步能力的平滑提升会被幂次放大成"看起来突然跳起来"(正是上一张卡代码里 per_step ** 5 那个效应)。但换成连续指标——如逐 token 的损失、或部分给分——同一批模型的同一批输出,曲线就变得平滑、可预测,涌现消失了。论文的核心主张:是度量的选择,而非模型能力,制造了"涌现"的表象

但要诚实:这不等于"涌现完全不存在"。Mirage 论文证明了很多报告的涌现是度量假象,但没有、也不能证明所有跃升都是假的。这是一个仍在进行的开放争论——它真正的贡献是逼整个领域重新审视自己的尺子

同一批模型输出,两把尺子两种结论

非线性指标(全对才给分):·········· "涌现!"

连续指标(逐 token / 部分给分): 平滑可预测

数据没变,变的只是测量方式 → 结论翻转
代码示例
import numpy as np
sizes    = np.array([1e8, 1e9, 1e10, 5e10, 1e11])
per_step = np.array([0.30, 0.45, 0.60, 0.80, 0.92])   # 单步正确率:平滑
# 尺子A:5 步全对才算对(非线性)→ 制造"突变"
discontinuous = per_step ** 5
# 尺子B:连续指标,直接看单步正确率(已经很平滑)
continuous = per_step
print("非线性:", np.round(discontinuous, 3))  # [.002 .018 .078 .328 .659] 看着涌现
print("连续 :", np.round(continuous, 3))     # [.30 .45 .60 .80 .92] 平滑可外推
# 同一组底层能力,换尺子 → "涌现"出现或消失
常见误区 + 实践场景
"Mirage 论文证明了涌现是骗局 / LLM 没真本事"——过度解读。它证明的是「涌现的形状」对度量敏感,提醒别被陡峭曲线吓到或骗到;但模型在大规模上确实更强是事实。把它读成"涌现都是假的"和把涌现读成"AI 觉醒",是同一种偷懒——真相是"取决于你怎么测"
📌 判断力场景:这是给 BigCat 最值钱的一课——指标即立场。看任何"AI 能力突飞猛进/触顶停滞"的 benchmark 图,先问:这是连续指标还是全或无指标?换把尺子结论会不会翻?同样的警惕适用于你自己做的 agent 评测、A/B 实验、OKR 度量——尺子选错,你会"看到"根本不存在的拐点。
Takeaway + 思考题
💡 Mirage 批判 = 很多"涌现"是非线性度量制造的表象,换连续指标就平滑了——不是说涌现不存在,而是"取决于你拿什么尺子量"。
🤔 "测量方式决定你看到什么"——这和量子测量、心理测量里"观测改变对象"的命题是同一回事,还是本质不同?一个纯粹的度量选择,能在多大程度上算"客观发现"?

深入资源Further Reading

深入思考Deep Questions

1. 把四个概念串成一条线,关于"规模"这件事,它在告诉你一个什么样的认知演化?
主线:从"可预测的平滑",到"不可预测的突变",再到"突变是真的还是尺子造的"。(1) Kaplan:loss 随规模幂律平滑下降,可外推,把炼丹变预算规划。(2) Chinchilla:在可预测框架内细化——固定预算下参数和数据该等比例放大。这两步都说"规模可控、可算"。(3) 涌现:泼冷水——下游能力不一定平滑,有些过临界规模才突现,无法从小模型外推。(4) Mirage:再反转——很多"突变"是非线性度量造的假象,换连续指标就平滑。

本质是一场关于"能不能预测大模型"的拉锯:能 → 不能 → 也许还是能、只是尺子用错了。对 BigCat 的元启示:遇到"突变叙事"先警惕——先排除测量假象,再下"质变"结论。这是成熟工程判断和炒作的分水岭。
2. Chinchilla 说"20 token/参数最优",但 Llama 故意违反它训了远超 20 倍的数据。两者矛盾吗?背后是什么更深的原则?
不矛盾——它们优化不同的目标函数。Chinchilla 优化"固定训练算力下 loss 最低",不管模型训完后的命运。Llama 优化"训练 + 海量推理的总成本性价比":模型若被亿万次调用,推理成本远盖过训练,这时故意过度训练一个更小的模型就划算——小模型每次推理都便宜,多花的训练一次性摊掉。

更深的原则:"最优"永远相对某个目标函数,脱离目标谈最优没意义。数据库的"最优索引"取决于读写比,缓存的"最优大小"取决于命中曲线和内存价。Chinchilla → Llama 的转变,本质是行业把优化目标从"训练最优"切到"部署经济性"。对 BigCat:有人甩你一个"最优配置",第一反应该是"它在最优化哪个目标?是我的目标吗?"——这一问能挡掉大半的错误迁移。
3. 涌现 vs Mirage 之争至今没定论。作为工程师,你该怎么在"还没结论"时行动?
关键是分清"哪部分有共识、哪部分还在争",在共识上行动、对争议保持开放。共识:(a) 大模型在很多任务上确实显著更强,无论曲线叫不叫"涌现";(b) 评测指标的选择会戏剧性改变你看到的曲线形状——Mirage 已钉死,无争议。仍在争:是否存在"换任何合理连续指标都消不掉的真·相变"。

行动准则:(1) 决策优先用连续、可外推的指标(loss、部分给分),把 exact-match 当"展示"而非"规划"。(2) 不因一条陡峭曲线就断言"质变了"或"撞墙了"——先换尺子复验。(3) 承认外推有边界,保留"放大后再验证"的预算。

这是一种成熟姿态:在科学未定论处不假装有答案,而是设计"对两种可能都稳健"的策略。对 BigCat 同理——AI 能力边界没人说得准,与其押注某叙事,不如建"无论涌现真假都不亏"的工作流。
4. 规模定律是纯经验拟合的曲线,没有第一性原理。把它当工业决策的地基,安全吗?
规模定律像热力学早期的经验定律——理想气体定律在有理论解释前已被工程师用了上百年盖工厂,因为在适用范围内极其可靠。规模定律也是:横跨 7 个数量级的干净直线,预测力强到能指导千万美元投入。但经验定律的危险在于外推出适用范围:你不知道直线在哪里弯。

具体风险:(1) 数据墙——幂律假设数据无限供给,但高质量文本有限,触顶后可能偏离。(2) 架构突变——常数是针对特定架构拟合的,换架构曲线会变。(3) 下游能力≠loss——预训练 loss 平滑不代表你关心的能力也平滑。

安全用法:把它当「适用范围内可靠的工程工具」,而非「宇宙真理」。范围内大胆做预算规划;接近边界(数据耗尽、架构换代)时保持警惕、留验证预算。跟你用 Amdahl 定律、排队论做容量规划一个道理——好用,但要清楚假设何时失效。
5. 如果规模定律继续成立,"更多算力 = 更强模型"会一直对吗?这条路的尽头可能是什么?
幂律本身就内含尽头逻辑:收益递减。每砍一半 loss 成本指数级上涨,而 loss 有不可降的 floor。所以"无限堆算力换无限智能"在数学上就不成立——你是在用指数成本逼近一个有限极限

几道现实的墙:(1) 数据墙——要等比例加数据,但高质量人类文本快不够用,逼出合成数据等方向。(2) 算力/能源墙——前沿训练在逼近物理与经济上限。(3) 预训练 loss ≠ 真实用途——loss 压更低未必等比转化成推理、对齐、可靠性。

业界赌注已在转移:从单纯放大预训练,转向推理时计算(让模型多想几步,test-time scaling / o1 路线)、数据质量新架构。合理判断:纯预训练红利进入收益递减尾部,但"规模思维"会迁移到新轴——算力仍是核心,只是从"训练堆参数"挪到"推理堆思考"。对 BigCat:该盯的不是"模型还能多大",而是「单位智能的成本曲线」往哪个方向、多快下移——那条曲线每松一格,能自动化的工作边界就重画一次。