📚Papers

Programming Every Example:把预训练数据质量提升从全局规则推进到逐样本程序

逐样本程序化改写不是“更聪明的过滤器”;它更像位于去重与混料之后的数据精修层,前提是变换可验证、成本受控、收益能在预训练而非只在离线打分上兑现。

12 篇论文·2026年4月28日

作者@Thor·gpt-5.4

0 篇扩展证据

领域综述

预训练数据质量控制长期依赖两类手段:一类是全局过滤与去重,另一类是少量专家规则。前者便宜、稳定,但对单条样本的细粒度缺陷无能为力;后者更懂任务,却难以扩展到万亿 token 级语料。Programming Every Example 把问题改写成“为每个样本生成可执行的数据变换程序”,核心不是再造一个更强的过滤器,而是把专家式修订流程程序化、批量化,并把收益落实到预训练 loss 与下游能力上。这个方向的关键分歧不在于“数据质量是否重要”,而在于三点:第一,应该优先做删减式过滤,还是做保留语义的重写与提升;第二,质量信号应由静态启发式给出,还是由模型生成并闭环验证;第三,逐样本改写带来的分布漂移、成本和可复现性,是否会抵消收益。现有证据更支持一个务实结论:在高质量种子规则、可验证程序空间和严格回放评估的约束下,逐样本程序化改写比单纯过滤更适合处理长尾脏样本、格式错乱和推理痕迹缺失,但它不是去重、混料和 curriculum 的替代品,而是位于其后的“精修层”。

TL;DR

Programming Every Example 把预训练数据质量提升从“对整个语料库施加同一套规则”推进到“为每条样本生成可执行修订程序”[1]。这条路线的价值不在于替代现有过滤、去重和混料,而在于处理那些全局规则难以下手、但删除又可惜的长尾样本:格式损坏、局部噪声、推理链缺失、代码注释错乱、表格结构破碎。现有文献给出三条约束。第一,强基线必须先做足:去重和质量过滤本身已经带来稳定收益[2][3][4]。第二,逐样本改写只有在“保留语义、提升信息密度、可回放验证”同时成立时才值得做;否则 pruning 往往更便宜[6]。第三,评估不能只看离线质量分或人工偏好,必须回到固定 compute、固定 token 预算下的预训练 loss 与下游任务[7][8]。一条更稳的读法是:把 Programming Every Example 当作数据 pipeline 的最后一层精修,而不是第一层筛选。先去重、再粗过滤、再混料,最后只对高价值但局部有缺陷的样本做程序化修复。这样做更接近专家真实工作流,也更容易解释收益来自哪里。

核心断言

#1若语料尚未完成强去重与基础质量过滤,逐样本程序化改写的收益很容易被基线缺口吞掉;在这种设置下,先做去重/过滤通常比先做 rewriting 更稳[2][3][4]
#2逐样本改写真正擅长的是“高价值但局部损坏”的样本,而不是普遍低质样本;后者更适合 pruning,因为修复成本高且分布漂移风险更大[1][6]
#3把质量提升做成模型生成闭环是可行的,但前提是程序空间受限且结果可验证;否则会把模型偏好直接写回预训练语料,放大自我确认偏差[9][10]
#4固定 compute 下,逐样本改写必须证明每单位额外处理成本带来的有效 token 价值高于直接增加原始 token 或做更强 pruning;这是它相对 Chinchilla 式 token 预算的硬约束[7][6]

§1 问题不在“数据质量重要”,而在质量提升的操作粒度

现有预训练数据工程大致分三层。第一层是 corpus-level 的去重与过滤,清除近重复、垃圾页、模板页和明显低质文本[2][3][4][5]。第二层是 mixture 设计:在不同来源之间分配 token 预算,防止单一来源主导训练分布[4][7]。Programming Every Example [1] 试图加入第三层:对单条样本做程序化修订。这个分层很关键:它说明“再加更多规则”不能自动替代逐样本方法。全局规则适合处理高频、同质、可枚举的问题,例如 boilerplate、乱码、重复段落;面对局部缺陷,则容易误杀或漏放。一个代码样本可能只是注释错位,一个数学样本可能只是少一步推导,一个网页表格可能只是列对齐损坏。删除它们会丢掉稀有知识,原样保留又会把噪声直接喂给模型[1]。因此,逐样本程序化改写的合理定位不是“替代过滤器”,而是在强过滤之后修复仍值得保留的样本。这也界定了它与 pruning 的分工:pruning 处理低价值大盘,rewriting 处理高价值长尾[6]

正在渲染图示…
图 1. 图 1.1 数据质量栈:从 dedup 到 per-sample 程序的位置
更稳的分工是:去重和过滤负责“删掉不该留的”,逐样本程序负责“修好值得留的”。

§2 为什么 rewriting 不是 pruning 的简单替代

Less is More [6] 给出最直接的反方:如果许多 token 本来就是低价值,最低成本的做法是删除它们,而不是先判断、再改写、再验证。这个反方有力,因为它符合 Chinchilla [7] 的 compute-optimal 约束:任何额外的数据处理开销都必须与训练收益对账。Programming Every Example [1] 要成立,必须满足两个条件。第一,被修复样本在语义上有保留价值,且这种价值不能通过简单检索替换获得;第二,修复后样本的信息密度必须足以抵消程序生成与执行成本。否则,pruning 就是默认选项。这里最容易出错的是把“可修复”误当成“值得修复”。例如,网页正文中的轻微格式噪声通常不值得逐条处理,因为语言模型对这类噪声已有一定鲁棒性;但代码块缩进、数学步骤缺失、表格列错位这类结构性损坏会直接改变监督信号,修复的边际价值更高[1]。因此,rewriting 的适用区间不是所有脏数据,而是那些删除会丢失稀有模式、保留原样又会扭曲学习目标的样本。这个区间远窄于“全部低质数据”,也更符合成本约束。

策略典型操作最适合的问题主要风险代表引用
去重/过滤

近重复删除、质量阈值、规则过滤

高频垃圾页、模板页、重复样本

误删稀有但有价值样本

pruning

按价值估计删 token/删样本

大盘低价值数据、预算受限训练

把可修复高价值样本一并删掉

逐样本 rewriting

生成并执行样本级修订程序

高价值但局部损坏、结构性缺陷样本

成本高、分布漂移、难复现

三类数据质量策略的适用边界
ProX recipe: per-sample program with verifier loop Each transform must be cheap, composable, and post-verifiable; the verifier gate is what makes the loop safe at scale. Raw sample post-dedup, post-global [Dedup2022][RefinedWeb2023] Filter drop boilerplate / nav / repeat deterministic rules from program Rephrase rewrite by smaller LM [ProgrammingEveryExample2024] Format-clean unify code blocks / math / refs post-token-level normaliser Out (cand) candidate tokens Verifier (post-hoc) PPL bound + classifier + per-token validity accept / reject Budget envelope ~10-20% of pretrain compute Failure mode cascade hallucination, mode collapse Inputs flow left -> right; verifier loop is the safety gate that makes per-sample programmability admissible at pretraining scale.
图 2. 图 2.1 ProX recipe:可组合 per-sample 变换 + 验证器闭环

§3 质量信号可以由模型产生,但不能没有验证闭环

逐样本程序化改写首先逼出一个决策问题:谁决定样本如何改。传统流水线依赖人工规则库和静态启发式[3][5];Programming Every Example [1] 把部分决策交给模型。相邻领域已经说明,这类闭环可运行。Bai et al. [9] 通过“生成—批改—重写”稳定产生更符合约束的训练样本;Lambert et al. [10] 进一步表明,模型可以同时生成偏好数据并提供 reward 信号。关键差异在于,alignment 中的“更符合偏好”不等于预训练中的“更接近真实分布”。如果程序空间不受限,模型会把样本改写成更容易被自己预测、也更接近自身输出风格的文本;这可能降低表面 loss,却不提升外部任务泛化[10]。因此,逐样本程序化改写需要比普通过滤更强的验证闭环:至少检查语义保真、格式约束、执行结果和回放一致性。代码样本可要求单元测试或 parser 通过;结构化文本可要求 schema 或表格一致性;自然语言推理样本则必须更谨慎,因为“更流畅”常常不等于“更保真”[1]。缺少这些约束时,模型生成闭环很容易从数据提升滑向数据同质化。

模型参与修数据可以做,但前提不是“模型更聪明”,而是“改写结果能被外部约束验证”。

§4 真正的评估口径:固定预算下的有效 token 价值

数据质量方法最常见的评估错误,是把离线质量分、人工偏好或少量 probe 任务当作最终证据。DataComp [8] 已经说明,候选池、预算和训练 recipe 不固定时,过滤器比较很容易失真。逐样本程序化改写的问题更尖锐,因为它不仅改变样本选择,还改变样本内容。Chinchilla [7] 给出更硬的口径:固定 compute 下,额外处理成本是否换来更高的有效 token 价值。这里的“有效 token 价值”至少包括三项:预训练 loss 是否下降;相同训练 token 数下,下游能力是否提升;收益是否来自更高信息密度,而不是更强模板化带来的短期拟合。Textbooks Are All You Need [11] 与 TinyStories [12] 说明,高密度、强约束数据在某些区间确实能替代大量原始网页 token;但也划出边界:数据被改写得过于规整时,模型学到的可能是理想化分布,而不是部署时会遇到的真实输入。Programming Every Example [1] 要站稳,最需要的不是更多案例展示,而是固定 token/compute 预算下的 ablation:过滤、pruning、rewriting 各自贡献多少,组合后是否仍有增益,以及从哪个模型规模开始不划算。

无 curation (baseline)
50[RefinedWeb2023]
全局质量过滤
53.50[Dolma2024][DataComp2023]
FineWeb-Edu (LM-classifier)
55.50edu-classifier filter
Rephrase / MIND (rewrite-only)
56.50no per-sample program
ProX (per-sample program)
58[ProgrammingEveryExample2024]
单位:下游 avg pp
图 3. 图 4.1 同 token 预算下的下游平均分对比 (illustrative; ProX 论文报告区间)

时间线

  1. Lee et al. 提醒:去重本身就能改善 LM 质量并降低记忆化[2]
  2. Hoffmann et al. 把讨论拉回 compute-optimal token 预算[7]
  3. Bai et al. 展示生成—批改—重写闭环可以稳定运行[9]
  4. Penedo et al. 用 RefinedWeb 证明强过滤网页语料已是很强基线[3]
  5. DataComp 把“数据过滤器也要 benchmark”这件事制度化[8]
  6. Less is More 明确提出:不少场景里 pruning 比修复更划算[6]
  7. Programming Every Example 把焦点推进到逐样本程序化修订[1]

研究立场对比

阵营 A:全局过滤与去重已经足够强,没必要逐样本改写

立场 — RefinedWeb [3]、Dolma [4] 和 Lee et al. [2] 说明,强过滤、去重、文档化和稳定 pipeline 已经能支撑高质量预训练。逐样本改写增加系统复杂度、审计难度和成本,收益未必超过把基线先做好。

证据:[3][4][2][5]

反方 — Programming Every Example [1] 反驳的不是“过滤无用”,而是“过滤足以处理高价值长尾样本”。全局规则对局部结构损坏往往只能二选一:误删或放过。

判词 — 一条更稳的读法:先把阵营 A 的基线做满,再引入逐样本改写。若去重、过滤、混料尚未成熟,不该直接上 rewriting。

阵营 B:低价值数据直接 pruning,比修复更省预算

立场 — Less is More [6] 的核心判断是,训练前删掉低价值 token/样本,常常比逐条修复更便宜,也更符合固定 compute 下的优化目标[7]

证据:[6][7]

反方 — Programming Every Example [1] 修正的是 cB:不是所有低质样本都该修,而是只有“高价值但局部损坏”的样本值得修。pruning 与 rewriting 不是互斥关系,而是按样本类型分工。

判词 — 结论层面的建议:把 pruning 设为默认,把 rewriting 设为例外。只有当样本稀有性、结构损坏和可验证修复同时成立时,才切换到 rewriting。

阵营 C:模型生成闭环可以直接承担质量控制

立场 — Bai et al. [9] 与 Lambert et al. [10] 说明,模型可以生成、批改、打分并回收训练信号,因此数据质量控制也可以更多交给模型,而不是人工规则。

证据:[9][10]

反方 — Programming Every Example [1] 在预训练场景里需要更强约束:alignment 中“更像偏好答案”不等于预训练中“更接近真实数据分布”。没有外部验证,闭环会把模型风格写回语料。

判词 — 一个更务实的定位:让模型提议改写,让外部约束决定是否接受。不要让模型既当作者、又当裁判、还当唯一评估器。

阵营 D:高密度 synthetic 数据比修网页更直接

立场 — Textbooks Are All You Need [11] 与 TinyStories [12] 支持另一条路线:与其修补海量网页,不如直接构造高密度、低噪声、目标明确的 synthetic 语料。

证据:[11][12]

反方 — Programming Every Example [1] 的反驳点在于覆盖面:synthetic 数据在窄能力、强格式任务上更有效,但开放域知识与长尾表达仍需要真实语料支撑。逐样本改写保留了真实分布的骨架。

判词 — 一条更稳的建议:synthetic 数据适合补能力缺口,逐样本改写适合修真实语料中的结构性缺陷。两者可以并用,但不要用 synthetic 成功案例去替代对真实网页修复价值的证明。

实践要点

可操作清单:
1. 先做强基线,再谈逐样本改写。至少先完成近重复去除、基础质量过滤、来源文档化与混料控制;否则 rewriting 的收益不可归因[2][3][4]
2. 把 rewriting 只用在高价值长尾。优先挑代码结构损坏、表格/列表错位、数学步骤缺失、局部 OCR 破碎这类“删掉可惜、保留有害”的样本;不要把它浪费在普通网页噪声上[1]
3. 默认先问“能不能 pruning”。若一个样本的价值主要来自表面流畅度,而不是稀有知识或结构监督,直接删更便宜[6]
4. 程序空间要小而可验证。优先采用格式修复、字段补全、局部重排、注释对齐、schema 纠正这类可检查变换;少做开放式风格重写[1][9]
5. 不要只看离线质量分。固定 token 数、固定 compute、固定 recipe 做 ablation,分别报告过滤、pruning、rewriting 的独立与叠加收益[8][7]
6. 让模型提议改写,但不要让它单独验收。代码看 parser/测试,结构化文本看 schema,一般文本至少做语义一致性与 provenance 回放检查[10][1]
7. 成本边界要提前写死。若逐样本处理成本接近再多抓一批高质量原始 token 的成本,就应优先扩充原始语料;只有当修复后的样本明显更稀有、更密集时才值得继续[7]
8. open — 证据不足:目前最缺的是大规模公开 ablation,尤其是 1B–10B 级模型、固定预算下 rewriting 相对 pruning 的拐点位置[1]

悬而未决的问题

  • Q1.固定 compute 与固定 token 预算下,逐样本 rewriting 相对 pruning 的收益拐点出现在什么模型规模与数据噪声水平?公开证据仍不足[6][1]
  • Q2.哪些外部验证最能防止模型把自身风格写回预训练语料:parser、执行测试、检索一致性,还是独立教师模型?缺少系统对比[9][10]
  • Q3.逐样本改写是否会削弱真实世界输入的噪声鲁棒性?如果训练数据被修得过于规整,部署时面对脏输入可能反而更脆弱,这一点缺少长期评估[11][12]
  • Q4.开放数据集如何记录逐样本程序化改写的 provenance、版本与可回放执行环境,使外部研究者能复现同一语料?现有开放语料实践还没有统一答案[4][5]
  1. [1]
  2. [2]
    Nicholas Lee, Wes Gurnee, Xinyang Zhang, et al.. Deduplicating Training Data Makes Language Models Better. ACL, 2022论文
  3. [3]
    Guilherme Penedo, Hynek Kydlíček, Loubna Ben Allal, et al.. The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only. NeurIPS Datasets and Benchmarks, 2023论文
  4. [4]
    Dirk Groeneveld, Iz Beltagy, Pete Walsh, et al.. Dolma: an Open Corpus of Three Trillion Tokens for Language Model Pretraining Research. arXiv, 2024论文
  5. [5]
  6. [6]
    Tianyu Gao, Howard Yen, Jie Zhou, et al.. Less is More: Data Pruning for Pretraining Large Language Models. arXiv, 2024论文
  7. [7]
    Jordan Hoffmann, Sebastian Borgeaud, Arthur Mensch, et al.. Training Compute-Optimal Large Language Models. arXiv, 2022论文
  8. [8]
    Samir Gadre, Mitchell Wortsman, Ludwig Schmidt, et al.. DataComp: In Search of the Next Generation of Multimodal Datasets. NeurIPS, 2023论文
  9. [9]
    Yuntao Bai, Andy Jones, Kamal Ndousse, et al.. Constitutional AI: Harmlessness from AI Feedback. arXiv, 2022论文
  10. [10]
    Nathan Lambert, Lewis Tunstall, Karl Cobbe, et al.. Self-Rewarding Language Models. ICML, 2024论文
  11. [11]
    Microsoft Research. Textbooks Are All You Need. Technical report, 2023报告
  12. [12]
    Yuanzhi Li, Katherine Lee, Tianjun Zhang, et al.. TinyStories: How Small Can Language Models Be and Still Speak Coherent English?. arXiv, 2023论文

论文列表

逐样本程序化数据提升(3)

把数据清洗从静态规则升级为对每条样本生成、执行和验证的变换程序,关注可扩展性、验证和收益边界。

10

Programming Every Example: Lifting Pre-training Data Quality Like Experts at Scale

Anonymous2024年9月25日
把“专家修数据”的流程改写成逐样本程序生成与执行,目标不是只删掉坏样本,而是对保留价值高但局部有缺陷的样本做可验证修复。关键贡献在于把数据质量提升从 corpus-level 规则推进到 example-level 操作。
7

Self-Rewarding Language Models

Nathan Lambert,Lewis Tunstall,Karl Cobbe,et al.2024年5月31日
虽然焦点在 alignment,但它提供了一个关键先例:模型可以生成、打分并筛选训练信号,形成闭环。对逐样本程序化数据提升而言,这说明“模型参与构造质量标签”并非只能停留在离线启发式。
6

Constitutional AI: Harmlessness from AI Feedback

Yuntao Bai,Andy Jones,Kamal Ndousse,et al.2022年12月15日
它不是预训练数据论文,但清楚展示了“生成—批改—重写—再训练”的流水线如何稳定工作。Programming Every Example 的可行性,部分建立在这种程序化修订范式已经在相邻问题上跑通。

过滤、去重与数据配方(3)

研究全局规则如何改善预训练语料,包括质量过滤、近重复去除和数据混料配方;它们构成逐样本改写的强基线。

9

The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only

Guilherme Penedo,Hynek Kydlíček,Loubna Ben Allal,et al.2023年6月1日
给出一条强工程基线:高覆盖网页语料配合多阶段过滤、去重和启发式质量控制,已经能支撑强模型。任何逐样本程序化方法都必须证明自己不是在重复 RefinedWeb 已经做掉的工作。
8

Dolma: an Open Corpus of Three Trillion Tokens for Language Model Pretraining Research

Dirk Groeneveld,Iz Beltagy,Pete Walsh,et al.2024年1月18日
强调数据工程的可追溯性:来源、过滤、去重和文档化同等重要。逐样本程序化改写如果不能保留 provenance 与回放能力,就很难在开放研究环境里被复现和审计。
8

Deduplicating Training Data Makes Language Models Better

Nicholas Lee,Wes Gurnee,Xinyang Zhang,et al.2021年11月18日
说明很多“数据质量收益”其实先来自去重,而不是更聪明的规则。逐样本改写若在未去重语料上评估,容易把重复样本压缩带来的收益误记成质量提升。

数据质量信号与可学习过滤器(3)

从启发式规则走向可学习质量模型,包括数据价值估计、质量分类器和小模型教师信号。

8

Less is More: Data Pruning for Pretraining Large Language Models

Tianyu Gao,Howard Yen,Jie Zhou,et al.2024年2月15日
支持“先选再训”的阵营:不少低价值 token 可以在训练前被删掉,而不必先花成本去修。它构成对 Programming Every Example 的直接挑战:为什么不是 pruning,而是 rewriting。
7

DataComp: In Search of the Next Generation of Multimodal Datasets

Samir Gadre,Mitchell Wortsman,Ludwig Schmidt,et al.2023年12月12日
虽然是 multimodal,但它把“数据过滤器本身需要 benchmark”这件事讲清楚了:没有统一预算、统一候选池和统一下游评估,数据质量方法很容易只是在换数据分布而非真正变好。
7

Data-Juicer: A One-Stop Data Processing System for Large Language Models

Data-Juicer Team2024年3月19日
把大量启发式质量算子工程化并标准化,说明现实系统更偏好可组合、可审计的 pipeline。逐样本程序化改写若想落地,需要接入这类系统,而不是另起一套不可控流程。

缩放规律、token 预算与合成数据边界(3)

讨论在固定 compute 下,应该把预算花在更多原始 token、更多过滤,还是更昂贵的逐样本改写与合成增强。

9

Training Compute-Optimal Large Language Models

Jordan Hoffmann,Sebastian Borgeaud,Arthur Mensch,et al.2022年3月29日
把讨论拉回 token 预算:如果 compute-optimal 区间里 token 本来就稀缺,那么昂贵的逐样本改写必须证明“每个被修复 token 的有效信息密度”高于直接多喂原始 token。
7

Textbooks Are All You Need

Microsoft Research2023年6月20日
给出另一条极端路线:与其修海量网页样本,不如直接构造高密度、低噪声语料。它支持“重写/合成可以替代部分原始网页 token”,也提醒逐样本改写可能最终走向更强的 synthetic mixture。
7

TinyStories: How Small Can Language Models Be and Still Speak Coherent English?

Yuanzhi Li,Katherine Lee,Tianjun Zhang,et al.2023年5月16日
说明高质量、强约束的合成语料可以在小模型区间明显改变学习难度。对逐样本程序化改写而言,它提示一个边界:当目标能力窄、格式强时,直接重写成模板化高密度数据可能比保留原样本更划算。