← 返回
技术论文解读

数据受限下的语言模型扩展

Scaling Data-Constrained Language Models
Authors
Niklas Muennighoff, Alexander M. Rush, Boaz Barak, Teven Le Scao, Aleksandra Piktus, Nouamane Tazi, Sampo Pyysalo, Thomas Wolf, Colin Raffel
Institutions
Hugging Face · Harvard University · University of Turku
Venue
NeurIPS 2023 · 2023-12
Links
TL;DR

训练文本快不够用了——这篇论文用 400 多次实验 给出经验答案:重复同一批数据训到约 4 个 epoch 几乎零损失,再掺入代码把有效数据翻倍,数据墙因此能被推后很远。

30 秒速览
研究问题
训练文本快被耗尽。重复同一批数据训多个 epoch,行不行?该怎么分配算力?
核心结论
行。数据墙比想象中软——重复 + 掺代码,可把可训练 token 量放大近一个数量级。
关键数字
≤4 epoch 重复≈免费 · ~16 epoch 为收益半衰点 · ~40 epoch 趋零 · 掺 50% 代码 = 有效 token ×2
方法
给 Chinchilla scaling law 加一个有效数据指数衰减项;拟合得重复半衰期 R_D≈15、参数半衰期 R_N≈5。
分配建议
数据受限时,额外算力让 epoch 比参数涨得快(因 R_N_D)。
最大保留
4/16/40 是 C4 上的拟合值;结论对超参数敏感;公式不建模过多 epoch 反而变差。
谁该读
做预训练的团队;尤其是低资源语言、垂直领域这类数据天生就少的场景。
01

它要解决什么问题

Chinchilla scaling law(scaling law 即扩展律,一条经验规律:模型性能能由参数量、数据量、算力可预测地推算)要求参数与数据等比例放大。把它外推:训一个 530B 参数的模型需要 11 万亿 token(模型处理文本的基本单位,约等于一个词或词的一部分)、超过 30TB 文本。Villalobos 等人估计,连高质量英文文本也将在 2024 年前后被耗尽;对绝大多数语言,可用数据少好几个数量级,早已数据受限。

问题随之而来——数据用完了怎么办?第一个可查的具体问题是:重复同一批数据训多个 epoch(轮次:把整个训练集完整过一遍),行不行?此前主流只训单 epoch,甚至有工作明确反对重复;唯一的例外 Galactica 训了 4.25 epoch,但没和单 epoch、不受限的对照组比过,无法量化多花算力 vs 多收数据的取舍。这篇论文就是来补这个对照的。

02

核心发现

论文训练了 400 多个模型,得到四条可直接用的结论。
1
重复 ≈ 新数据,直到约 4 个 epoch
固定算力下重复 ≤4 epoch,最终 test loss(损失:衡量模型预测有多差的指标,越低越好)与全新数据几乎无差:8.7B 模型训 4 epoch(44B 独特 token),只比单 epoch(178B 独特 token)高 0.5% loss,19 项下游任务(模型预训练后实际要做的活,如问答、推理)也无显著差异。
2
收益的半衰期约 16 个 epoch,约 40 个 epoch 归零
拟合出的常数 R*D ≈ 15 即重复半衰期;有意义的收益延续到约 16 epoch,之后极快衰减;到约 40 epoch,再投算力的价值趋于零。
3
数据受限时,epoch 该比参数涨得快
多余参数比多余 epoch 贬值更快(RN≈5 < RD≈15)。按此训练的 6.3B 模型,参数比 Chinchilla 配方少 27%,loss(2.359 vs 2.376)和下游都更好。极端例:在 100M 独特 token 的小数据场景下,把算力投到 20–60× 的参数与 epoch(约合 7000 倍算力),能把 loss 砍掉一半以上。
4
掺代码 ≈ 把数据翻倍
≤50% 的自然语言数据替换成 Python 代码,所有自然语言任务都不掉分——等于有效 token ×2;bAbI、WebNLG 等推理/生成任务因代码反而提升;超过 50% 后自然语言表现才快速下滑。
重复程度实测效果
≤ 4 epochtest loss 与新数据几乎无差;下游任务无显著差异
~ 16 epoch仍有有意义的收益;此处即拟合出的半衰点 R*_D
~ 40 epoch再加算力的价值趋于零,重复数据不值钱了
44 epoch实测训练发散(因违反公式假设,已从拟合中剔除)
一个具体案例 · Galactica

Galactica 是本文之前唯一公开训过多 epoch 的 LLM:120B 参数 / 106B 独特 token / 训 4.25 epoch。按数据受限 scaling law 反推,它本该是约 40B 参数 / 1.35T token(12.75 epoch)——3× 更少参数、3× 更多 epoch。它把算力错配到了参数上,正是该让 epoch 涨得快被忽视的真实代价。

03

方法与拟合出的公式

方法贡献,是把 Chinchilla 律推广到重复数据。Chinchilla 在 C4 上拟合后的形式是——损失 L 随参数 N、数据 D 按幂律(一种可预测的递减关系:投入每翻一倍,收益按一个固定比例缩水)下降,常数 E 是不可压缩的损失下限:
L(N, D) = 1.87 + (521) / (N^{0.35)} + (1488) / (D^{0.35)}
但这条式子默认每个 token 都是新的。论文的关键一步:把 D 换成 有效数据 D′、N 换成有效参数 N′——重复 token 提供的信息少于新 token,其价值随重复次数指数衰减。拟合全部实验后,得到带真实常数的最终公式:
D' = U_D + 15.4 U_D (1 - e^{-R_D/15.4})
N' = U_N + 5.3 U_N (1 - e^{-R_N/5.3})
U_D 独特 token 数 · R_D 重复次数 · U_N = 0.051·U_D · 15.4 = R*_D · 5.3 = R*_N
三个要点。其一,RD=0(不重复)时 D′ 退回 D,公式还原成 Chinchilla。其二,无论重复多少次,D′ 有上限 UD+15.4·UD——重复换不来无限新数据。其三,拟合出 RD≈15.4 > RN≈5.3,即多余参数贬值更快——这就是 epoch 该比参数涨得快的数学来源。
重复次数(epoch)→有效数据 D′假设重复=新数据上限 ≈ U_D + 15.4·U_D≤4 ep几乎等于新数据≈16 ep 半衰点≈40 ep 后:再投算力 ≈ 归零
概念示意(本解读自绘):重复数据的价值先紧贴新数据线,4 epoch 内几乎无损;越过 ~16 epoch 半衰点后急剧衰减,最终逼近 U_D+R*_D·U_D 的上限。
04

实验设置与规模

这篇论文的可信度来自实验密度,规模也界定了结论的适用范围。
400+
训练的模型数
10M–9B
参数范围
~900B
最大总训练 token
1–1500
epoch 跨度
模型用 GPT-2 架构,主训于 C4(一个常用的大规模英文网络文本数据集),并在 OSCAR、The Pile 等其它文本数据集上复现,以确认结论不依赖单一数据集。算力消耗用 FLOPs(浮点运算次数,算力的计量单位) ≈ 6ND 近似。一个关键方法细节:指标用留出测试集的 loss,而非训练 loss——重复数据会过拟合(模型死记训练数据,对没见过的数据反而变差),训练 loss 会失真。下游评测覆盖 19 个任务、0–5 shot(测试时给模型 0 到 5 个示例)。三种实验协议分别针对分配(固定数据、变 epoch 与参数)、回报(固定算力、变数据量)、参数化拟合(182 个样本)。
05

两个补充策略:代码与过滤

重复数据有上限,所以论文还测了两条扩充数据的旁路。
策略做法结论
代码增强用 The Stack(开源代码数据集)的 Python 顶替部分文本≤50% 不掉分,等于有效 token ×2;bAbI/WebNLG 反而提升;超 50% 自然语言下滑
困惑度过滤只保留困惑度(模型对一段文本的意外程度,越低通常越规整)最低的 top 25% 样本只对噪声数据集(OSCAR)有效;干净的 C4 上收效有限
去重移除有 100 字符重叠的文档本文下游基准上无提升(对减少记忆/隐私或另有价值,只是不在本基准内)
组合拳

两条策略可叠加:先用代码把数据扩到 2 倍,再把新数据集重复训 4 epoch,即得 8× 训练 token,效果预期与一开始就有 8× 独特数据相当。这就是数据墙能被推后近一个数量级的具体来源。

06

对训练团队意味着什么

① 别再为只能训一个 epoch 焦虑。 独特数据有限时,重复 3–4 epoch 基本免费;要榨,16 epoch 内都有收益。单 epoch 才对是过时教条。

② 数据受限时,重算 N/D 配比。 别照搬 Chinchilla 的等比例分配——额外算力应更多投 epoch、少投参数;副产物是模型更小、推理更便宜。Galactica 就是反面教材。

③ 把代码当数据扩充工具。 掺约 50% 代码近乎免费地把数据当量翻倍,即使你只关心自然语言任务。

④ 过滤要看数据干不干净。 脏数据集用困惑度过滤;对已干净的语料,去重和过滤可能只是白白砍掉可用数据。

对低资源语言、垂直领域这些数据天生就少的场景尤其实用——它把数据墙从一道硬墙,变成了可被重复、代码、组合推后的边界。

07

适用边界:这条经验法则何时失效

- 它重复的是整个数据集,不是一小部分。 论文重复的是全部独特数据;而只把 0.1% 的数据重复 100 次已被其他工作证明会严重伤害性能。别把 4 epoch 没事套到上采样小子集上。 - 结论对超参数敏感。 论文把学习率、dropout、优化器固定在常用值,并明确指出:更高的学习率很可能让收益衰减更早到来。换超参,4/16/40 这些数字会移动。 - 公式不建模过多 epoch 反而变差。 实验里确实观察到双下降(loss 先降、再升、又降的反常曲线)、以及 44 epoch 时 loss 发散,但拟合时这些样本被剔除了。公式假设 loss 随 epoch 单调下降——它能告诉你收益何时趋平,不能告诉你何时变坏。 - 4/16/40 是在 C4 上拟合的。 趋势在 OSCAR、Pile 上都成立,但精确系数随数据集变。当数量级用,别当精确刻度。 - 范围限定在英文文本 + GPT 类架构。 其他模态、其他架构是否同样成立,论文未验证。
08

时效性

这是一篇 2023 年的论文(NeurIPS 2023)。 它是数据墙议题的奠基性工作之一,重复 4 epoch 基本无损已成为被广泛引用的经验法则。但 scaling 与数据这条研究线进展很快——此后围绕合成数据、数据配比与课程、数据质量筛选有大量后续工作。把本文当作稳固的起点,做关键决策前建议再查一下最新进展。
09

术语注释

正文首次出现的术语已就地附简注;下面是更完整的版本,供需要时查阅。
scaling law · 扩展律
描述损失如何随参数、数据、算力按幂律变化的经验规律。
Chinchilla scaling law
Hoffmann 等 2022 年提出:给定算力,参数与数据应等比例放大;本文是它在重复数据下的推广。
epoch · 轮次
把整个训练集完整过一遍;多 epoch 即重复使用同一批数据。
loss · 损失
衡量模型预测与真实答案差距的指标,越低越好;本文用留出测试集上的 loss。
compute-optimal · 算力最优
给定算力下,使损失最低的参数量与数据量分配。
有效数据 D′ / 有效参数 N′
本文核心构造:把重复 token、多余参数的价值递减折算后的等效量。
R*_D / R*_N
拟合得到的常数,相当于重复数据(≈15)与多余参数(≈5)的半衰期。
困惑度 · perplexity
语言模型对一段文本的意外程度;越低通常意味着文本越规整、越好预测。
去重 · deduplication
移除语料中大段重复的文本,常用于降噪、降记忆。
双下降 · double descent
损失随训练先降、再升、又降的非单调现象,重复数据时会出现。
10

延伸阅读