# Dwarkesh Patel 研究:预训练进步主要来自数据改进
- 来源:Dwarkesh Patel:Podcast & Blog(RSS)
- 作者:Dwarkesh Patel
- 发布时间:2026-09-09 00:10
- AIHOT 分数:60
- AIHOT 标记:精选
- AIHOT 链接:https://aihot.news/items/cmtsx0wm4041jrob5liwjypsq
- 原文链接:https://www.dwarkesh.com/p/pretraining-progress-is-mostly-data
## 精选理由
文章用小规模对照实验量化了 2019 到 2025 年预训练进步中数据与模型改进各自的算力效率贡献,并讨论结论对更大规模模型的适用边界。
## AI 摘要
Dwarkesh Patel 发布实验分析,在最高 1e19 FLOPs 的算力预算下训练 2019 至 2025 年各年度代表性模型配方与数据语料,发现数据改进带来 12.0x 算力效率提升,模型改进为 3.7x,数据贡献约为模型的 3.24 倍。
## 正文
过去几年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 个 token(GPT-2 的训练数据主要就是它)。到2025年,像 UltraFineWeb 这样的开源数据语料库不仅规模大得多(通过抓取整个互联网),而且采用了更精细的过滤方法(例如,训练一个分类器来预测哪些数据能在经验上提升模型性能)。
对我们结果的一种朴素解读是,2019-2024年(预训练时代)的大部分 AI 进步其实只是更好的数据工程(提取、清洗等),而那段时期所有的模型工作都远没有那么重要。
但这可能是思考模型改进价值的错误方式。它们的主要贡献未必是计算效率——即用更少的 FLOPs 达到同样的性能。相反,它们的贡献在于首先让更大规模的计算量变得可用。随着参数量、上下文长度、运行时长和集群规模不断扩展,各种问题都容易冒出来(梯度爆炸或消失、内存和带宽耗尽、训练慢到不可行)。大量模型研究其实就是在消除或推迟这些制约扩展的瓶颈。许多最重要的创新,如 MoE、稀疏注意力变体、稳定性创新(归一化位置、初始化等),以及像 FlashAttention 这样的系统/内核级优化,都属于这一类。
我们在这里研究的数据改进,对规模更大的模型而言可能没那么重要。小模型(比如我们训练的那些)能从数据质量提升中获得显著收益,因为它们的容量有限,所以你必须非常小心地选择往里面塞什么。而大模型拥有大量冗余容量,也许你只想尽可能多地灌入数据,哪怕大部分是垃圾,随机梯度下降的魔力也会把信号从噪声中分离出来。如果你选择激进地过滤,就得跑几十个 epoch,而经验表明这比降低平均质量、扩大数据集的做法表现更差。事实上,考虑到前沿模型为了最小化 RL 和部署所用的推理算力,其过度训练程度相对 Chinchilla 最优值高达 100 倍,激进的数据筛选反而危害更大。
打个比方,这就像帆船和集装箱货轮的区别——货轮不一定更快,但它能装载成千上万吨货物(相当于预训练数据中数十万亿的 token),而且不会被汹涌的海浪掀翻(相当于在数十万块 GPU 上稳定训练)。
如今我们有了更大、更坚固的集装箱货轮,就不必再为船上装什么而焦虑——只要任何东西沾点边、可能有用,就可以统统装上去。而 2019 年那些又小又脆弱的帆船,你就得极其小心,只装载最有价值的货物。
但如果说预训练进展的本质只是往这艘船上装载更多货物,那么我们是否正在耗尽货物?这是一个关于数据墙的问题,也关乎合成数据在多大程度上帮助我们跨越了这堵墙。合成数据显然已在各大实验室被广泛使用,而我们完全没有深入研究过它能否在不损害模型性能的情况下有效扩展数据语料库。如果收益有限,那么预训练进展的主要驱动力将会停滞,因为我们不会产生更多的互联网数据,而固定规模的数据集能做的策展工作也是有限的。需要说明的是,我们目前没有积极理由认为情况会如此。但鉴于数据在推动预训练进展方面似乎如此重要,这似乎是一个值得深入研究的关键问题。
Ryan Greenblatt 指出,预训练数据语料库历史上的许多改进,看起来都像是自动化研究人员能够直接通过实证检验的那类进展——例如,在不同数据上训练并运行消融实验,观察模型表现如何。因此,这与我们的结果完全兼容:如果我们将 AI 研发自动化,那么自 2019 年以来推动预训练进展的数据改进,可能会大幅加速。
我们要澄清一点:单就预训练而言,其进展是会加速还是放缓,其实并不是关乎整体 AI 进展的最重要问题,因为过去两年的大量收益都来自强化学习。
未来研究方向
以下是我们认为非常值得探索的未来研究方向,以及需要回答的重要问题:
你可以在更大规模上运行这个实验,以判断数据或模型改进是否更依赖于规模(从而在前沿领域产生大得多的影响)。
以最终能力来衡量,新颖的高质量数据对预训练和后训练各自的边际价值是多少?
我们想大致了解合成数据的实际效果如何。一个值得探究的具体问题是:如果你有一小批高质量数据,通过合成数据生成来放大它,相对于直接在其上训练多个 epoch,效果会好多少?
你可以通过实验室在数据中介、环境生产者等方面的支出,相对于其在算力和研究人员上的支出来推断数据的隐含价值。
我们想探究数据在推动 AI 进步中扮演了什么角色。探究这个问题还有很多其他方式,有些可能比我们的更巧妙、更有信息量。而且我们的实验也是在极小的规模上进行的。我们确实认为有可能遗漏了某些东西——我们很期待听到其他人会如何研究这个问题,最好也能看到他们的结果!
特别感谢 Charlie O’Neill 提供的多次有益讨论。
附录:方法论
我们在不同的数据语料库上,以不同的计算预算和多个独立随机种子6,从头开始预训练这些模型配方。我们的计算预算为:1e17、3.16e17、1e18、3.16e18 和 1e19 FLOPs。计算统计约定采用名义计算量 C = 6ND(N = 非嵌入参数数量,D = 数据 token 数量)。
在每个计算预算下,我们改变参数数量(从而改变训练所用的 token 数量),以确定每种训练配方 × 语料库组合的计算最优配比。我们使用语料库上的留出损失来确定这一计算最优点。由此,我们可以获得每种组合下游性能的计算扩展曲线,并最终从中提取出我们的计算乘数。
我们在所有运行中强制使用统一的 tokenizer 和上下文长度:GPT-2 BPE(tiktoken,50,257 词表)和 T=2048,batch = 262,144 个 token。
我们训练运行的最终能力高度依赖于超参数。显然,不可能对所有可能的超参数组合进行穷举扫描(超参数调优确实是一门精细的艺术!)。我们尽可能对此加以控制,并将峰值学习率视为最重要的超参数。
某些算法版本确实提供了峰值学习率应调至何值的规范(作为模型规模、数据预算、batch 大小等相关变量的函数)。这些为我们判断最优学习率提供了良好的先验依据。
我们首先在 5 个锚点上扫描学习率——涵盖 3 种不同模型规模和 2 种不同的 D/N 比值。我们确定这些锚点的最优学习率,并拟合出一个最优学习率的参数化形式。
对于除 OLMo-2 之外的所有模型配方,我们拟合一个共同的指数 a 和 b,以及各模型专属的 lr₀。对于 OLMo-2,我们按照其模型配方采用规定的最优学习率。我们对 OLMo-2 这样做的原因是,Ai2 在配方中发布了小规模模型的阶梯式配置,其中指定了我们所研究规模下的最优超参数。我们还在 3.16e18 FLOPs 的计算最优点上验证了我们的生产学习率处于或接近最优水平。
主要技术成果
解释我们图表中的一些异常现象
我们观察到,正如预期的那样,在模型维度和数据维度上,计算效率都随时间总体呈提升趋势。我们观察到的一些离群点如下:
NeoX 在 1e19 规模下表现不如 GPT-2(尽管它在 1e17 到 3.16e18 的范围内表现更好)。这可能源于 OLMES 评测中的噪声。我们还注意到,在 FineWeb-Edu 语料库的留出预训练损失上,NeoX 的表现优于 GPT-2。
The Pile 的表现似乎比 OpenWebText 差得多。这并不令人意外,因为 The Pile 的主要改进在于数据语料库的多样性,而非过滤。它包含一个精心策划的 22 个来源的混合体,包括 PubMed 和 arXiv 论文、GitHub 代码、法律意见书、专利以及议会会议记录。对于其中许多 token 而言,向 OLMES(英文网络散文式多选题)的跨领域迁移可能微乎其微,从而导致计算效率较低。我们注意到,由于 The Pile 规模更大,我们预计在更大规模下,它最终应该会优于(规模非常小的)OpenWebText。
同样值得注意的是,NeoX 和 The Pile 的计算乘数是通过外推法获得的,这引入了进一步的潜在误差。
计算乘数是如何计算的,以及它们的误差棒
计算扩展曲线上的每个点都由多次独立种子的训练运行计算得出。那里的误差棒是这些种子上 OLMES 评估的标准差。
考虑我们参考模型或数据语料库在某个计算水平下达到的某个给定参考性能水平。
然后,我们通过找到候选模型或语料库计算扩展曲线上首次达到该参考性能水平的最左侧点来计算计算乘数。参考所需的计算量与候选所需的计算量之比,即为候选的计算乘数。
计算倍率上的误差条通过对整个估算流程进行参数自助法(parametric bootstrap)获得,为 1 个标准差区间。
我们想特别指出,我们预计模型配方中计算倍率的实际不确定性会高于误差条所显示的范围。这是因为我们进行的超参数调优范围有限,会引入额外的不确定性,而且最终能力或留出法损失可能对峰值学习率/批大小等的具体选择相当敏感。
同样重要的是要指出,我们的消融实验有很多原因导致其未必能完全覆盖计算效率提升的全部范围。事实上,从 2019 年到 2025 年,我们观察到模型侧的计算效率提升(CEG)逐年为 1.24 倍 [1.19, 1.29],数据侧为 1.51 倍 [1.45, 1.57]。联合衡量时,我们观察到逐年 CEG 为 1.57 倍 [1.49, 1.65]7。这确实远低于 Anson Ho 等人的平均估计值——逐年 3 倍,原因如下:
许多提升可能依赖于规模,或者可能在更长上下文下尤为重要,而我们运行的规模太小,无法实现其中许多提升。
例如,OLMo-2 的层归一化和 QK 归一化、NeoX 中的并行注意力 + MLP 块
推理效率优化(例如 LLama-3 的 GQA,这是一种 KV cache 优化)在我们的研究中并不体现为算力倍增系数。我们也没有研究 tokenizer 的改进。
我们得到的算力倍增系数对每年所选用的模型配方或数据语料相当敏感。我们选择了我们认为具有 代表性的模型配方或数据语料。但我们绝非穷尽性地断定这些就是每年的最佳选择。
我们考察的是相对于 OLMES 基准(该基准整合了 10 种相对简单的任务类型)的算力倍增系数,而不是针对某个困惑度指标的算力倍增系数。如果我们考察其他基准(例如特定于编码或问题求解的基准),得到的数字也会非常不同,因为这些基准很可能会奖励截然不同的数据工程方法。
我们还想指出,我们没有研究其他数据侧的改进,例如从新来源收集更高质量的数据、人类专家生成的数据、合成数据生成方法等。我们研究的大多数语料都是对同一个 Common Crawl 的精选(子集),而不是扩展可用数据集的规模。这显然是在消耗有限的存量——这个杠杆我们能推动的空间是有限的。
模型配方与数据语料带来的收益相互独立
这是我们为确定模型配方与数据语料带来的收益在多大程度上相互独立而进行的调查。我们考察了在 3.16e18 FLOPs 计算量下 OLMES 得分的网格。对 OLMES 得分 = 均值 + 模型效应 + 数据效应进行线性回归,得到的 R 平方为 0.88,这意味着 OLMES 得分中 88% 的方差可以由模型改进与数据改进的加性效应来解释,只有约 12% 的方差归因于交互项或高阶项以及评估噪声。这暗示复杂的模型-数据交互(即利用某种模型改进依赖于某种特定的数据工程,反之亦然)相对次要。
Anson Ho 等人估计(预训练中的)软件效率改进约为每年 3 倍(95% 置信区间:1.5 倍至 64 倍)。正如 Ho 在这篇博客中所提到的,“大多数软件进步实际上可能归因于数据质量的改进”,以及“源于仅扩展少数几个随规模变化的算法变革”。
我们采用 C = 6ND 的名义约定来计算算力。
2019 年的模型配方是 GPT-2,2025 年的模型配方是 OLMo-2。2019 年的数据语料是 OpenWebText,2025 年的数据语料是 UltraFineWeb。
我们对 GPT3 的实现(在 Pile 上)遇到了一些训练不稳定的情况(梯度尖峰)。
这些包括:优化器改进、预热与衰减调度、用 RoPE 取代学习绝对位置、RMSNorm + SwiGLU 门控 MLP、归一化重排、QK-norm、Z-loss 正则化以及更干净的初始化。
对于计算规模扩展图,我们每种配置至少使用 3 个随机种子。在 3.16e18 计算预算下,模型配方与数据语料的 7x7 组合网格中,每种组合仅使用 1 个随机种子。
1.57 倍的同比乘数是根据从 2019 年模型与语料到 2025 年模型与语料的联合改进计算得出的,而非 1.24 倍模型侧改进与 1.51 倍数据侧改进的乘积。