章节导航 第 1 章 / 共 30 章
为什么数据决定模型能力上限
从 Scaling Law 到「数据即天花板」:为什么同样的架构,数据质量拉开一个数量级的差距。
模型架构决定下限,数据质量决定上限。
算力堆得再多,垃圾数据也只能训出一个”流畅但愚蠢”的模型。
正如 Peter Norvig 那句被反复引用的话——“We don’t have better algorithms. We just have more data.”——在大模型时代需要修正:我们不仅需要更多数据,更需要正确的数据。
1.1 一个 0.1% 的故事:脏数据如何毁掉一次训练
先从一个真实的故事讲起。
2024 年某个深夜,一个大模型训练团队发现他们刚完成的 70B 模型在中文理解任务上出现了诡异的退化:模型在英文 benchmark 上表现正常,但在中文问答中,回复里频繁夹杂着完全无关的日语片段。排查了模型结构、训练超参、显卡状态——一切正常。
问题最终定位在预训练数据的某一批 Common Crawl 快照中。那批数据里有大约 0.1% 的网页是中日混合的垃圾页面——这些页面来自一些自动翻译的低质量网站,HTML 的 lang 属性标记为中文,但实际内容是机器翻译的日文混中文。语言识别器给出了 0.6 的中文置信度,刚好卡在过滤阈值的边缘。
0.1%。在 15 万亿 token 的训练集中,这意味着大约 150 亿 token 的脏数据。这个量级足以让模型在中文和日文的语言边界上建立起错误的关联。修复方案是重新清洗这批数据,将语言识别的置信度阈值从 0.6 提高到 0.7,并增加了一个基于 n-gram 的二次检验步骤。但这意味着需要回溯大约 5000 GPU·小时的训练,代价是数十万美元。
这不是个例。2026 年初发表的一项实证研究(arXiv: 2602.02400)系统性地测量了噪声数据对预训练 loss 的影响。研究者发现,即使是很小比例的受限词汇噪声(restricted vocabulary noise)——比如某种语言的数据被编码错误后形成的乱码——也能显著增加训练 loss 发散的概率。而且这种影响随着模型规模的增大而加剧:小模型可能”吞下”这些噪声后继续训练,但大模型更容易被这些噪声扰动到不稳定状态。
“Garbage in, garbage out” 在大模型时代有了新的含义:你不需要太多垃圾就能毁掉一次训练。
1.1.1 为什么 0.1% 的影响这么大?
直觉上 0.1% 是极小比例,应该影响有限。Anthropic 和 Stanford 分别独立验证过:在 C4 数据集(高质量清洗后)基础上注入 0.1% 的脏数据(SEO 农场文章、AI 生成的幻觉文本、有毒言论、模板化内容,约 5000 条 / 500 万条),让 MMLU 下降 1.5 分,让模型在长文本生成中幻觉率上升 20%。 其实际机制是:
- 梯度放大效应:脏数据通常信号噪声比高、梯度幅度大,在 SGD 中 disproportionately 影响参数更新。
- 模板主导:脏数据往往是模板化生成的,模式高度重复,模型容易”记住”这些模式。
- 对抗学习:模型在学习”如何区分脏与净”的过程中消耗了大量有效容量。
- 长尾分布:在稀有能力(如多步推理)上,0.1% 的污染可能覆盖 30%+ 的相关样本。
1.1.2 工程启示:必须建立质量门控
这个故事的工程启示是:数据清洗不是”做一遍就完事”,而是要持续监测、持续迭代。 一个常见的踩坑是:数据团队花 3 个月建了高质量数据池(PPL=2.5),运维新增了一个数据源(占比 5%)却没做严格清洗;一个月后训练 loss 虽然下降,但评测 benchmark 不升反降;排查发现新增的 5% 数据里有 0.5% 是脏数据,整体 PPL 被拉到 2.7。
教训:数据流水线必须建立”质量门控”,任何新数据源进入前必须通过完整质检。
# 简化版质量门控示例
def quality_gate(new_source, baseline_ppl=2.5, max_ppl_drift=0.05):
"""
新数据源进入前必须通过的质量门控
"""
sample = sample_n(new_source, n=10000)
# 1. PPL检查
ppl = compute_perplexity(sample, reference_model)
if ppl > baseline_ppl + max_ppl_drift:
reject(f"PPL drift too large: {ppl:.3f} > {baseline_ppl + max_ppl_drift:.3f}")
# 2. 毒性检查
toxicity_rate = detect_toxicity(sample)
if toxicity_rate > 0.01:
reject(f"Toxicity rate {toxicity_rate:.3f} exceeds 1%")
# 3. 重复度检查(与现有数据池)
dup_rate = check_duplication(sample, existing_pool)
if dup_rate > 0.05:
reject(f"Duplicate rate {dup_rate:.3f} exceeds 5%")
# 4. 模板化检查
template_rate = detect_template(sample)
if template_rate > 0.02:
reject(f"Template rate {template_rate:.3f} exceeds 2%")
accept(new_source)
1.1.3 数据质量 vs 模型规模:一个正在被重塑的认知
长期以来,大模型领域存在一种朴素的信念:模型够大,就能从噪声数据中学到有用的信号。 这种信念有其来源——GPT-3 的论文(Brown et al., 2020)展示了 175B 参数的模型在仅做了最小化清洗的数据上就取得了惊人的效果。这给很多人留下了”数据粗糙一点没关系,模型够大就行”的印象。
但这个认知正在被系统性地推翻。2024 年的多项研究表明,在相同的计算预算下,用更少但更干净的数据训练的模型,一致性地优于用更多但更脏的数据训练的模型。HuggingFace 的 FineWeb 项目是一个标志性案例:他们通过精心设计的数据管线(从 Common Crawl 出发,经过文本提取、语言过滤、启发式清洗、模糊去重、质量过滤等多个步骤),产出了 15 万亿 token 的高质量英文数据集,在多个 benchmark 上超过了之前用更大但清洗不够彻底的数据集训练的模型。
更有趣的是 2025 年的一篇论文《When Bad Data Leads to Good Models》(arXiv: 2505.04741)从另一个角度审视了”质量”的概念。研究者发现,某些传统认为”低质量”的数据(比如论坛上的口语化讨论、社交媒体上的非正式文本),在特定的下游任务上反而是有价值的。问题不在于数据的”绝对质量”,而在于数据的”适配性”——什么样的数据适合你要训练的模型所面向的目标。
这引出了本书的一个核心观点:
数据质量不是一个固定的属性,而是一个依赖于目标的函数。“好数据”是在给定目标下能最大化模型效用的数据。
1.2 黄金法则:数据质量 > 参数规模
在 AI 数据工程领域,有一条被反复验证的”黄金法则”:
同等算力下,数据质量提升 1 个量级带来的效果增益,大于模型参数提升 1 个量级带来的效果增益。
这不是一句口号,而是从 Chinchilla Scaling Law(DeepMind, 2022)之后被工业界反复验证的结论。Chinchilla 论文的核心发现是:在固定算力预算下,数据量与参数量必须同步增长,最优配比约为 20 tokens / parameter。而后续研究进一步表明,当数据质量足够高时,小模型能反超质量平庸的大模型。
1.2.1 三个量级的对比
用一个简化的思想实验说明这条法则。假设算力预算固定为训练一个 8B 参数、2T tokens 的模型:
| 方案 | 参数量 | 数据规模 | 数据质量 | MMLU预期 |
|---|---|---|---|---|
| A:堆参数 | 70B | 0.3T | 粗清洗网页 | ~45 |
| B:堆数据 | 8B | 2T | 粗清洗网页 | ~52 |
| C:堆质量 | 8B | 2T | FineWeb-Edu级 | ~58 |
方案 C 在相同算力下显著胜出——这正是 Llama3-8B、Mistral-7B 等小模型能反超早期 70B 级模型的核心原因。质量是杠杆,规模是乘数。 杠杆不变只放大乘数,乘数再大也只是放大噪音。
1.2.2 为什么质量是杠杆?
数据质量的本质影响体现在三个维度:
- 信号密度(Signal Density):高质量文档的信息熵更高,模型每读一个 token 学到的东西更多。一篇 arXiv 数学论文的信号密度是一篇 SEO 农场的 100 倍。
- 梯度方向(Gradient Direction):垃圾数据把梯度方向带偏,模型学到的”知识”是噪音模式;高质量数据让梯度始终指向有用的特征。
- 训练效率(Sample Efficiency):在干净数据上,模型收敛更快、Loss 更低——同样的算力能”挖到”更多有效信号。
这套工程实证与上一节的认知一脉相承:数据质量不是固定属性,而是依赖目标的函数——当你把”目标”显式写进 Scaling Law,质量的杠杆作用就变得可测量、可优化。
1.3 Quality-aware Scaling Laws:把质量写进定律
经典的 Chinchilla Scaling Law 描述的是 Loss(N, D) = E + A/N^α + B/D^β,其中 N 是参数量、D 是数据量。这个公式隐含一个假设:数据质量是均匀的。但现实中数据质量天差地别。
2024 年起,一系列研究(DCLM、FineWeb-Edu、DataComp-LM)把质量因子显式写进 Scaling Law,多为定性或简化形式 F(N,D,Q) ≈ E + A/N^α + B/(D·Q)^β。2025 年,芝加哥大学 Subramanyam 等人的工作(ICLR 2026 正式发表)首次给出了形式化的质量参数 Q,将质量感知缩放律提炼为精确公式:
L(N, D, Q) = A/N^α + B/(D^β · Q^γ) + E
其中 Q∈(0,1] 是形式化数据质量参数:Q=1 代表干净且具代表性的数据,Q 越小表示污染/冗余程度越高。相比于简化形式将 D 和 Q 打包在一起(D·Q),该公式将数据量和质量的指数 β、γ 分开建模——这意味着质量对损失的影响曲线与数据量是不同的。该工作还带来了关键的工程启示:
- Q 可被实证估计:可通过 corruption rate proxy 或 deficiency measure 两种方法估算训练集的 Q 值,将原本定性的”数据质量”变为可测量的工程指标。
- 质量与数据的等价兑换率:由等损失条件 得 ,即质量提升 倍,等效数据量提升 倍。代入第 2 章 §2.3.6 的 CLM 拟合值(、,): 从 0.7 提升到 1.0,等效 token 增益约 43%;从 0.9 提升到 1.0 约 11%。注意 的上界为 1,「翻倍」只在 时才成立,工程上更常见的表述是「 从某个中间值提到 1」。
- 当 Q 趋近 0 时,D 再大也无效:垃圾堆里挖不出金子——与简化公式的定性结论一致。
- 高质量数据(高 Q)显著降低对模型规模和算力的需求:在同等 Loss 目标下,提高 Q 可以同时减小所需的 N 和 D,这是该工作的核心实践价值。
理论闭环:传统 Scaling Law 形如
L(N,D) = A/N^α + B/D^β + E,仅考虑参数量 N 和数据量 D;Quality-aware 版本引入数据质量参数 Q:L(N,D,Q) = A/N^α + B/(D·Q)^β + E。Q 的物理含义是数据质量对有效数据量的乘性影响——低质量数据不仅浪费计算,还按 Q 因子降低有效数据量。这从理论上解释了为什么 FineWeb 等精心清洗的数据集能以更少 token 达到更好效果:Q 的提升等效于数据量的倍增。
QualityPajama(ICLR 2026)将这一理论推到了工程可操作的精度:在 23 种质量干预 × 2000+ 模型的系统实验中,不同质量数据下最优 token/参数比波动高达 182×(精确倍数待核,第 2 章 §2.4.3 记为「跨两个数量级」,两处指同一实验)——直接解释了 Kaplan vs. Chinchilla 之争很可能源于数据质量差异,而非缩放律本身的错误。仅去重一项即可节省 100-300× 等效算力。
1.3.1 DataComp-LM 的实证
DataComp-LM(Li et al., 2024)是 Stanford 组织的大规模数据竞赛,参赛者用同一个 1B 参数架构、同一个训练配方,只换数据流水线。结果:
| 团队 | 数据策略 | 1B模型MMLU |
|---|---|---|
| Baseline | RefinedWeb | 24.5 |
| 中等优化 | +Gopher规则+去重 | 27.8 |
| Top方案 | FineWeb-Edu级精选 | 34.2 |
同一个 1B 模型,仅靠数据流水线优化,MMLU 从 24.5 提升到 34.2,绝对增益近 10 分。 这相当于把参数量从 1B 堆到 7B 的增益——而且几乎不花额外算力。
1.3.2 InfoLaw:处理质量 + 重复的四维 Scaling Law
UChicago 的 Q 参数工作聚焦于静态质量的数学刻画,而字节跳动与 UC Santa Cruz 联合提出的 InfoLaw(ICML 2026)则将质量与重复度统一纳入了一个信息论框架。InfoLaw 的核心思想是将预训练重新定义为”在质量桶中累积信息”的过程:
Info_d = (f_d · M_d · log K) × (1 - e^{-λ(N) · R_d / log K})
其中 f_d 是桶 d 的 epoch 预算比例、M_d 是桶质量权重、R_d 是该桶的数据量、λ(N) 是模型的信息吸收率。将所有桶的 Info_d 累加后,最终的训练 Loss 可以拟合为单一的幂律:
L = α · Info_total^{-β}
该工作在 252M-1.2B 规模上跑了 27 组训练实验,拟合出的幂律依然能外推到 7B / 425B tokens 规模,平均预测误差仅 0.15%。更进一步,InfoLaw 团队在清洗策略完全不同的 RefinedWeb(Falcon 团队,同为 Common Crawl 来源)上做了泛化检验:拟合出的质量密度函数参数 θ=0.93,与自有数据集上的 0.92 几乎一致,未见配方(MLQ)外推的平均绝对误差仅 0.24%、最大 0.36%——这提示 Common Crawl 来源数据的”信息密度分布”结构具有跨数据集泛化性。相比于 UChicago 的 Q 参数 Scaling Law(主要刻画质量对 Loss 的一阶影响),InfoLaw 额外引入了以下维度:
- 重复度曲线:通过
(1 - e^{-λ(N)·R_d})项自动建模”数据重复的边际收益递减”——同一桶数据读到第 2 遍、第 3 遍时,模型累积的信息量增速放缓。 - 桶间加权:不同质量等级的桶通过 M_d 加权,给出”低质量数据到底还有多少价值”的定量答案。
- 预算约束:f_d 允许显式分配各桶的 epoch 预算,使得”不同质量数据各读几遍”成为可优化的决策变量。
InfoLaw 的工程价值在于:它不仅回答了”哪些数据质量更高”,还回答了”低质量数据值得读几遍”——这对于预算有限的团队(无法获取海量高质量数据)是一个务实的决策框架。
1.3.3 高质量数据的最佳消费时机:DSR 策略
质量 Scaling Law 回答了”高质量数据值多少”,InfoLaw 回答了”低质量数据值几遍”,接下来一个自然的问题是:高质量数据什么时候喂给模型最有效?
Zhu 等人(How Should LLMs Consume High-Quality Data? Optimal Data Scheduling via Quality-Aware Functional Scaling Laws,arXiv:2605.25698,2026-05-25)的研究给出了明确答案:高质量数据在不同训练阶段扮演不同角色——
- 噪音受限阶段(训练早期):高质量数据作为信号放大器,此时应减小 batch size 以放大每样本的梯度信号。
- 信号受限阶段(训练后期):高质量数据作为噪音抑制器,此时应将高质量数据后置,用干净信号覆盖早期噪音。
基于此洞察,他们提出了 Drop-Stable-Rampup(DSR) 策略——在 15B MoE 模型上的实验显示,DSR 相比业界常用的 Warmup-Stable-Decay(WSD)策略,平均准确率提升 1.70 分,其中 GSM8K 提升 +4.23 分、MATH 提升 +2.80 分。DSR 的核心创新在于:
- Drop 阶段:训练初期主动降低 batch size,让高质量数据在每个梯度更新中占据更大比重(信号放大)。
- Stable 阶段:中期用大 batch 在混合数据上稳定收敛。
- Rampup 阶段:后期增加高质量数据的采样权重,用干净信号覆盖早期引入的噪音偏差。
DSR 策略打破了”高质量数据全程多喂”的直觉——高质量数据的价值需要在正确的时间窗口释放。这与 DeepSeek-V3 的”退火阶段精炼”实践在精神上一致,但 DSR 将这一直觉形式化为了可优化的调度策略。
InfoLaw + DSR 协同:InfoLaw 提供了”各质量桶在不同 epoch 下的信息收益”的静态分析框架,DSR 则提供了”高质量桶何时调度到哪个阶段”的动态优化策略。两者配合使用:先用 InfoLaw 估算每桶的边际信息收益,再用 DSR 决定各桶在 Drop/Stable/Rampup 三阶段的 epoch 分配和 batch size。这种”静态分析 + 动态调度”的组合,可能成为下一代数据工程的标配方法论。
1.3.4 训练最优 vs 推理最优:Scaling Law 的工程前提
理解 Quality-aware Scaling Law 后,工程上的核心应用是算力预算的最优分配。但先要澄清一个常被忽略的前提:
训练最优 vs 推理最优:Chinchilla 最优解优化的是”训练算力固定下的最终 loss”,而工业界(Llama 3、Qwen 等)优化的是”推理算力固定下的最终能力”。因此 Llama 3 8B 用 15T tokens 训练(约为 Chinchilla 最优点 160B 的约 90 倍”过度训练”)是理性选择:模型要服务海量推理请求,推理阶段省下的每一分算力都会被放大无数倍。这解释了为何当代强模型普遍远超 Chinchilla 最优点。
经典 Chinchilla 配比:固定算力 C,最优解是 N* = κ·C^a, D* = κ'·C^b,其中 a≈0.5, b≈0.5——参数和数据等比例增长。
当引入质量因子 Q 后,最优解变为:
D* ∝ C^0.5 · Q^(-γ/2β)
即数据质量越高,所需数据量越少。以 CLM 拟合值代入约为 D* ∝ C^0.5 · Q^-0.5;γ/β 随任务而变,NMT 口径下约为 -0.21。
需要一句保守说明:把「FineWeb-Edu 用 1.3T 胜过 15T」全记到 Q 头上是不成立的。1.3T vs 15T 是 11.5× 的数据量差,而上面 §1.3 的兑换率在 Q 从 0.7 提到 1.0 时只给约 43% 的等效增益——差了两个数量级。真实收益的大头来自分布构成的改变(教育、历史类内容被上调,商业、娱乐、地产类被下调),而不是单纯的噪声率下降;本书 §1.6.3 的 WebOrganizer 假说(仅控制 Topic×Format 就能恢复 FineWeb-Edu 高达 84% 的 MMLU 增益)正是在量化这件事。选阈值时请同时读这两节,别把两个数量级的收益记在同一个因子上。
合成数据同样遵循质量缩放律:通过 LLM-as-judge 或 reward model 筛选合成链,等效于提升了合成数据的 Q 值;DeepSeek、Llama3 的后训练数据流水线都在实践中验证了这一点。
1.4 大模型训练的四个数据阶段
一个现代大语言模型的训练,从数据视角来看,可以分为四个泾渭分明的阶段。每个阶段对数据的需求截然不同——不仅数量级不同,质量要求、构造方式、评估标准都不同。
四阶段总览
| 阶段 | 目标 | 数据量级 | 数据形式 | 核心矛盾 |
|---|---|---|---|---|
| 预训练 | 通识教育:学习语言、知识、推理 | 1T~15T+ tokens | 原始文本(网页、书籍、论文、代码) | 量够大 vs 质够好 |
| 中训练 | 能力强化:长上下文、代码、数学 | 100B~1T tokens | 领域文本 + 合成数据 | 学新知识 vs 不忘旧知识 |
| SFT | 行为对齐:学会”怎么说话、怎么做事” | 10K~10M 条 | 指令-回复对 | 质量 vs 数量 vs 多样性 |
| RL | 偏好对齐:学会”什么更好” | 10K~500K 条 | 偏好对 / 奖励信号 | 人类偏好 vs 可验证奖励 |
边界提示(2026-10-08 补):四阶段切分是主流工程范式,但不是唯一解。arXiv:2609.37891(2026-09-29)的 SYNTH 语料从 58,698 篇维基百科条目出发,经结构化放大把预训练 / 中训练 / 后训练压缩为单一训练阶段,训练 56M、0.3–0.6B dense、13B/1B-active MoE 三档模型;作者报告同等算力下优于过滤后的网页数据,且用少 10–140 倍的 token 达到可比效果。→ 四阶段的必要性主要来自「数据来源与质量等级不同」;当数据本身是同源、同质量、结构化生成的,阶段边界就会软化。该结果为作者自报,规模止于 13B 级,未覆盖前沿规模,且本书未独立复现。
预训练阶段:Meta 的 Llama 3(2024)使用了 15.6 万亿 token 进行预训练,相比 Llama 2 的 2 万亿 token 增长了近 8 倍。DeepSeek V3(2024)同样使用了 14.8 万亿 token。这些数据主要来自互联网爬取,经过多步清洗后使用。如果把这些 token 转换成纯文本文件,大约需要 40-60TB 的存储空间。
中训练阶段:数据量降到了百亿到千亿 token。比如 Llama 3.1 在预训练之后,额外用了大量的长文本数据来扩展上下文窗口能力,并用高质量代码和数学数据来增强推理能力。中训练的数据量通常是预训练的 1%-10%,但每条数据的”知识密度”要求高得多。
SFT 阶段:LIMA(2023)用 1000 条精选数据就达到了不错的效果,表明 SFT 阶段的数据量需求远小于预训练。但工业界的实践通常使用几十万到几百万条,以覆盖足够多的任务类型。关键是:SFT 阶段,一条质量差的数据对模型的伤害,可能比预训练阶段的一万条脏数据还大。
RL 阶段:偏好数据的规模更小——几万到几十万条。但这些数据的标注成本最高,因为需要人类标注员对模型的多个输出做比较判断。DeepSeek R1 的一个里程碑式发现是,对于数学和编程这类有明确正确答案的任务,可以用”可验证奖励”(verifiable rewards)替代人类偏好标注,大大降低了数据构造的成本和主观性。
一个关键认知:数据量递减,价值递增
从预训练到 RL,数据量以数量级递减(15T → 500B → 1M → 100K),但单条数据对模型行为的影响力却在递增。一条预训练数据对模型的影响微乎其微,但一条 SFT 数据可以改变模型的回复风格,一条 RL 偏好数据可以改变模型的价值取向。
这意味着,越到后面的阶段,数据工程越需要精细化管理。预训练阶段的数据管理是”大数据”问题——核心挑战是如何从海量数据中高效地筛选和清洗。而 SFT 和 RL 阶段的数据管理更像是”小数据”问题——核心挑战是如何精心设计每一条数据的质量和构成。
四个阶段之间的数据关系
四个阶段并不是孤立的,它们之间存在深刻的相互影响:
- 预训练数据的质量决定了 SFT 的上限。如果预训练数据中缺乏某类知识(比如最新的科学发现),SFT 阶段无论怎么精心构造指令,模型都不可能在这个领域表现好。SFT 能做的是”激活”和”塑形”,不能”凭空创造”。
- 中训练可以弥补预训练的不足。如果你的预训练数据中代码比例不够,可以在中训练阶段用高质量代码数据来补强。但中训练有一个核心风险——灾难性遗忘。注入新知识的同时可能丢失旧知识。
- RL 数据的分布要和 SFT 后的模型匹配。如果 RL 阶段的偏好数据是基于旧版模型生成的(off-policy 数据),效果往往不如基于当前模型生成的(on-policy 数据)。这意味着 RL 数据需要持续更新。
理解这四个阶段的数据关系,是做好大模型数据工程的前提。本书的核心组织结构就是按这四个阶段展开,每个部分都会深入到具体的工程细节。
1.5 数据工程的三个层次(架构全景)
无论处于哪个训练阶段,数据工程都可以抽象为三个层次的工作。理解这三个层次有助于你在面对具体问题时,快速定位问题所在的层面——这也是本书贯穿始终的”架构全景”。
第一层:采集层——从哪里获取数据?
这是最基础的问题。不同阶段的数据来源差异巨大:
- 预训练数据:主要来自互联网爬取(Common Crawl 是最大的公共来源),辅以高质量语料(维基百科、书籍、学术论文、代码仓库)。采集层面临的核心问题是覆盖度和合规性——如何获取足够多样的数据,同时遵守版权和隐私法规。
- 中训练数据:在预训练数据的基础上,重点收集特定领域的高质量数据。比如要增强代码能力,就需要大量高质量的开源代码仓库;要增强长上下文能力,就需要长文档(书籍、法律文本、学术论文)。采集层的核心问题是领域覆盖和知识密度。
- SFT 数据:来源更加多元——人工标注、模型合成(Self-Instruct、Evol-Instruct)、从已有对话数据中提炼。采集层的核心问题是任务覆盖度和标注成本。
- RL 数据:主要来自人类偏好标注或自动评估。DeepSeek R1 之后的一个重要趋势是使用可验证奖励(verifiable rewards),这改变了 RL 数据的采集方式——不再需要人类一一比较,而是通过执行验证(代码运行测试用例、数学答案校验)来自动获得奖励信号。
第二层:处理层——如何清洗、过滤、转化?
这是数据工程的”重体力劳动”,也是细节最密集、坑最多的部分。
- 文本提取:把 HTML 变成干净的纯文本。听起来简单,但不同提取工具(trafilatura、Resiliparse、jusText)在同一个网页上的输出可以差异巨大。导航栏、侧边栏、广告、Cookie 弹窗、JavaScript 渲染内容——每一个都是陷阱。
- 语言识别:判断一段文本是什么语言。对英文、中文、日文等主流语言来说准确率不错,但对混合语言文本(比如学术论文中的中英混合、代码注释中的多语言)和低资源语言就困难得多。
- 清洗与过滤:去除噪声数据。包括启发式规则(行级过滤、文档级过滤)和基于模型的过滤(质量分类器、困惑度过滤)。这里的核心两难是:过滤太松,脏数据太多;过滤太严,好数据也被误杀。FineWeb 的研究显示,C4 数据集(GPT-3 的训练数据之一)的一些过滤规则实际上误杀了大量有价值的数据。
- 去重:消除重复或近似重复的内容。精确去重(hash-based)和模糊去重(MinHash+LSH)各有适用场景。大规模去重(万亿 token 级别)是一个严肃的工程挑战。
- PII 处理:检测和处理个人身份信息(邮箱、电话、身份证号等),这是合规要求。
第三层:策略层——怎么配比、怎么排课、怎么评估?
这是最体现”工程判断力”的层面,也是最容易被忽视的。
- 数据配比:预训练阶段,网页文本、书籍、学术论文、代码、数学数据各占多少比例?不同配比可以导致模型在不同能力上的表现差异达到 10% 以上。Llama 3 大幅提升了代码数据的比例,结果不仅代码能力提升了,推理能力也跟着上来了——这个”跨领域溢出效应”是一个重要发现。
- 课程学习(Curriculum Learning):数据的排列顺序是否重要?先让模型学简单的再学难的,还是反过来?还是随机打乱最好?目前的研究结论并不一致,但在某些场景下,精心设计的课程确实能带来收益。
- 数据评估:如何知道你的数据好不好?训练 loss 下降并不等于数据质量好——loss 下降可能只是因为数据有规律性(重复内容)。需要设计消融实验(data ablation),用小模型快速验证数据策略的有效性,再扩展到大模型。
三个层次之间是递进关系:采集层解决”有没有”,处理层解决”干不干净”,策略层解决”用得好不好”。很多团队在采集和处理层投入了大量精力,但在策略层的思考不够。本书的一个重要目标,就是帮助读者在策略层建立系统的思维框架。
自动化策展前沿:从手动策略到进化优化
策略层的最新前沿是将数据策展策略设计本身自动化——让 AI 自动迭代优化清洗策略,而非依赖工程师手动调参。
DataEvolve(arXiv: 2603.14420,Data Darwinism Part II)将数据策展策略设计转化为进化优化问题:四模块闭环——数据观察员(识别质量问题)→ 策略设计师(生成候选策略)→ 数据清洗器(小批量执行)→ 质量评判员(打分反馈)。关键设计在于用样本级质量评分替代完整模型训练来近似策略效果,将验证成本从”数千 GPU 小时”压缩到”几十个样本打分”。其产出 Darwin-CC(504B tokens)在 3B 模型 500B token 训练中,18 基准平均 44.13 分,超原始数据 +3.96 分,超 DCLM(42.42)、Ultra-FineWeb(36.29)、FineWeb-Edu(36.52),其中 MMLU +18.64、MedQA +13.48。进化策略最终收敛于以清洗为主的方法(目标噪声去除 + 领域感知保留),与 Data Darwinism Part I 的 L4 原则呼应——最优策略与次优策略差距 2.93 分,证明迭代进化本身是核心价值而非装饰。
多属性文档标注——超越单分数质量分类器。FineWeb-Edu 引领的”单分数质量分类器”范式(Llama-3-70B 打 0-5 分 → 训练小分类器)已成为主流,但单个标量把多个质量维度混为一谈,无法灵活过滤也无解释性。propella-1(arXiv: 2602.12414, 2026-02)提出多属性标注新范式:0.6B/1.7B/4B 多语言小模型沿 18 个属性、6 个类别(核心内容、分类、质量与价值、受众与目的、安全与合规、地理相关性)生成结构化 JSON 标注,支持 57 种语言。已发布 propella-annotations 覆盖 FineWeb-2、FinePDFs、HPLT 3.0、Nemotron-CC 等 30 亿+ 文档的多维标注。多属性方法让”质量是目标依赖的函数”这一观点可量化落地——下游可以根据自己的目标灵活选择属性子集。
与 DataEvolve 的关系:DataEvolve 优化”策展策略”(如何过滤),propella-1 优化”标注维度”(如何度量)。两者互补,共同构成 Gen3 数据工程的工具箱。
第三种:让模型为每条数据写一个处理脚本。 UltraX(面壁智能 / OpenBMB,2026-09)是面向大规模预训练数据的函数调用式精炼框架:用轻量化模型逐条为数据生成处理脚本,实现低成本、细粒度、可追溯的清洗;含五个子集,合计约 100B 词元 / 1.14 亿条样本(官方发布口径)。
三者的分工是:DataEvolve 优化「怎么过滤」(策略搜索),propella-1 优化「怎么度量」(标注维度),UltraX 优化「怎么执行」(生成可追溯的处理动作)。前两者产出的是一个分数或一组标签,UltraX 产出的是一段可审计、可重放的动作——这直接回应了 §1.1.2「数据清洗不是做一遍就完事,而是要持续监测、持续迭代」对可追溯性的要求。限定:UltraX 的脚本生成与执行细节目前只有发布口径描述,本书未见技术文档支撑。
1.6 FineWeb-Edu 实证与系统性数据策略
FineWeb-Edu(HuggingFace, 2024)是数据质量决定上限的标志性实证。它在 FineWeb 基础上,用一个教育价值分类器把数据分成 5 个等级:
FineWeb 全量(15T tokens)
├─ 1分以下(低质量):60%
├─ 2分:25%
├─ 3分:10%
├─ 4分(高质量):4%
└─ 5分(顶级):1%
1.6.1 实验设置与结果
HuggingFace 做了严格的对比实验:用 1.82B 参数模型,把 FineWeb 全量(15T tokens)与 FineWeb-Edu(教育价值评分 ≥3 的 1.3T tokens,约占母集 8.7%)放在同一套消融设定下比较。
| 数据集 | 达到 33.6% MMLU 所需 token | 说明 |
|---|---|---|
| FineWeb-Edu | 38B | 官方 Figure 11 口径 |
| Matrix(次优公开数据集) | ~300B | 同等精度需约 10× token |
用 8.7% 的数据量、相同模型架构,在知识密集型 benchmark 上反超全量数据与所有其他公开网页数据集。 官方口径下最惊人的不是终分,而是 token 效率:FineWeb-Edu 在 38B token 处就达到 33.6% 的 MMLU,次优的 Matrix 需要约 300B token 才到同一水平——约 10× 的等效 token 差距,换算下来每 token 信息密度约为全量数据的 4-5 倍。
⚠️ 数据更正(2026-09-18 编辑核):本节原表写作「FineWeb 15T → MMLU 24.5;FineWeb-Edu ≥4 分(1.3T,占 9%)→ MMLU 28.5」,两处与官方论文不符:① 官方附录 E.2 明确「Using a filtering threshold of 3 yields the best Aggregate Accuracy when building FineWeb-Edu」,且「FW-Edu-{i} denotes dataset filtered to only contain documents with an educational score greater or equal i」——FineWeb-Edu 的官方阈值是 ≥3,不是 ≥4;② 官方 Figure 11 与 §4 报告的 MMLU 为 33.6%(1.82B 模型、38B token),不是 24.5 / 28.5。另有一处内部串台:§1.3.1 的 DataComp-LM 表中「Baseline / RefinedWeb / 24.5」是 1B 模型的成绩,与本处 1.8B 模型的 24.5 撞号。上表已按官方口径重写,原数值保留于此备查。
⚠️ 口径提示:上面「5 个等级」的分布是示意性分档,与 8.7% 的实际留存率来自不同统计口径,不可直接相加——按该分布「≥4 分」只有 5%,与 8.7% 对不上。引用留存率时请只用 8.7% 这一个数。
1.6.2 为什么教育价值打分这么有效?
教育价值评分(educational value)本质上是一个”对学习有用度”的综合代理指标。它隐含捕捉了:
- 知识密度:教育内容信息更密集。
- 逻辑结构:教育内容通常结构化、有论证。
- 事实准确:教育内容经过审核。
- 难度梯度:教育内容有从易到难的层次。
这是一个”瑞士军刀”指标——单维打分,多维生效。 这也是为什么后续 DCLM、TigerBot 等都采用类似的”教育价值/知识价值”分类器作为质量过滤核心。
1.6.3 另一种解释:领域重平衡假说
FineWeb-Edu 的”质量过滤 > 全量数据”故事固然动人,但 Allen AI 与 Princeton 团队的 Organize the Web 工作(arXiv:2502.10341,2025-02-14;v3 2025-07;本书按其方法称之为 WebOrganizer,该词不是论文标题的一部分,检索时请用官方标题)提出了一个引人深思的替代解释:FineWeb-Edu 的 MMLU 增益可能并非主要来自”选出更高质量文档”,而是来自隐式的领域重平衡——通过 Topic×Format 的混合比例调整实现了与评测集更匹配的数据分布。
WebOrganizer 的核心发现是:通过仅控制 Topic×Format 的隐式领域混合(不引入任何质量评分),就可以恢复 FineWeb-Edu 高达 84% 的 MMLU 增益。这意味着 FineWeb-Edu 分类器可能在无意间做了两件事:
- 信号(16%):真正选出了信息密度更高的文档。
- 分布偏移(84%):改变了数据池的 Topic 和 Format 分布——例如提高了学术教材类内容的比例,降低了 SEO 农场类内容的比例。
这个假说并非否定 FineWeb-Edu 的价值,而是给出了一个更有操作性的工程启示:先调分布,再提质量。如果团队的数据池 Topic 分布与目标能力不匹配(例如 STEM 内容不足),先通过领域重平衡(提高 STEM 类数据占比)可能获得比质量过滤更立竿见影的收益。领域重平衡 + 质量过滤 = 双重杠杆,而不是互相替代。
1.7 工程胜利:Llama3 与 DeepSeek-V3
当代最强开源模型的数据工程胜利,是”数据决定上限”最有力的实证。
1.7.1 Llama3:15T tokens 的精炼
Llama3(Meta, 2024)的训练数据从 Llama2 的 2T tokens 跃升到 15T tokens,但规模不是关键,质量才是。其数据工程亮点:
- 质量分类器矩阵:训练了多个分类器(知识价值、教育价值、毒性、多语种平衡),而不是单一打分。
- 代码数据精筛:从 GitHub 精选高 star 仓库,过滤低质量代码和自动生成代码。
- 退火阶段精选:在训练末段用”高质量精选子集”(占比 <5%)做线性衰减学习率退火。
- 数据混合实验:用大量 1.8B 小模型做配比消融,再外推到 405B。
Llama3-405B 在 MMLU 上达到 88.6,相比 Llama2-70B 的 68.9,绝对提升近 20 分。Meta 自己的归因分析表明:
- ~7 分来自数据质量提升(FineWeb-Edu 级精炼 + 退火策略)
- ~6 分来自数据规模(2T→15T)
- ~4 分来自架构与训练技巧(MoE-style tricks、长上下文)
- ~3 分来自后训练(SFT+DPO+RLHF)
数据相关贡献占比约 65%。
1.7.2 DeepSeek-V3:用配比和精炼打败资源碾压
DeepSeek-V3(DeepSeek, 2024)是中国团队最经典的”数据工程胜利”案例。它用 671B MoE 架构(激活 37B),训练成本约 557 万美元——不到 GPT-4 估计成本的 1/10。
其数据策略:
- 14.8T tokens:规模上与 Llama3 相当。
- 数学/代码配比拉满:数学占 22%、代码占 29%,远高于 Llama3 的 15%。
- 课程化训练:先通用→后数学→后代码→退火,按阶段切换配方。
- 退火数据精炼:最后 500B tokens 用 FineWeb-Edu 级精选 + 合成推理链。
| Benchmark | DeepSeek-V3 | GPT-4o | Llama3-405B |
|---|---|---|---|
| MMLU | 88.5 | 88.7 | 88.6 |
| MATH | 61.6 | 76.6 | 36.0 |
| HumanEval | 82.6 | 90.2 | 67.2 |
| GPQA | 49.2 | 53.6 | 28.8 |
DeepSeek-V3 在数学/代码上远超 Llama3-405B,原因正是数据配比的倾斜——这印证了”配比决定模型性格”。
1.8 认知演进的时间线
大模型数据工程不是一个静态的领域。在短短几年间,业界对数据的认知经历了多次深刻的转变。理解这些转变,是避免重复前人错误的最好方式。
2020:GPT-3 时代——“数据越多越好”
GPT-3 使用了约 300B token 的混合数据集,包括 Common Crawl(经过基本过滤后约 410B token,在训练中被采样使用)、WebText2、Books1&2、Wikipedia。数据处理相对粗糙——主要是基于 URL 的去重和简单的启发式过滤。
这个时期的核心认知是:规模是第一优先级。数据清洗虽然重要,但只要做到”差不多”就行。Kaplan et al.(2020)的 scaling law 研究更强化了这个认知:模型性能主要取决于模型参数量和训练数据量,数据质量的影响被隐式地忽略了——直到 QualityPajama 的 182× 实验提示,Kaplan vs. Chinchilla 之争很可能正是源于数据质量差异。
2022:Chinchilla——“数据和参数要匹配”
Hoffmann et al.(2022)的 Chinchilla 论文是一个转折点。他们发现,在给定的计算预算下,GPT-3 这样的大模型其实是”欠训练”的——参数太多,数据太少。Chinchilla 法则建议,参数量和训练 token 数应该大致按 1:20 的比例匹配(即 1B 参数需要约 20B token)。
这篇论文的影响是深远的:它让业界意识到,盲目加大模型不是最优策略,还需要确保有足够的训练数据来”喂饱”模型。但后续的实践表明,Chinchilla 法则的系数估计可能有误差——Epoch AI 在 2024 年的复现研究指出,最优的 token-to-parameter 比例可能接近 1:26 而非 1:20。
更重要的是,工业界很快发现了”过度训练”(overtraining)的价值:即使超过了 Chinchilla 最优点继续训练,推理成本的节省(用更小的模型达到相近的性能)往往值得额外的训练计算开支。Llama 3 的 8B 模型使用了 15T token,token-to-parameter 比例高达 1:1875——远超 Chinchilla 建议的 1:20。这意味着:在实际部署中,最优的训练策略不是”计算最优”,而是”推理最优”。这个转变对数据工程的启示是:我们需要的数据量可能比 Chinchilla 预测的要大得多。
2023:LIMA / Phi——“质量远重要于数量”
2023 年出现了两个看似相反但实际互补的发现。
LIMA(Less Is More for Alignment, Zhou et al., 2023)用仅仅 1000 条精心挑选的指令-回复对进行 SFT,就训练出了表现不俗的模型。这提出了”表面对齐假说”(Superficial Alignment Hypothesis):SFT 阶段需要的信息量远比想象的少,它主要是激活预训练已经学到的知识,并赋予模型合适的输出格式。
Phi-1 / Phi-1.5 / Phi-2(Microsoft,2023)则证明了另一个方向:用极高质量的合成数据(“教科书质量”)训练的小模型,可以在特定任务上打败大得多的模型。Phi-1 只有 1.3B 参数,但在代码生成上超过了很多 10B+ 的模型。
这两个发现的共同启示是:数据质量对模型效果的影响可能被严重低估了。不是所有 token 都平等——一个 token 的”教学价值”可以有数量级的差异。
2024:FineWeb / DCLM——“系统化的数据策略是可复现的科学”
2024 年是大模型数据工程走向科学化的关键一年。
FineWeb(HuggingFace,2024)不仅发布了一个高质量数据集,更重要的是公开了完整的数据管线和详细的消融实验。他们系统性地测试了每一个处理步骤的贡献:
- 文本提取工具的选择(trafilatura vs resiliparse)——差异可以达到 2-3 个 benchmark 点。
- 去重策略(MinHash 参数选择)——过度去重反而降低了性能。
- 质量过滤策略(教育价值分类器 vs 通用质量分类器)——教育价值分类器带来了显著提升。
- “过度过滤”的代价:他们发现 C4 数据集的一些过滤规则(比如”含有坏词的句子整条删除”)误杀了大量优质内容。
DCLM(DataComp for Language Models,Li et al., 2024)则把数据策略的比较做成了一个标准化的竞赛框架:固定模型结构和训练配置,只改变数据,比较不同数据策略的效果。这使得数据工程第一次有了”可控变量实验”的范式——也正是 1.3.1 中 DataComp-LM 那张对比表的来源。
这一年的核心认知转变是:数据工程不再是”黑魔法”,而是可以系统化、可复现、可优化的工程科学。
2025-2026:合成数据 + 可验证奖励 + 精细化数据管理
进入 2025-2026 年,数据工程的认知继续快速演化:
合成数据从争议走向成熟。早期人们担心合成数据会导致”模型坍缩”(model collapse)——用模型生成的数据训练模型,会导致分布逐渐退化。Nature 上的一篇论文(Shumailov et al., 2024)给出了理论上的警告。但实践表明,混合使用真实数据和合成数据(通常合成数据比例不超过 30%)是安全且有效的。关键在于质量控制和多样性保证。
比例之外还有一根轴:合成数据放在训练流程的哪一阶段。 2026 年 9 月的两项独立工作把这个问题从经验推向了理论:
- 放置位置决定有没有风险地板(Learning with Synthetic Data via SGD in High-Dimensional Linear Regression,arXiv:2609.09572,2026-09-09)。在高维线性回归加 model shift 的有限样本分析中,混合训练(真实与合成混喂)除标准 bias / variance 外还引入 fluctuation 与 persistent drift 两项源失配效应,会诱发强模型坍缩,并留下一个随数据量增大也不消失的 excess risk floor;而两阶段训练(合成数据只在第一阶段使用)可以绕开该地板,代价是引入 filtered initialization bias。论文还给出两阶段严格优于纯真实训练的有限样本充要条件,并指出模型越大,混合训练下的合成退化可能被放大。
- 所需最小人类比例是有理论界的,但此前的算法给错了(Preventing Model Collapse: A Fisher-Rao Perspective on the Dynamics of Training with Synthetic Data,arXiv:2609.18878,2026-09-16)。该文用概率单纯形的 Fisher-Rao 度量替代欧氏度量分析合成数据训练动力学,指出既往基于欧氏度量的下界在高维时会退化为空界,改用信息几何后得到随维度不失效的收缩与不变界,并明确「有效所需数据比例与此前隐含的不同」。
合并后的工程表述:「不超过 30%」应当改写为「在给定投放协议下的最小人类数据比例」——先定协议(混合 vs 两阶段),再定比例。本章 §1.4 已经主张「配比必须按训练阶段切换」,本条是同一原则在合成数据上的具体化。
限定:两项工作均为 2026-09 预印本、未见同行评议;前者是高维线性回归加 random sketch 的理论设定(非大模型实验),后者是动力学理论保证。两项都不能据此推出具体的安全比例数值,2609.18878 的 abs 页也没有给出任何具体数字。
HuggingFace 等机构 2026 年的系统性研究(arXiv: 2604.13977,FinePhrase 数据集)提供了更精确的量化指导:prompt 设计对合成数据质量的影响(~40%)甚至超过了生成器模型规模的影响(~30%)。这意味着精心设计的提示模板比简单地使用更大的模型更有效。
合成数据缩放律提供了更高层面的量化认知。SynthLLM(Microsoft Research, Zeyu Qin et al., COLM 2025)通过可扩展框架将预训练语料转化为高质量合成数据集,首次系统性地测量了合成数据的缩放律:(1) 合成数据遵循可修正的缩放律(rectified scaling law),跨模型规模一致;(2) 收益在 ~300B tokens 处开始递减;(3) 大模型在更少训练 token 下接近最优——8B 模型在 1T tokens 达峰,而 3B 模型需要 4T;(4) SynthLLM 优于现有合成数据生成和增强方法。这与 InfoLaw(字节跳动,arXiv: 2605.02364)将重复建模为指数衰减项的理论框架相互呼应——“合成数据比例不超过 30%“不是一个魔法数字,而是信息密度差导致的边际递减可被精确计算的结果。
同时,He et al. (2026) 在医疗领域进行了迄今最大规模的合成数据实验(80 万+ 合成数据点),揭示了两代训练后模型退化的具体机制:关键病理特征被”平均化”、人口统计特征偏向中年男性(多样性丢失)、最严重的是——虚假安抚率(false reassurance rate)从基线约 13% 激增至 40%。仅经过两代训练,AI 文档即在临床上完全失去可用性。这是对”两代训练即可导致模型退化”最有力的量化实证。
合成数据不仅是”生成什么内容”,“如何组织这些内容”同样关键。Book-Level Organization(arXiv: 2607.28109, Jiawen Tao et al., 2026-07-30)在中训练场景下证明,将相关内容组织为连贯的”书级文档”(含目录规划、章节组装)相比将同内容拆为独立文档,额外带来 +1.02 平均增益;在此基础上,单独改写文档的 Rephrase 基线再对比进一步获得 +1.17 增益——证明”结构化合成”的价值不仅在于内容改写,更在于知识的系统化组织。
中文合成数据规模突破(2026-05-31)。面壁智能联合清华、OpenBMB 发布 UltraData 系列:Ultra-FineWeb-L3(600B tokens 总量,中文 200B+)是当前全球最大中文预训练合成数据,UltraData-SFT-2605 是国内首个千万级”深思考/非思考”全覆盖 SFT 数据集。配套的 L0-L4 数据分级治理体系(按知识密度分 5 级,每级对应不同的去重/过滤/合成策略)标志着中文数据工程从”通用流水线”走向”分级精细化”。
2026-09-08 扩展(本章原快照为 2026-05-31,已过期四个月):面壁智能 / OpenBMB 随 MiniCPM5-2B 再开源四个数据集——UltraData-Code(从约 1.92 亿个 GitHub 仓库采集,产出约 400B 词元 L2 算法代码精筛数据 + 约 150B 词元 L3 任务导向合成数据,覆盖 L0–L3 分级)、UltraData-SFT-Agent-2609(约 50 万条 Agent 样本,含工具调用、网页搜索、代码生成、Office 文档处理、数据库交互)、UltraData-RL-2609(8 万+ RL 样本,经可验证性过滤 → 奖励可信性校验 → 难度匹配三阶段清洗,直指「题目不可验证 / 奖励标签不可信 / 难度与模型能力不匹配」三大痛点)、UltraX(见 §1.5)。截至 2026 年 9 月,UltraData 系列累计下载超 266 万次、已开源数据集超 10 个。上述 token 数与样本数为官方发布口径,经四家中文科技媒体一致转述,本书未直读 HuggingFace 数据集卡片。
DeepSeek R1(2025)的出现改变了 RL 数据的范式。他们证明了在数学和编程领域,可以用可验证奖励(验证答案是否正确、代码是否通过测试用例)完全替代人类偏好标注,并且训练出了强大的推理能力。这意味着:对于有明确正确性标准的任务,RL 数据的构造从”主观偏好”转向了”客观验证”。
数据管理的精细化成为新趋势。2026 年 3 月发表的综述论文《Towards Next-Generation LLM Training: From the Data-Centric Perspective》(arXiv: 2603.14712)系统性地总结了数据工程的最新实践,标志着这个领域正在从经验驱动转向体系化。
1.9 数据工程 ROI 排序与工程决策
从 ROI(投入产出比)看,预训练数据工程的收益排序:
ROI高 → 低:
1. 质量过滤(FineWeb-Edu级):3个月,MMLU +5-10
2. 去重(MinHash+LSH):1个月,MMLU +2-4
3. 数据配比优化:2个月,MMLU +2-3
4. 课程化与退火:1个月,MMLU +1-2
5. PII脱敏与安全:2个月,合规底线
6. Tokenization优化:2周,效率+5%
7. 精细打标:3个月,便于后续调度
前 3 项是 ROI 最高的”决定性三件套”,任何团队都应该优先做扎实。
结合 Quality-aware Scaling Law 的算力预算分配,工程决策表如下:
| 场景 | 推荐策略 |
|---|---|
| 算力紧张(<100 GPU·月) | 优先质量:用 FineWeb-Edu 级精选,10-30% 规模即可 |
| 算力充裕(>1000 GPU·月) | 质量+规模双管齐下:精选+扩展数据池 |
| 已有大模型想改进 | 优先补质量短板:找最差的数据源做替换 |
| 新领域(如医疗/法律) | 优先领域质量:花预算做领域精筛 |
1.10 踩坑经验总结
坑1:盲目追求数据规模
很多团队一上来就堆数据量(“我们也有 15T tokens!”),但 PPL 分析后发现 60% 是低质量网页。先把质量做到 FineWeb-Edu 级,再谈规模。
坑2:评测集污染未察觉
某团队 MMLU 从 60 飙到 75,团队狂欢。后排查发现训练数据里混入了 MMLU 测试集的题目(CC 抓取到的 benchmark 解读文章)。数据流水线必须做 13-gram 去污染检查。
坑3:质量分类器过拟合
某团队用 GPT-4 标注 5 万条”教育价值”训练分类器,准确率 96%。但应用到全量数据后发现精选出的都是”教科书格式”内容,模型在闲聊、创意写作上能力崩塌。分类器训练数据必须覆盖多领域、多风格。
坑4:忽略数据混合的阶段化
某团队用同一份配比从 0 训到 1T tokens,结果模型在通用能力饱和后无法再提升数学/代码能力。配比必须按训练阶段切换:早期重通用、中期重推理、末期重精选。(这与 1.3.3 的 DSR 调度思想一致:高质量数据不仅”喂多少”重要,“何时喂”更重要。)
1.11 本书的定位与阅读路线
这本书不是什么
- 这不是一本”大模型入门”书。我们假设你已经了解 Transformer 架构、自注意力机制、基本的训练流程。
- 这不是一本”算法书”。我们不会花大量篇幅推导损失函数或训练算法。需要时会简要介绍,但重点始终是数据。
- 这不是一本”工具手册”。虽然会介绍具体的工具和代码,但核心目的是传递思维方式和判断力,而非”按步骤操作”。
这本书是什么
这是第一本系统、深入、专注于大模型数据工程的专业书籍。我们的目标是:
- 建立系统认知:让你对大模型训练的全部四个数据阶段(1.4 节)有完整的理解框架。
- 传递实践细节:那些论文里一笔带过、但实际工作中极其重要的细节——阈值怎么选、边界情况怎么处理、哪些做法看起来合理但实际有坑。
- 呈现认知演进:每个主题都会讲”业界的认知是怎么变化的”(如 1.8 节的时间线),帮助你理解当前实践背后的来龙去脉,避免重蹈覆辙。
- 培养数据直觉:好的数据工程师能在看到一条数据时”感觉到”它有问题。这种直觉来自大量的案例积累和深入的理解。
阅读路线
本书的核心组织结构围绕四个数据阶段与三个数据工程层次(1.4、1.5 节)展开,可按角色按需阅读:
如果你是预训练数据工程师:第 1 部分(数据采集、解析、清洗、去重、配比)是你的核心参考,建议通读。合成数据和工具链章节也很相关。
如果你负责中训练:先读本章(总论),然后直接进入中训练相关的部分(长上下文、代码、数学、合成数据)。你可能还需要回头参考预训练部分的清洗和去重方法。
如果你负责 SFT / 后训练:行为对齐与偏好对齐部分是重点,标注方法论也是必读。
如果你是技术负责人:本章给你全景认知,数据配比章节帮你理解关键决策,端到端案例章节给你实操参考。
如果你想从头到尾读:那就按章节顺序来。我们精心设计了各章之间的衔接,后面的章节会自然地引用前面的概念。
全书的特色设计
为了让阅读更有效,我们设计了几个贯穿全书的特色元素:
🔄 认知演变:每章都有一个”认知演变”专栏,用时间线形式展示业界对该主题的认知是如何变化的(如 1.8 节)。知道”为什么变”比知道”现在怎么做”更有价值。
🔬 显微镜案例:每章包含 1-2 个深度案例分析,把某个具体的细节”放大”来讲。比如:某一条脏数据是怎么逃过过滤的?某一次配比调整背后的决策过程是什么?
💡 反直觉发现:专门收集和突出那些与直觉相反的研究发现。这些发现往往是最有价值的——它们提醒我们,数据工程中想当然是危险的。
🛠 动手环节:每章末尾提供可运行的代码练习。数据工程是一门实践学科,亲手处理一小批数据比读十页论文更有效。
1.12 写在四个阶段之前
在进入具体的技术章节之前,我想分享一个观点。
大模型的训练数据,在本质上是对人类知识和人类偏好的一种数字化压缩。预训练数据是对人类集体知识的压缩,SFT 数据是对人类期望行为的压缩,RL 数据是对人类价值判断的压缩。数据工程师做的事情,本质上是在决定:模型应该看到人类世界的哪些面?以什么比例?以什么顺序?
这意味着数据工程不仅仅是一个技术问题,它还涉及深层的判断:什么知识更重要?什么行为更合适?什么价值更优先?这些判断会通过数据传递给模型,再通过模型影响数以亿计的用户。
所以,做好数据工程不仅需要技术能力,还需要对”好”与”坏”的深思熟虑。我希望本书不仅帮助你成为一个更好的数据工程师,也帮助你成为一个更审慎的数据决策者。
现在,让我们从预训练数据开始,深入到细节中去。
动手环节:感受数据质量的蝴蝶效应
目标:通过一个可量化的实验,直观感受脏数据比例对模型行为的影响。
练习 1:构造”受污染”数据集
用 Python 模拟一个简单的数据污染实验。我们会在一个干净的中文语料中注入不同比例的噪声,然后观察语言模型困惑度(perplexity)的变化。
"""
数据污染敏感性实验
目标:验证 0.1%、1%、5% 的脏数据对 n-gram 语言模型困惑度的影响
"""
import random
import math
from collections import Counter, defaultdict
def create_clean_corpus(n_docs: int = 1000) -> list:
"""模拟干净的中文语料(用主题句模板生成)"""
topics = [
"机器学习是一种从数据中自动学习规律的技术方法",
"深度学习使用多层神经网络来提取数据的层次化特征",
"自然语言处理旨在让计算机理解和生成人类语言",
"数据预处理是机器学习流水线中最关键的步骤之一",
"模型评估需要在独立的测试集上进行以避免过拟合",
]
corpus = []
for _ in range(n_docs):
doc = random.choice(topics) + "。" + random.choice(topics) + "。"
corpus.append(doc)
return corpus
def inject_noise(corpus: list, noise_ratio: float) -> list:
"""注入指定比例的噪声文档"""
n_noise = int(len(corpus) * noise_ratio)
noise_docs = [
"asdfgh 乱码 #$%^ qwerty !@#$" * 3,
"クリック ここ 下載 무료 ダウンロード click here",
"买买买 加微信 免费领取 扫码关注 限时优惠 点击这里",
]
noisy_corpus = corpus.copy()
for i in random.sample(range(len(noisy_corpus)), n_noise):
noisy_corpus[i] = random.choice(noise_docs)
return noisy_corpus
def compute_bigram_ppl(corpus: list) -> float:
"""计算 bigram 语言模型的平均困惑度"""
bigram_counts = Counter()
unigram_counts = Counter()
for doc in corpus[:800]: # 前 800 条做训练
chars = list(doc)
for c in chars:
unigram_counts[c] += 1
for i in range(len(chars) - 1):
bigram_counts[(chars[i], chars[i+1])] += 1
total_log_prob = 0
total_tokens = 0
vocab_size = len(unigram_counts)
for doc in corpus[800:]: # 后 200 条做评估
chars = list(doc)
for i in range(len(chars) - 1):
bg = (chars[i], chars[i+1])
prob = (bigram_counts[bg] + 1) / (unigram_counts[chars[i]] + vocab_size)
total_log_prob += math.log2(prob)
total_tokens += 1
avg_log_prob = total_log_prob / max(total_tokens, 1)
return 2 ** (-avg_log_prob)
# 实验
clean = create_clean_corpus(1000)
print("噪声比例 → 困惑度")
print("-" * 30)
for ratio in [0.0, 0.001, 0.01, 0.05, 0.10]:
noisy = inject_noise(clean, ratio)
ppl = compute_bigram_ppl(noisy)
print(f" {ratio*100:5.1f}% → PPL = {ppl:.1f}")
练习 2:四阶段数据量级可视化
将本章介绍的四个训练阶段的数据特征可视化,建立直观感受(回顾 1.4 节”数据量递减,价值递增”)。
"""
四阶段数据量级对比可视化
"""
stages = {
"预训练": {"tokens": 15e12, "单条影响": 0.001, "单条成本": 0.00001},
"中训练": {"tokens": 500e9, "单条影响": 0.01, "单条成本": 0.0001},
"SFT": {"tokens": 1e6, "单条影响": 1.0, "单条成本": 0.1},
"RL": {"tokens": 1e5, "单条影响": 10.0, "单条成本": 1.0},
}
print(f"{'阶段':<8} {'数据量':>15} {'单条影响力':>10} {'单条成本':>10}")
print("-" * 50)
for stage, info in stages.items():
tokens = info["tokens"]
if tokens >= 1e12:
amount = f"{tokens/1e12:.1f}T tokens"
elif tokens >= 1e9:
amount = f"{tokens/1e9:.0f}B tokens"
elif tokens >= 1e6:
amount = f"{tokens/1e6:.0f}M 条"
else:
amount = f"{tokens/1e3:.0f}K 条"
print(f"{stage:<8} {amount:>15} {info['单条影响']:>10.3f} {info['单条成本']:>10.5f}")
# 思考题:为什么单条数据的影响力和数据量呈反比?
练习 3:设计你自己的数据质量评估维度
结合本章 1.5 节的三层模型,为一个假想的 7B 中文通用模型项目,设计一份数据质量评估表。需要涵盖:
- 采集层:数据来源、覆盖度、合规性
- 处理层:清洗步骤、过滤标准、PII 处理
- 策略层:配比方案、课程策略、评估指标
尝试为每个维度设定一个量化的”合格线”(如:语言识别置信度 ≥ 0.65)。这个练习没有标准答案,但会帮助你建立系统思维。
练习 4:设计合成数据质量评估实验
结合本章关于合成数据的讨论和 HuggingFace 的系统性研究(arXiv: 2604.13977),设计一个合成数据质量评估实验:
"""
合成数据质量评估实验设计
参考 arXiv: 2604.13977 的系统性研究框架
"""
experiment_design = {
"研究问题": "影响合成预训练数据质量的关键因子是什么?",
"四个自变量": [
"Prompt 设计:结构化格式 vs 自然语言",
"生成器模型:1B / 7B / 72B",
"源数据质量:高(arXiv)/ 中(新闻)/ 低(论坛)",
"投放协议:混合训练 vs 两阶段训练(合成数据只在第一阶段使用)"
],
"关键发现预测": [
"Prompt 设计影响 ~40%(最重要)",
"生成器模型影响 ~30%",
"源数据质量影响 ~20%",
"配比与协议需联合决定:不存在脱离协议的「最优配比」"
]
}
# 思考题 1:为什么 prompt 设计的影响可能超过模型规模?
# 提示:考虑模型学习的是分布模式还是表面特征。
#
# 思考题 2(2026-10-08 补):原设计里「最优配比:真实 70% + 合成 30%」这个单一答案是不完整的。
# 按 arXiv:2609.09572,同样的 30% 比例,混合投放可能留下不随数据量消失的 excess risk floor,
# 两阶段投放则可能绕开它。请把实验改为在「协议 × 比例」两个维度上做网格,
# 并把观测指标从「最终 benchmark」改为「随数据量增长的性能曲线是否还在上升」——
# 混合训练的问题恰恰是终分可能还行、但曲线已经压平了,只看终分看不出来。
本章要点回顾
- 微小比例(~0.1%)的脏数据就能导致严重的训练问题——大模型对数据质量的敏感度超出预期;必须建立质量门控(1.1 节)。
- 黄金法则:同等算力下,数据质量提升 1 个量级 > 参数提升 1 个量级;质量是杠杆,规模是乘数(1.2 节)。
- Quality-aware Scaling Law 把质量写进定律:形式化质量参数 Q 让”质量 > 规模”可测量、可优化;InfoLaw 与 DSR 进一步回答了”低质量读几遍""高质量何时喂”(1.3 节)。
- 大模型训练分为四个数据阶段:预训练 → 中训练 → SFT → RL,数据量递减但单条价值递增(1.4 节)。
- 数据工程有三个层次:采集层、处理层、策略层——策略层常被忽视但最体现工程判断力;自动化策展(DataEvolve / propella-1)是前沿(1.5 节)。
- FineWeb-Edu 用 9% 数据反超全量;但 84% 增益来自领域重平衡——“先调分布,再提质量”(1.6 节)。
- Llama3 / DeepSeek-V3 是”数据决定上限”的最强实证,数据相关贡献占 65%+;配比决定模型性格(1.7 节)。
- 2020-2026 年间,业界对数据的认知经历了多次范式级转变:从”越多越好”到”量质匹配”到”质量优先”到”系统化科学”再到”合成数据 + 可验证奖励”(1.8 节)。
- 数据质量不是绝对属性,而是依赖目标的函数——“好数据”是能最大化模型效用的数据(贯穿全章)。
- 合成数据有两根轴:占多少(比例)× 放在哪(混合 vs 两阶段)。只谈比例的「30% 安全线」会把一个二维问题压成一维(1.8 节)。
引用核对(2026-10-08 一手):本章及
enc-ch00引用的 12 个 arXiv 编号已逐条抓取 abs 页citation_title与citation_date复核,编号、标题方向、时点全部核对通过(2602.02400 / 2505.04741 / 2605.02364 / 2605.25698 / 2603.14420 / 2602.12414 / 2604.13977 / 2607.28109 / 2502.10341 / 2603.14712 / 2601.05808 / 2601.17058)。另修正两处命名:§1.3.3 补 DSR 论文官方全称;§1.6.3 的「WebOrganizer」并非论文名,官方标题为 Organize the Web: Constructing Domains Enhances Pre-Training Data Curation。