跳到正文
原文
Dwarkesh Podcast(AI 人物访谈)· Dwarkesh Patel·· 29 天前精选AI 评分60

预训练效率进步更多来自数据:2019到2025年数据贡献为模型的3.24倍

Pretraining progress is mostly coming from data

AI 导读

Dwarkesh Podcast 发文公布一项对照实验结果:在1e19 FLOPs预算下,2019到2025年预训练算力效率增益中数据改进贡献12.0x、模型改进贡献3.7x,数据侧是模型侧的3.24倍。

推荐理由

研究用逐年模型配方与数据语料的交叉实验,拆开了预训练效率提升的来源,也说明了小规模结论的适用边界。

正文 · AI 翻译

过去几年我们所看到的AI 领域的快速进展中1,有多少来自数据的改进而非模型的改进?这个问题的答案对前沿实验室的经济学以及未来进展的速度都有着重大影响。

我们在相对较小的规模上、并且专门针对预训练,于 2019 年至 2025 年间研究了这个问题。在这些年份中的每一年,都有一份新的开源模型配方发布,其中固化了当年已公开的算法改进(例如架构、优化器、初始化、学习率调度、超参数等方面的改进)。同样在这些年份中的每一年,也都有一个新的公开数据语料库出现(由更广泛的抓取以及新的整理/抽取/过滤技术产生)。

我们在不同的训练算力规模(最高 1e19 FLOPs)上训练了这些具有年度代表性的模型配方与数据语料库的各种组合2。

显然,我们不能用固定数据集上的交叉熵损失来比较这些不同的模型,因为我们所改变的正是它们的训练数据集。因此,我们转而通过 OLMES 评测来评估这些模型的最终能力(该评测汇总了 10 个相对容易的基准测试,多为选择题问答)。不幸的是,评估最终能力而非预训练损失会给我们的结果带来一些噪声,正如你将在下图中看到的那样,不过我们通过运行多个随机种子来努力获得更干净的界限。

我们发现,从 2019 年到 2025 年,在 1e19 FLOPs 的算力预算下,来自数据改进而非模型改进的计算效率增益多了 3.24 倍(数据为 12.0 倍,模型为 3.7 倍)3。

这里有一张网格图,展示了在 3.16e18 FLOPs 下,我们训练的模型在所测试的最终能力上,相比 2019 年的数据 + 架构基线好了多少4。

我们发现,数据改进与模型改进带来的增益基本相互独立,不会相互作用(也就是说,实现某种模型改进的收益并不需要特定的训练数据集,反之亦然)。OLMES 分数中 88% 的方差可以用模型改进与数据改进的加性效应来解释(使用线性模型)。

讨论

作为背景,让我们简要总结一下 2019 年至 2025 年间数据侧和模型侧分别发生了哪些变化。

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

在数据方面,我们 2019 年从 OpenWebText 开始,它只包含 Reddit 上获得足够点赞的网页链接,随后经过去重和过滤,总量仅约 9B tokens(这大体上就是 GPT-2 的训练数据)。到 2025 年,像 UltraFineWeb 这样的开源数据语料库不仅规模大得多(通过对整个互联网进行抓取),还采用了复杂得多的过滤手段(例如训练分类器来预测哪些数据在实践中能提升模型性能)。

对我们结果的一个朴素解读是:2019-2024 年(预训练时代)的大部分 AI 进步其实只是更好的数据工程(提取、整理等),而那段时期所有的模型工作远没有那么重要。

但这大概不是思考模型改进价值的正确方式。它们的主要贡献不一定是计算效率——即用更少的 FLOPs 达到同样的性能——而在于让更大规模的计算从一开始变得可用。随着参数量、上下文长度、训练时长和集群规模的扩大,各种各样的问题都容易出现(梯度爆炸或消失、内存和带宽耗尽、训练慢到不可行)。模型研究的很大一部分内容就是消除或推迟这些扩展的限制。许多最重要的创新,比如 MoE、稀疏注意力变体、稳定性改进(归一化位置、初始化等),以及像 FlashAttention 这样的系统/内核级优化,都属于这一类。

我们在这里研究的数据改进对于更大的模型可能没那么重要。小模型(比如我们训练的那种)能从数据质量改进中获得显著收益,因为它们没有那么大的容量,所以你必须非常小心往里面塞了什么。而大模型有大量过剩的容量,也许你只想往里塞进尽可能多的东西,即使大部分是垃圾,随机梯度下降的魔力也会把信号从噪声中分离出来。如果你选择激进地过滤数据,就必须做几十个 epoch,而这在实践中带来的性能更差,不如使用一个平均质量更低但规模更大的数据集。事实上,激进的数据筛选甚至更有害,因为考虑到前沿模型相对于 Chinchilla 最优值最多被过度训练了 100 倍,以最小化 RL 和部署所用的推理计算量。

一个类比可能是帆船与集装箱船的区别——集装箱船不一定更快,但它可以拖运成千上万吨货物(类似于数百万亿 token 的预训练数据),而且不会被波涛汹涌的海面掀翻(类似于在数十万块 GPU 上稳定训练)。

既然我们有了更大更结实的集装箱船,就不必再为到底装载什么而忧心——我们可以把一切哪怕只是稍微且貌似有用的东西都装满。而对于 2019 年那些脆弱的小帆船,你必须极其小心,只运载最有价值的货物。

但就预训练进步的本质不过是往这艘船上装载更多货物而言,我们是否快没有货物可装了?这是一个关于数据墙的问题,也关乎合成数据在帮我们跨越这道墙方面究竟有多有效。合成数据显然已被各家实验室广泛使用,而我们完全没有考察过它能否在不损害模型性能的前提下有效扩大数据语料。如果收益有限,那么预训练进步的主要驱动力将会停滞,因为我们无法生成更多的互联网内容,而对一整套固定数据的挖掘总归有其上限。需要说明的是,我们并没有任何现有理由这样认为。但鉴于数据看似对推动预训练进步如此重要,这似乎是一个值得深入考察的关键问题。

Ryan Greenblatt 指出,预训练数据语料的许多历史性改进,看起来正属于自动化研究员可以直接通过实验验证的那类进步——例如,用不同数据做消融实验训练,再观察模型表现。因此,我们的研究结果与这样一种可能完全兼容:自 2019 年以来推动预训练进步的数据改进,一旦我们实现 AI 研发的自动化,可能会大幅提速。

我们想澄清的是,预训练进步本身究竟会加速还是放缓,并不是关乎 AI 整体进步的最重要问题,因为过去两年中的诸多收益其实来自 RL。

未来研究

以下是我们认为非常酷、也是值得回答的重要问题的一些未来研究方向:

  1. 你可以在更大规模上运行这个实验,看看数据改进和模型改进哪一个更依赖于规模(因此在前沿层面影响要大得多)

  2. 以最终能力来衡量,新颖的高质量数据对预训练和后训练的边际价值分别是多少?

  3. 我们想大致了解合成数据到底有多有效。一个具体的研究问题是这样的:如果你有一小批高质量数据,通过合成数据生成来放大它,相比 直接在其上训练多个 epoch,效果能好多少?

  4. 你还可以通过实验室在数据中介、环境生成方等方面的支出,相对于其在算力和研究人员上的支出来推算数据的隐含价值。

我们希望考察数据在推动 AI 进步中扮演了怎样的角色。人们可以用许多其他方式来探究这个问题,其中有些可能比我们的方法更巧妙、更有启发性。而且即便是我们的实验,也是在极小的规模上完成的。我们完全认为有可能遗漏了某些东西——我们很乐意听到他人会如何研究这个问题,理想情况下也能看到他们的结果!

尤其感谢 Charlie O’Neill 的诸多有益讨论。


附录:方法

我们从零开始在这些不同的数据语料上预训练这些模型配方,在不同的算力预算下,使用多个独立随机种子6。我们的算力预算为:1e17、3.16e17、1e18、3.16e18 和 1e19 FLOPs。算力核算惯例是使用标称算力 C = 6ND(N = 非嵌入参数数量,D = 数据 token 数)。

在每个算力预算下,我们改变参数数量(从而改变训练所用的 token 数量),以确定每种训练配方与语料组合的算力最优配比。我们使用该语料上的留出损失来确定这一算力最优点。随后我们可以得到每种组合下游性能的算力扩展曲线,并由此最终提取出我们的算力乘数。

我们在所有运行中强制使用统一的分词器和上下文长度:GPT-2 BPE(tiktoken,词表大小 50,257)以及 T=2048,批量为 262,144 个 token。

我们训练运行的最终能力高度依赖于超参数。显然,不可能遍历所有可能的超参数组合(超参数调优确实是一门精细的艺术)!我们尽可能地控制这一点,并将峰值学习率视为最重要的超参数。

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

我们首先在 5 个锚点上扫描学习率——3 种不同的模型规模和 2 种不同的 D/N 比例。我们确定这些锚点的最优学习率,并拟合出最优学习率的参数化形式

对于除 OLMo-2 之外的所有模型配方,我们拟合出共同的指数 a 和 b,以及模型专属的 lr₀。对于 OLMo-2,我们按照模型配方使用规定的最优学习率。我们对 OLMo-2 这样做的原因是,Ai2 作为配方的一部分发布了小模型阶梯,其中指定了我们所研究规模上的最优超参数。我们还验证了,在 3.16e18 FLOPs 的算力最优点上,我们的生产学习率处于或接近最优。

主要技术结果

解释我们图表中的某些异常

正如预期,我们观察到模型轴和数据轴上的算力效率随时间总体呈上升趋势。我们观察到的一些异常值:

  1. NeoX 在 1e19 上的表现比 GPT-2 差(尽管在 1e17 到 3.16e18 范围内它表现更好)。这可能是 OLMES 评估中的噪声所致。我们还注意到,在 FineWeb-Edu 语料的留出预训练损失上,NeoX 的表现优于 GPT-2。

  2. The Pile 似乎比 OpenWebText 差很多。这并不令人意外,因为 Pile 的主要改进在于数据语料的多样性而非过滤。它包含一个精选的 22 来源混合,其中包括 PubMed 和 arXiv 论文、GitHub 代码、法律意见、专利和议会记录。这些 token 中有许多对 OLMES(英语网络散文多选题)的跨领域迁移可能微乎其微,从而导致算力效率较低。我们指出,由于其规模更大,我们预计 Pile 最终在更大规模上会优于(非常小的)OpenWebText。

  3. 还值得一提的是,NeoX 和 The Pile 的算力乘数是通过外推得到的,这会引入进一步的潜在误差。

算力乘数是如何计算的,以及它们的误差棒

  • 计算扩展曲线上的每个点都是由多个独立随机种子的训练运行计算得出的。那里的误差棒是 OLMES 评估在这些种子上的标准差。

  • 考虑我们的参考模型或数据集在某个计算量水平上的某个给定参考性能水平。

  • 然后我们通过找到候选模型或数据集的计算扩展曲线中最左侧首次达到该参考性能水平的点,来计算计算量倍数。参考模型所需计算量与我们的候选者所需计算量之比,就是候选者的计算量倍数

  • 计算量倍数上的误差棒来自对整个估计流程的参数化自助法(parametric bootstrap),是 1 个标准差的区间

  • 我们想强调的是,我们预计模型配方的计算量倍数的实际不确定性会高于我们的误差棒所显示的水平。这是因为我们进行的超参数调优范围有限,由此引入了额外的不确定性,而最终能力或留出损失(held-out loss)很可能对峰值学习率/批大小等的确切选择相当敏感。

同样需要注意的是,我们的消融实验不一定涵盖计算效率增益的全部范围,原因有很多。事实上,从 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 等人 3x 同比的平均估计值,原因如下:

  1. 许多增益可能是依赖规模的,或者在更长上下文时尤其重要,而我们所处的规模太小,无法实现许多这类增益。

    1. 例如,OLMo-2 的层归一化和 QK 归一化,NeoX 中的并行注意力 + MLP 块

  2. 推理效率优化(例如 LLama-3 的 GQA,这是一种 KV 缓存优化)在我们的研究中不会体现为计算量倍数。我们也没有研究分词器(tokenizer)的改进。

  3. 我们得到的计算量倍数对我们每年所选的模型配方或数据集相当敏感。我们选择的是我们认为具有代表性的模型配方或数据集。但我们绝没有详尽地断定这些就是各年份最好的。

  4. 我们考察的是相对于 OLMES 基准(它组合了 10 种相对简单的任务类型)的计算量倍数,而不是达到某个困惑度(perplexity)指标所需的计算量倍数。如果我们考察其他基准(比如说,专门针对编程或问题求解的基准),我们也会得到看起来非常不同的数字,而这些基准很可能会奖励非常不同的数据工程方法。

我们还想说明,我们并未考察其他数据层面的改进,例如从新来源收集更多高质量数据、人类专家生成的数据、合成数据生成方法等。我们考察的大多数语料库都是同一个 Common Crawl 的精选子集,而非扩展可用数据集。这显然是在消耗有限的存量——这个杠杆能推动的空间只有这么大。

增益与模型配方和数据语料的独立性

以下是我们为确定模型配方与数据语料各自带来的增益有多独立所作的分析。我们观察了 3.16e18 FLOPs 下的 OLMES 分数网格。对 OLMES 分数 = 均值 + 模型效应 + 数据效应 进行线性回归,得到的 R 平方为 0.88,这意味着 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

我们对 GPT3 的实现在 Pile 上遇到了一些训练不稳定问题(梯度尖峰)。

5

这些包括:优化器改进、warmup + decay 调度、用 RoPE 替代学习绝对位置、RMSNorm + SwiGLU 门控 MLP、归一化顺序调整、QK-norm、Z-loss 正则化以及更干净的初始化。

6

对于算力扩展图,我们每个设置至少使用 3 个随机种子。对于 3.16e18 预算下模型配方与数据语料组合的 7x7 网格,我们每个设置只使用了 1 个种子。

7

1.57 倍的同比乘数是根据 2019 年模型与语料到 2025 年模型与语料的联合改进计算的,而不是模型侧 1.24 倍改进与数据侧 1.51 倍改进的乘积。

来源:Dwarkesh Podcast(AI 人物访谈) · dwarkesh.com