Scaling Laws 的精细审视:从 Kaplan 到 Chinchilla 再到数据受限区

Scaling Laws 的精细审视:从 Kaplan 到 Chinchilla 再到数据受限区

AIscaling-lawsresearch-methodology

数据源:Lilian Weng blog + HN · HN

2020 年,OpenAI 的 Kaplan 等人发表了一篇后来被引用数千次的论文,提出了语言模型的 scaling laws:损失 L 随模型参数量 N、数据量 D 和计算量 C 的增长呈幂律下降。按照他们的拟合,在固定计算预算下,模型大小应该以 C^0.73 的速度增长,而训练 token 只需以 C^0.27 的速度增长。换句话说,每增加 10 倍算力,模型参数应扩大约 5.5 倍,数据仅需扩大约 1.8 倍。

两年后,DeepMind 的 Hoffmann 等人用 Chinchilla 论文推翻了这一结论。他们的实验表明,模型大小和数据量应该等比例增长——N_opt ∝ C^0.5, D_opt ∝ C^0.5。按照新的法则,当时大多数大模型都严重「训练不足」。他们用相同的计算预算训练了一个 70B 参数的 Chinchilla(4 倍于 Gopher 的 token 量),结果全面超越了 280B 参数的 Gopher。

同一个幂律形式,拟合出的指数差了几个百分点,在实际决策中却意味着数百亿美元的资源分配差异。这就是 scaling laws 研究的核心张力:一条在 log-log 图上看起来优雅的直线,其拟合过程充满了容易被忽视的陷阱。

Kaplan 等人 2020 年论文中的核心图表:测试损失随计算量、数据集大小和参数量呈跨越多个数量级的幂律关系 来源:Kaplan et al. (2020)

幂律的早期发现

在 Kaplan 将 scaling laws 推入主流视野之前,关于泛化误差随规模可预测下降的研究已有近三十年历史。

Amari 等人(1992)用贝叶斯方法和退火近似推导了四种学习曲线类型,涵盖了确定性/随机学习算法与无噪/有噪数据的组合。四种曲线都遵循幂律形式 ε ∼ c·D^α + E,只是指数不同。Hestness 等人(2017)在四个深度学习领域(机器翻译、图像分类、语言建模、语音识别)中系统性地验证了这一规律,并发现了一个有趣的结论:架构改变的是幂律拟合的偏移量,而非指数本身——斜率似乎是问题域本身的属性,而非模型架构的属性。

Rosenfeld 等人(2020)进一步将误差建模为模型大小 N 和数据大小 D 的联合函数,提出了参数化的预测模型:

L̂(N, D) ≈ A/N^α + B/D^β + E

通过在小规模配置上拟合这五个参数(A, B, E, α, β),可以外推预测更大规模训练的损失。这一函数形式后来被 Chinchilla 论文直接采用。

两条分岔的幂律直线

Kaplan 和 Chinchilla 的核心分歧在于一个看似简单的决策:在 log-log 空间中,compute-optimal 前沿的斜率到底是多少?

Kaplan 实验的主要范围是 768M 到 1.5B 非嵌入参数、22M 到 23B token。他们发现 N_opt ∝ C^0.73,建议把更多资源投入模型容量而非数据。Chinchilla 则扫描了 70M 到 16B 参数、5B 到 500B token 的约 400 个模型,用三种互补方法得出一致结论:N_opt ∝ C^0.50。

三种方法各有侧重:

  • 方法一:固定模型大小,变化 token 预算,记录每个计算预算下的最低损失。
  • 方法二:isoFLOP 曲线——固定计算预算,画出损失-参数量抛物线,最低点就是该预算的最优模型大小。重复多次即可追踪出幂律线。
  • 方法三:直接对上述参数化函数做 Huber loss + L-BFGS 拟合,并通过拉格朗日乘子法推导 N_opt 和 D_opt 的闭式表达。

三种方法结果互相印证,使得 Chinchilla 的结论非常有说服力。

Chinchilla 三种方法的预测结果对比 Kaplan 的预测:三种方法均表明当时主流大模型存在训练不足 来源:Hoffmann et al. (2022)

分歧的根源:比想象中更微妙

为什么两组严谨的研究者会得出如此不同的结论?Pearce & Song(2024)给出了一个令人意外的答案:嵌入参数是否计入 N。

Kaplan 使用「非嵌入参数」计数,而 Chinchilla 使用「总参数」计数。在小模型范围内,嵌入参数占比不可忽略,这种计数差异会扭曲拟合结果。Pearce & Song 构建了一个参数映射关系 N = N_∖E + ω·N_∖E^(1/3),将其代入 Chinchilla 的损失函数后可以发现,在 Kaplan 的实验范围(768M–1.5B 非嵌入参数)内,局部幂律指数 g ≈ 0.73——正好是 Kaplan 报告的值。随着计算规模增大,g 逐渐收敛到 Chinchilla 的 0.50。

Weng 的博文中还提到 Besiroglu 等人(2024)对 Chinchilla 方法三的复现研究,发现了两个实操层面的问题:L-BFGS-B 优化器中 loss scale 设置不当导致过早终止,以及 α 和 β 被四舍五入到两位小数后使导出的 A、B 值看起来偏离更大。这些问题在平常的模型训练中不会引起注意,但在外推预测时会被放大。

博文中嵌入了一个交互式的玩具模拟器,直观展示三种失败模式:

  • 损失精度:将损失值从小数点后多位四舍五入会改变拟合参数。
  • 损失噪声:仅 0.001 量级的扰动就能导致不同的拟合结果。
  • 拟合区域敏感性:仅用小模型、仅用中等模型、或用所有模型拟合,会得到不同的表观 scaling laws。

这三个因素中的任何一个单独来看似乎无关紧要,但在对数空间中外推数个数量级时,细微的差异会被急剧放大。

当数据不再是无限的

经典 scaling laws 假设训练数据是无限的、不重复的。但现实是高质量独特文本正在迅速耗尽——这正是「数据墙」争论的核心。

Muennighoff 等人(2023)将总 token 分解为唯一 token 数 U_D 和重复次数 R_D,并引入「有效数据量」的概念:

D’ = U_D + U_D·r_D·(1 - exp(-R_D/r_D))

直觉是:重复数据的价值呈指数衰减,r_D 是一个可学习的「半衰期」参数。他们在约 400 个实验(10M–9B 参数,最多 1500 个 epoch)中发现,多余的参数比重复数据贬值更快(r_N < r_D),因此在数据受限的情况下,应该优先投入更多 epoch 而非更多参数。

Lovelace 等人(2026)则采取了不同的建模路径,直接在损失函数中加入显式的过拟合惩罚项,惩罚随重复次数和容量比 N/U_D 的增长而非线性增加:

L̂(N, U_D, R_D) = E + A/N^α + B/(U_D(1+R_D))^β + P·R_D^δ·(N/U_D)^κ

他们还发现强 weight decay 可以有效减少数据重复带来的过拟合惩罚。不过,这两种建模方法本质上仍是经验曲线拟合,为什么数据受限的 scaling laws 恰好具有这些形式,仍然是一个开放问题。

数据受限条件下的 scaling:有效数据量模型能更好地拟合重复训练的实验结果,但在高 epoch 数时仍会低估最终损失 来源:Muennighoff et al. (2023)

为什么是幂律?

一个常被追问的问题是:为什么 scaling laws 偏偏是幂律?Sharma & Kaplan(2020)假设语言建模可以看作在数据的低维流形上做回归——如果有效大小为 N 的模型将 d 维流形分割成 O(N) 个区域,则典型线性分辨率约为 N^(-1/d),自然导出幂律形式。Michaud 等人(2023)提出「量化假设」:知识或技能以离散块的形式被学习,且这些技能的频率分布本身遵循幂律,模型先学常见技能、后学罕见技能,形成了平滑的损失幂律衰减。

这些理论各有优劣,但至今没有单一的、被普遍接受的解释。幂律的「为什么」仍然是一个开放的研究方向。

方法论启示

Lilian Weng 这篇长文传递出一种深刻的方法论自觉。Scaling laws 的核心矛盾在于:它们总是用小规模实验拟合、外推到大规模决策。 在对数空间中拟合一条直线,然后外推数个数量级——这个过程中,精度舍入、优化器早停、参数计数方式、拟合区域的选择,甚至数据质量的微妙差异,任何一点不确定性都会被指数级放大。

这也解释了为什么 scaling laws 研究本身需要「carefully」——这种谨慎不来自理论上的不自信,而来自对工具局限性的清醒认知。正如一位 HN 评论者所说:「我一开始也不相信它能是真的。我们担心了好几个月,以为是某个数据集特有的巧合。直到 OpenAI 在完全不同的环境中复现了它,我才确信它是真的。」

从 Kaplan 到 Chinchilla,从无限数据假设到数据受限的扩展,scaling laws 的故事是一个研究工具逐步自我修正的故事。每一次修正的关键,都指向了更精细的实验设计——而非更复杂的数学。

本文的素材来自公开信息和社区讨论。如果你对这个话题有更深入的一手经验,欢迎指出文中的不足。

参考链接