跳转至

预训练进展主要来源于数据

文章背景与核心概要

近年来,人工智能领域的飞速发展是由算法模型调整与改进的数据语料库共同驱动的。为了厘清两者的相对贡献,本研究在相对较小的规模下(最高达 \(1\text{e}19\) FLOPs),深入探讨了 2019 年至 2025 年期间数据改进与模型改进对大模型预训练进展的各自影响。

研究通过 OLMES 基准对模型的基础能力进行了评估,揭示了三个核心结论:首先,数据改进带来的计算效率提升显著更高,在 \(1\text{e}19\) FLOPs 的预算下,数据改进带来的计算效率提升是模型改进的 3.24 倍(数据带来 12.0 倍提升,而模型为 3.7 倍);其次,这些收益在很大程度上是可加的,向下游 OLMES 分数方差中,有 88% 可以通过模型和数据改进的独立加性效应来解释,这表明特定模型架构与训练数据之间不存在复杂的强交互作用;最后,模型改进的真正价值不在于单纯在小规模下提升计算效率,而是确保了更大规模的计算量、参数规模和上下文长度能够在不崩溃的前提下得以有效利用。


前言 (Introduction)

过去几年中人工智能的飞速发展[^1],究竟有多大比例归功于数据改进,又有多少归功于模型改进?这个问题的答案对前沿实验室的经济学以及未来发展的速度具有深远的影响。

我们以相对较小的规模,专门针对 2019 年至 2025 年的预训练过程进行了这项研究。在这一时期的每一年,都会发布一个新的开源模型配方,其中编码了当年公开的算法调整(例如架构、优化器、初始化、学习率调度、超参数等方面的改进)。同时,每一年也都会出现一个新的公开数据语料库(通过更广泛的网络抓取以及新的清洗、提取、过滤技术产生)。

我们在不同的训练计算规模(最高达 \(1\text{e}19\) FLOPs)下,对这些代表特定年份的模型配方与数据语料库进行了组合训练[^2]。

显然,我们无法通过固定数据集上的交叉熵损失来比较这些不同的模型,因为我们训练它们所使用的数据集各不相同。因此,我们转而通过 OLMES 评估来衡量模型的最终能力(该基准聚合了 10 个相对简单的基准测试,主要是多项选择 QA)。不幸的是,评估最终能力而不是预训练损失会为我们的结果引入一些噪声,正如你在下面图表中看到的那样,尽管我们通过运行多个随机种子(seeds)来试图获得更干净的边界。

核心发现: 从 2019 年到 2025 年,在 \(1\text{e}19\) FLOP 的计算预算下,数据改进带来的计算效率提升是模型改进的 3.24 倍(数据为 12.0 倍,模型为 3.7 倍)[^3]。

下面是一个网格图,展示了在我们测试的最终能力上,我们训练的模型相对于 2019 年数据 + 架构基线在 \(3.16\text{e}18\) FLOPs 下表现得有多好[^4]。

我们发现,数据和模型改进带来的收益大体上是独立的、不互动的(即:实现某种模型改进带来的收益并不需要特定的训练数据集,反之亦然)。使用线性模型分析表明,OLMES 分数中 88% 的方差可以由模型和数据改进的相加效应来解释。


讨论 (Discussion)

为了提供背景,让我们简要总结一下从 2019 年到 2025 年数据端和模型端分别发生了哪些变化。

在模型端,我们从 GPT-2 演进到了 OLMo-2,其中包括了优化器、位置编码、归一化、激活函数、初始化等方面的关键创新[^5]。

在数据端,我们在 2019 年从 OpenWebText 开始,该数据集仅包含来自 Reddit 且获得足够多点赞链接的网页,经过去重和过滤后,总量仅约 90 亿个 token(这主要是 GPT-2 的训练集)。到了 2025 年,诸如 UltraFineWeb 这样的开源数据语料库不仅规模要大得多(通过全网抓取),而且还采用了复杂得多的过滤技术(例如,通过训练分类器来预测哪些数据能够在经验上提升模型性能)。

结果解读 (Interpreting the Results)

对我们结果的一种天真解读是:2019–2024 年期间(预训练时代)的大部分 AI 进展实际上只是更好数据工程(提取、 curation 等)的结果,而这一时期的所有模型工作远没有那么重要。

但这很可能是对模型改进价值的错误理解。它们的主要贡献不一定是计算效率——即用更少的 FLOPs 达到相同的性能。相反,它们的主营贡献是让更大规模的计算变得可用。随着参数量、上下文长度、训练持续时间和集群规模的扩大,各种问题极易发生(梯度爆炸或消失、内存和带宽耗尽、训练变得慢得无法进行)。

大部分模型研究实际上都在消除或推迟这些扩展的限制。许多最重要的创新,如混合专家模型(MoEs)、稀疏注意力变体、稳定性创新(规范放置、初始化等)以及系统/内核级优化(如 FlashAttention),都属于这一类别。

数据缩放:小模型与前沿模型 (Data Scaling: Small Models vs. Frontier Models)

我们在这里研究的数据改进对更大的模型可能并不那么重要。小模型(如我们训练的模型)从数据质量改进中获得的收益显著,因为它们的容量有限,你必须非常谨慎地对待塞给它们的内容。

然而,大模型拥有如此庞大的过剩容量,以至于你可能只想尽可能多地塞进去各种东西,哪怕里面大部分都是垃圾,随机梯度下降的魔力也会将信号从噪声中分离出来。如果你选择进行激进的过滤,你将不得不做几十个 epoch,经验表明,这会带来比单纯降低平均质量但扩大数据集更差的性能。事实上,考虑到前沿模型为了最小化用于强化学习(RL)和部署的推理计算,其训练量往往比 Chinchilla 最优超训多达 100 倍,此时激进的数据策展(curation)甚至会更有害。

一个类比: 想象一下帆船和集装箱货船之间的区别。集装箱货船不一定跑得更快,但它能运载数千吨货物(类似于数百万亿 token 的预训练数据),并且不会被波涛汹涌的水面打翻(类似于在数十万个 GPU 上进行稳定训练)。

既然我们现在有了容量更大、更坚固的集装箱货船,我们就不必为精确装载船上的每一件货物而烦恼——我们可以把任何稍微有点合理用途的东西都装进去。然而,对于 2019 年那些脆弱的小帆船,你必须极其小心,只能承载最有价值的货物。

“数据墙”与未来展望 (The "Data Wall" and Future Outlook)

从预训练进展的本质就是往这艘船上装载更多货物的角度来看,我们是否正在耗尽货物?这是一个关于数据墙以及合成数据在多大程度上帮助我们跃过数据墙的问题。合成数据显然在各大实验室中被广泛使用,而我们完全没有研究它是否能在不损害模型性能的情况下有效扩展数据语料库。如果收益有限,那么预训练进展的主要驱动力将会停滞,因为我们无法制造出更多的互联网,而且你对固定数据集的精细策展也是有限度的。需要澄清的是,我们并没有任何确凿的理由认为会这样。但鉴于数据在推动预训练进展方面显得如此重要,这似乎是一个至关重要需要研究的问题。

Ryan Greenblatt 指出,预训练数据语料库的许多历史改进看起来就像是自动化研究人员能够直接通过实验测试的进展——例如,运行基于不同数据训练的消融实验并观察模型表现。因此,这与我们的结果完全兼容:一旦我们实现了 AI 研发的自动化,自 2019 年以来推动预训练的数据进展可能会大大加速。

我们想澄清的是,孤立的预训练进展是会加速还是减速,其实并不是整体 AI 进展的最重要问题,因为过去两年中的许多增益实际上都来自于强化学习(RL)。

未来研究方向 (Future Research Directions)

以下是我们认为非常酷且需要回答的重要未来研究方向:

  1. 在更大的规模上运行此实验,以了解数据改进或模型改进是否对规模更具依赖性(从而在前沿领域更具影响力)。
  2. 衡量新的高质量数据对预训练和后训练的边际价值,具体通过最终能力来衡量。
  3. 研究合成数据的实际效果。一个具体的问题:如果你有一个少量的高质量数据语料库,通过合成数据生成来放大它,与仅仅在上面训练多个 epoch 相比,效果好多少?
  4. 弄清楚实验室在数据经纪人、环境生产者等方面的支出,相对于在计算和研究人员身上的支出,所暗示的数据价值。

我们希望探讨数据在推动 AI 进展中扮演了什么角色。探索这个问题还有很多其他方法,其中一些可能比我们的方法更巧妙、更具信息量。而且我们的实验也是在一个极小的规模下完成的。我们坚决认为,我们可能遗漏了一些东西——我们渴望听到其他人将如何研究这个问题,也更期待看到他们的研究结果!

特别感谢 Charlie O’Neill 提供的许多有益讨论。


附录:方法论 (Appendix: Methodology)

我们在这些不同的数据语料库上,从头开始对这些模型配方进行了预训练,使用了不同的计算预算和多个独立的随机种子[^6]。我们的计算预算为:\(1\text{e}17\)\(3.16\text{e}17\)\(1\text{e}18\)\(3.16\text{e}18\)\(1\text{e}19\) FLOPs。计算核算的常规约定是使用名义计算量 \(C = 6ND\)(其中 \(N = \text{非嵌入参数数量}\)\(D = \text{数据的 token 数量}\))。

在每个计算预算下,我们改变参数数量(从而改变训练的 token 数量),以确定每种训练配方 \(\times\) 语料库组合的计算最优组合。我们使用语料库上的留存损失(held-out loss)来确定这个计算最优解。然后,我们可以获得每个组合的下游性能计算缩放曲线,最终从中提取出我们的计算乘数。

我们在每次运行中强制使用共享的 tokenizer 和上下文长度:GPT-2 BPE(tiktoken,50,257 词表)以及 \(T=2048\)\(\text{batch} = 262,144\) tokens。

我们训练运行的最终能力高度依赖于超参数。显然,不可能遍历所有可能的超参数集!我们尽可能对此进行控制,并将峰值学习率视为最重要的超参数。

一些算法版本确实提供了关于峰值学习率应如何调整的规范(作为其他相关变量(如模型大小、数据预算、批大小等)的函数)。这些为我们认为的最优学习率提供了很好的先验。

我们首先在 5 个锚点(3 种不同的模型大小和 2 种不同的 \(D/N\) 比率)上对学习率进行了扫描。我们确定了这些锚点的最优学习率,并拟合出了最优学习率参数化形式。

除 OLMo-2 外,对于所有模型配方,我们拟合出一个共同的指数 \(a\)\(b\),以及一个模型特定的 \(\text{lr}_0\). 对于 OLMo-2,我们根据模型配方使用规定的最优学习率。我们对 OLMo-2 这样做是因为 Ai2 作为配方的一部分发布了小模型梯队,指定了在我们正在研究的规模下的最优超参数。我们还验证了在 \(3.16\text{e}18\) FLOPs 的计算最优解点上,我们的生产学习率处于或接近最优状态。


主要技术结果与观察 (Main Technical Results & Observations)

解释我们图表中的异常现象

  1. NeoX 的性能: NeoX 在 \(1\text{e}19\) 下的表现比 GPT-2 差(尽管它在 \(1\text{e}17\)\(3.16\text{e}18\) 范围内表现更好)。这可能是由于 OLMES 评估中的噪声引起的。我们还注意到,在 FineWeb-Edu 语料库的留存预训练损失上,NeoX 的表现优于 GPT-2。
  2. The Pile: The Pile 的表现似乎比 OpenWebText 差得多。这并不令人意外,因为 The Pile 的主要改进在于数据语料库的多样性而非过滤。它包含一个包含 22 个来源的策展混合数据集,包括 PubMed 和 arXiv 论文、GitHub 代码、法律意见、专利和议会记录。对于其中的许多 token 来说,向 OLMES(主要是英语网络散文 MCQ)的跨域迁移可能微乎其微,从而导致较低的计算效率。我们注意到,由于其规模更大,我们预计在更大规模下,The Pile 最终应该会比(非常小的)OpenWebText 更好。
  3. 外推法: 同样值得注意的是,NeoX 和 The Pile 的计算乘数是通过外推法获得的,这引入了进一步的潜在误差。

计算乘数和误差条的计算方式

  • 计算缩放曲线上的每个点都是通过多次独立种子的训练运行计算得出的。那里的误差条是这些种子中 OLMES 评估的标准差。
  • 考虑我们的参考模型或数据语料库在某个计算水平下的某个给定参考性能水平。
  • 然后,我们通过找到我们的候选模型或语料库的计算缩放曲线的最左侧点来计算计算乘数,该点首次达到了该参考性能水平。参考所需的计算量与我们的候选所需的计算量之比就是候选的计算乘数。
  • 计算乘数上的误差条是从整个估计管道的参数化自助法(parametric bootstrap)中获得的,并且是 1 个标准差区间。
  • 我们确实想强调,我们预计模型配方的计算乘数中的实际不确定性高于我们的误差条所示。这是由于我们进行的超参数调优范围有限引入了额外的不确定性,并且最终能力或留存损失可能对峰值学习率/批大小等的确切选择非常敏感。

同样重要的是要注意,我们的消融实验不一定捕捉到计算效率提升的全部范围,原因有很多。事实上,从 2019 年到 2025 年,我们观察到模型侧的年同比计算效率提升(CEG)为 1.24x [1.19, 1.29],数据侧为 1.51x [1.45, 1.57]。联合测量时,我们观察到 1.57x 的年同比 CEG [1.49, 1.65][^7]。这确实远低于 Anson Ho 等人估计的每年 3 倍的平均值,原因如下:

  1. 许多收益可能是规模依赖的,或者在更长的上下文中特别重要,而我们的运行规模太小,无法实现许多收益(例如,OLMo-2 的层和 QK 归一化,NeoX 中的并行注意力 + MLP 块)。
  2. 推理效率优化(如 Llama-3 的 GQA,这是一种 KV 缓存优化)在我们的研究中并未显示为计算乘数。我们也没有研究 tokenizer 的改进。
  3. 我们获得的计算乘数对我们为每年选择的模型配方或数据语料库非常敏感。我们选择了我们认为是具有代表性的模型配方或数据语料库,但这绝不意味着这些就是每年最好的。
  4. 我们正在查看相对于 OLMES 基准而非困惑度(perplexity)指标的计算乘数。不同的基准(如编程或问题求解)可能会奖励非常不同的数据工程方法。

我们还注意到,我们没有研究其他数据侧的改进,例如从新来源收集更多高质量数据、人类专家生成的数据、合成数据生成方法等。我们研究所的大多数语料库都是对同一个 Common Crawl 的策展(子集),而不是扩大可用数据集。这显然是对有限存量的消耗——我们推动这个杠杆的程度是有限的。

模型配方和数据语料库收益的独立性

为了确定模型配方和数据语料库的收益有多大独立性,我们分析了 \(3.16\text{e}18\) FLOPs 下的 OLMES 分数网格。\(\text{OLMES score} = \text{mean} + \text{model effect} + \text{data effect}\) 的线性回归产生了一个 0.88\(R^2\)。这意味着 OLMES 分数中 88% 的方差可以由模型和数据改进的相加效应来解释,只有约 12% 由交互/高阶项和评估噪声解释。这暗示复杂的模型-数据交互作用相对较小。


[^1]: Anson Ho 等人 估计软件效率的提升(在预训练中)为每年 3 倍(95% 置信区间:1.5 倍到 64 倍)。正如 Ho 在此博客中所述,“大多数软件进展实际上可能是由于数据质量的提高”以及“仅仅从扩大一小部分依赖规模的算法变化”。 [^2]: 我们使用 \(C = 6ND\) 名义约定来核算计算量。 [^3]: 2019 年的模型配方是 GPT-2,2025 年的模型配方是 OLMo-2。2019 年的数据语料库是 OpenWebText,2025 年的数据语料库是 UltraFineWeb。 [^4]: 我们对 GPT-3 的实现在 The Pile 上遇到了一些训练不稳定(梯度尖峰)的情况。 [^5]: 这些包括:优化器改进、预热 + 衰减调度、用 RoPE 代替学习到的绝对位置、RMSNorm + SwiGLU 门控 MLP、范数重排序、QK-norm、Z-loss 正则化和更干净的初始化。 [^6]: 对于计算缩放图,我们每个至少使用 3 个种子。对于 \(3.16\text{e}18\) 预算下模型配方和数据语料库组合的 \(7 \times 7\) 网格,我们每个只使用 1 个种子。 [^7]: 1.57x 的年同比乘数是使用从 2019 年模型和语料库到 2025 年模型和语料库的联合改进计算得出的,而不是 1.24x 模型侧改进和 1.51x 数据侧改进的乘积。