一个大模型从原始网页、代码仓库和论文,变成能对话、写代码、做数学题乃至调用工具的系统,中间到底经历了什么?2022 年,人们习惯用「Pretrain + RLHF」概括它;今天,更准确的描述是一组相互回流的模块:数据工程 → Pretrain → Mid-training → SFT → 偏好优化 → 推理 RL(RLVR)→ Agentic 训练 → 蒸馏与评估。
这里刻意说「模块」,而不是八个必经的串行阶段:并非每个模型都经过每一环,SFT、偏好优化和 RL 也经常交替多轮;评估结果、模型生成数据和线上失败案例还会回流到更早的环节。下面这张总图和八篇文章,是理解真实训练系统的坐标系,而不是唯一配方。
本系列会围绕 Llama 3、DeepSeek-V3/R1、Tulu 等公开程度较高的系统,回答三类问题:每个阶段解决什么问题、核心目标和算法是什么、工程上如何验证它确实有效。涉及实操时,只展示最关键的 1~2 段代码;完整脚本另放仓库。
| 篇目 | 主题 | 核心问题与招牌内容 |
|---|---|---|
| ①(本篇) | 训练全景 + 数据工程 | 从来源治理到训练分片的完整数据 DAG;方案选择与消融方法 |
| ② | Pretrain | Scaling Laws、Dense/MoE、精度与调度;Loss Spike 排查实录 |
| ③ | Mid-training | 高质量数据升配、领域续训、长上下文扩展;LR 与数据配比双轴图 |
| ④ | SFT | 指令数据、chat template、full FT/LoRA;Loss Masking 代码实战 |
| ⑤ | 偏好对齐 | RM/PPO、DPO/SimPO/KTO;PPO 四模型交互图与 DPO 核心代码 |
| ⑥ | 推理 RL(RLVR) | Verifier、GRPO/DAPO、test-time scaling;KL、熵与长度失控排查 |
| ⑦ | Agentic 训练 | 工具调用 SFT、多轮环境 RL、credit assignment、异步 rollout |
| ⑧ | 蒸馏与评估 | 黑盒/白盒蒸馏、judge 偏差、污染与动态评测;训练—评估闭环 |
全系列使用同一套视觉语法:象牙白节点表示核心处理,橙色表示流程起止,蓝色表示数据、存储或模型资产,绿色表示决策;实线箭头表示主流程,虚线边框或连线表示可选阶段与反馈。涉及 PPO/GRPO 等多模型交互时,再用节点内的状态标签明确「可训练」与「冻结」,避免让颜色同时承担两套含义。第五篇与第六篇会采用相同布局,直接显示 GRPO 主要省掉的是 learned critic,而不是笼统地说「少两个模型」。
范围说明:数据研究不存在可以在一篇文章里逐篇穷尽的「所有论文」。本文覆盖截至 2026 年中、对文本 LLM 预训练最有代表性的公开论文、数据集与生产实践,并给出一条可落地的完整参考管线。多模态数据、SFT/偏好数据的专门治理留到后续文章。
一、全系列总地图:线性叙事,循环系统

图 1:现代大模型训练生命周期。橙色表示起止节点,蓝色表示模型资产,绿色表示评估决策;虚线边框表示可选阶段,虚线连接表示反馈回流。
这张图有四个需要提前澄清的地方。
第一,Pretrain 通常是单次正式训练中最大的训练算力项,但「90%」不是普适常数。 DeepSeek-V3 报告列出的最终训练账本是:预训练 266.4 万、上下文扩展 11.9 万、后训练 0.5 万 H800 GPU 小时,合计 278.8 万;按这套口径,pretrain 与 context extension 占绝大多数。但它不包含所有失败实验、数据处理、人工标注,也不等于在线 RL 的 rollout 推理成本。后文谈算力占比都会注明口径,不把单个案例外推成行业定律。
第二,能力上限与用户体验不能简单二分。 Pretrain 决定大部分知识、语言和表征能力,post-training 改变能力的可调用性、行为分布和安全边界;推理 RL 还可能实质性提高某些可验证任务的能力。更准确的说法是:它们优化不同分布上的目标,而不是一个只管「上限」、另一个只管「性格」。
第三,Mid-training 不是统一定义的标准阶段。 本系列把它操作性地定义为:主干通用预训练之后、典型 post-training 之前,仍使用语言建模目标进行的继续训练,包括退火期高质量混合、领域继续预训练和长上下文扩展。不同论文可能称它 annealing、continued pretraining、context extension 或第二阶段预训练。
第四,评估不是终点,而是数据系统的控制信号。 数据质量分类器、混合权重和合成策略如果没有冻结评测集、污染检查与受控训练实验,就只是审美判断。训练项目真正的闭环是「提出数据假设 → 代理实验 → 规模复核 → 失败切片 → 修改数据」。
二、七个训练模块速览
2.1 Pretrain:规模化的下一个 token 预测
自回归预训练在上下文 (x_{<t}) 下预测 (x_t),最小化 token 级负对数似然。Scaling Laws 用小规模实验估计参数量、有效数据量与算力之间的关系;Chinchilla 给出 compute-optimal 视角,后来的超量训练与数据受限研究则说明:最优点还取决于推理预算、数据质量和可重复数据量。
架构上常见 Dense(如 Llama 3)和 MoE(如 DeepSeek-V3)两条路线;注意力实现包括 MHA、GQA 和 MLA。第二篇会把单个 training step 的 data/gradient flow、LR schedule、BF16/FP8 与 loss spike 诊断放在同一张图里。案例数字也会明确 tokenizer 口径:Llama 3 405B 报告约 15.6T 训练 token;DeepSeek-V3 报告 14.8T token。
2.2 Mid-training:高杠杆,但不是魔法窗口
Mid-training 常做三类事:在训练后段提高数学、代码与精选网页的采样权重;用领域数据继续预训练;通过 RoPE 参数与分阶段序列长度扩展上下文。LR 退火与换数据常同时发生,因此不能仅凭一次结果断言提升来自「低 LR 更容易记住好数据」;需要固定 token、调度与初始化做消融。
代表实践包括 OLMo 2 的 Dolmino mix、MiniCPM 的 WSD/退火实验、Llama 3 的长上下文训练。第三篇会重点讨论能力收益、遗忘、数据重复和上下文长度之间的因果拆分。
2.3 SFT:教模型条件化地完成任务
SFT 在指令—回答、多轮对话或工具轨迹上继续最大似然训练。它不一定只对 response 计算 loss:可选 full-sequence、completion-only、所有 assistant turn 或只训最终 assistant turn;选择取决于模板是否要学习、user 内容是否来自模型、以及是否担心复述 prompt。工程上通常把不参与 loss 的 label 设为 -100,这是 PyTorch 交叉熵的 ignore index 约定,不是 SFT 的数学定义。
第四篇会对比少而精与规模化指令数据、蒸馏与 rejection sampling、full FT 与 LoRA,并展示 TRL/LLaMA-Factory 中 mask 的真实构造。
2.4 偏好对齐:RM/PPO 与直接偏好优化
经典 RLHF 先从偏好对训练 reward model,再用 PPO 更新 policy,并用 reference policy 的 KL 约束漂移。DPO在特定偏好模型假设下,把优化写成 chosen/rejected 相对 reference 的分类损失:省掉显式 RM 训练和在线 rollout,但训练时仍需 policy 与 reference 的 log probability(reference 结果可预计算)。SimPO、IPO、ORPO 等改变目标或参考项;KTO使用二元好/坏反馈,最好视为相邻的 preference optimization 方法,而不是简单的 DPO 小改版。
2.5 推理 RL(RLVR):奖励可验证的长程推理
RLVR 用答案匹配、单元测试、形式证明检查器等 verifier 提供奖励。GRPO的核心简化是以同题多条 rollout 的组内相对奖励构造 advantage,省掉 learned value/critic;它是否保留 reference model 取决于是否计算 KL。DAPO不只是「去 KL」,还组合了动态采样、非对称 clipping、token-level policy gradient 与超长样本处理等工程设计。
DeepSeek-R1报告观察到反思、回溯等行为,但「涌现」是对实验现象的描述,不是所有模型和奖励设置都能复现的保证。第六篇会把 reward hacking、熵坍缩、长度膨胀和 KL 监控放进一套排障树。
2.6 Agentic 训练:在环境中学习多轮决策
Agentic 训练把一次回答扩展为 model ↔ environment 的 trajectory:模型调用搜索、浏览器、代码沙箱或业务 API,根据 observation 继续行动,最终以任务成功率、测试用例或过程检查器给奖励。难点包括环境可复现性、稀疏奖励的 credit assignment、长轨迹 token 归因、异步 rollout 的版本滞后,以及工具本身造成的数据泄漏。
2.7 蒸馏与评估:迁移能力,也检验因果
黑盒蒸馏用 teacher 生成训练样本,白盒蒸馏匹配 logits 或中间分布。DeepSeek-R1的公开实验显示,在其若干小模型设置中,推理轨迹蒸馏优于直接对相应小模型做同类 RL;这是一组具体实验结果,不能泛化成「蒸馏永远胜过 RL」。评估则贯穿每一阶段:base 模型看受控能力曲线,post-training 看任务与偏好,agent 看端到端成功率,同时审计 judge 偏差、训练—测试污染和重复运行方差。
三、数据工程首先是目标、治理与实验设计
3.1 为什么它不是一串 filter
数据管线优化的对象至少有六个,而且彼此冲突:
- 能力收益:在目标 token 和算力预算下提高验证损失与下游能力;
- 覆盖与多样性:保留语言、领域、文体、长尾知识和不同观点;
- 唯一性与隐私:减少重复、记忆和敏感信息暴露;
- 合法与可追溯:记录来源、时间、许可/政策、退出与删除链路;
- 可复现与可运维:能恢复中断、重放任一版本、解释每条样本为何保留;
- 吞吐与总成本:数据处理、分类器推理、tokenize、存储和训练加载都在预算内。
因此「质量」不是单一标量。教育价值分类器可能提升 MMLU,却压缩叙事、口语和文化多样性;全局去重提高 unique tokens,也可能取消高质量内容原本的自然上采样。成熟系统会保留多维 score 与原因标签,在 mixture 阶段决策,而不是早早把世界压成一个布尔值。
3.2 公开研究的演进脉络
| 路线 | 代表工作 | 留下的关键方法 |
|---|---|---|
| 规则清洗与语言建模 | C4/T5、CCNet、Gopher/MassiveText | 语言识别、Wikipedia-like perplexity、长度/符号/重复规则 |
| 大规模多源开放语料 | The Pile、ROOTS、Dolma | 来源配比、文档化、治理、分层消融 |
| Web 精炼与去重 | RefinedWeb、FineWeb | WARC 正文抽取、MinHash、按步骤训练代理模型 |
| 竞赛式数据选择 | DataComp-LM/DCLM | 固定原始池、算力与 53 项评估,比较可复现的 curation 配方 |
| 学习式质量评分 | Ask-LLM、QuRating、FineWeb-Edu、Nemotron-CC | LLM 标注→小分类器蒸馏、多维评分、质量与多样性平衡 |
| 数据选择与配比优化 | DSIR、DoReMi、DoGE、RegMix | 分布匹配、group DRO、双层优化、代理模型回归 |
| 合成与改写 | Phi-1、WRAP、Cosmopedia、Nemotron-CC | 教科书合成、源约束改写、任务化重表达 |
| 解析器与数据保真 | AICC/MinerU-HTML、Beyond a Single Extractor | 保护表格/公式/代码,模型解析器,多抽取器 union |
| 多语言与全生命周期开放 | FineWeb2、OLMo 3 | 语言特定处理、数据谱系、完整 model flow |
这条演进线的方向不是「模型过滤取代所有规则」,而是:原始数据与标签分离、便宜到昂贵的级联、来源专用分支、受控训练实验,以及可撤销的数据决策。
3.3 完整参考流水线

图 2:预训练数据工程的三层生产架构。橙、蓝、绿边框分别区分来源、处理和组装层;右侧元数据与谱系是贯穿所有阶段的控制面。
顺序不是绝对的。例如 exact dedup 很便宜,可在模型打分前完成;全局 MinHash 要不要提前,取决于它能省多少推理成本、是否会破坏质量选代表;PII 有时必须在任何外部模型评分前先脱敏。正确做法是把依赖关系写成 DAG,并用成本与政策决定拓扑顺序。
四、十四个模块:功能、实现与方案比较
4.1 目标、数据契约与冻结评测集
先写清目标模型的语言、领域、上下文长度、token 预算、许可边界和评测集,再下载数据。否则「高质量」无从定义,配比优化也会把噪声当信号。
每条文档至少需要以下数据契约:content_id、source_id、URL/仓库/文件标识、crawl 或版本时间、MIME、语言及置信度、许可/权利状态、parser 版本、质量向量、policy flags、duplicate cluster、父文档与生成 lineage。原文放 immutable raw lake;分数与决策放可版本化 sidecar。这样阈值改变时只重算选择,不必重新抓取和解析。
评测集要在数据选择前冻结并版本化,至少包含:通用能力、目标领域、语言、长尾、安全、记忆/隐私和人工抽样。按来源/时间/重复簇划分 holdout;否则同一模板或转载文章会横跨训练与验证。
4.2 获取、来源登记与权利治理
| 来源 | 优势 | 特有处理 | 主要风险 |
|---|---|---|---|
| Common Crawl WARC | 规模和覆盖最大,保留 HTML | 正文抽取、模板与 spam、快照版本 | 网页可访问不等于拥有训练权;条款、司法辖区与退出要求 |
| Curated web/百科/问答 | 信号密度高 | 保留 revision、作者与许可 | 过采样导致风格单一、benchmark 重叠 |
| 代码与 Software Heritage | 代码、历史和许可元数据丰富 | repo 级解析、生成/vendor 文件、secret 扫描 | 许可兼容、凭据、训练/评测仓库泄漏 |
| PDF/论文/专利 | STEM 与长文价值高 | OCR、版面、公式/表格、引用顺序 | OCR 噪声、版权、脚注与双栏错序 |
| 书籍/新闻/授权数据 | 长篇连贯性和编辑质量 | 格式专用解析、版本管理 | 权利与地域限制 |
| 人工/合作伙伴数据 | 可控且目标明确 | consent、用途限制、审计 | 规模小、成本高、敏感信息 |
Common Crawl 提供 WARC(原始响应)、WAT(元数据)和 WET(预抽文本)。FineWeb 的受控实验表明,在其设置中从 WARC 用 trafilatura 重新抽取优于直接使用 WET;这不是说 WET 永远不可用,而是抽取选择必须以目标内容和训练实验验证。
工程上把许可、robots/退出状态、地域与用途限制作为数据字段,而不是散落在脚本里的 URL 黑名单。退出或删除请求产生 tombstone,通过 stable ID 和 lineage 传播到派生文本、合成版本和训练 manifest。Common Crawl 使用条款本身也明确提醒归档内容仍可能受原网站条款和权利约束;实际项目应由法律与隐私团队制定政策,本文不构成法律意见。
4.3 完整性检查与文本规范化
这一层常被漏掉,却决定了所有 hash、长度阈值与 tokenizer 统计是否稳定。
- 验证压缩包、checksum、HTTP 状态、MIME 与编码,隔离损坏/截断文档;
- 解码 HTML entity,移除不可见控制符和异常 NUL,统一换行与空白;
- Unicode 通常采用 NFC;不要无条件 NFKC,因为它会折叠数学符号、全角字符和某些语言差异;
- 同时保留 raw text 与 canonical text:前者用于审计/重新解析,后者用于 hash 与规则;
- 规范化 URL(host 大小写、默认端口、fragment、追踪参数)但保留原 URL;
- 代码、Markdown、LaTeX、表格和缩进使用各自的规范化策略,不能套网页纯文本规则。
所有 stage 写 manifest:输入/输出版本、代码与容器版本、配置 hash、随机种子、文档/字节/token 数、每种 reason code 的保留率及分布漂移。处理任务要幂等、可分片、可恢复。
4.4 来源专用抽取:HTML、PDF 与代码不能共用一把刀
HTML 抽取方案:
| 方案 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| WET | 无需自行解析、启动快 | boilerplate 与结构保真不可控 | 原型或计算极受限 |
| trafilatura | 正文精度高、FineWeb 验证充分 | 偏保守,可能丢列表/代码/表格 | 通用网页高精度路线 |
| jusText | 较高召回、规则透明 | 需要后续更强过滤 | token 数量受限的长周期训练 |
| resiliparse | 快、资源效率高 | 仍是通用启发式抽取 | DCLM 式大规模处理 |
| 多抽取器 union/路由 | 增加覆盖,结构页面可择优 | 去重、质量归因与成本更复杂 | 内容异质、强调 code/table 的管线 |
| 模型解析器 | 能识别语义块并转 Markdown | GPU/推理成本、模型偏差 | 高价值 STEM 或结构化页面 |
Nemotron-CC报告其 jusText 配置比 trafilatura 获得约 57.5% 更多被分类为高质量的 token,选择的是高召回路线。相反 FineWeb 选择更保守的 trafilatura。Beyond a Single Extractor进一步发现,多抽取器结果取 union 可让 DCLM-Baseline 的 token yield 最多提高 71%,且标准任务不降;表格和代码任务对抽取器差异尤其敏感。AICC则用 0.6B 模型做 HTML 序列标注和 Markdown 恢复,在其 62B-token 对照中相对 trafilatura 版本平均提升 1.08 个百分点。这些数字都依赖各自管线,不能直接横比。
PDF 应先检测 born-digital 还是扫描件:优先版面感知文本解析,失败再 OCR;恢复双栏阅读顺序、标题层级、公式、表格与参考文献,并保留页码/bounding box 方便追溯。代码则按仓库而非孤立文件处理:识别语言与依赖,过滤 vendor、minified、generated、二进制和数据文件,扫描 secret,并以 repository/commit 为切分与去重单位。The Stack v2基于 Software Heritage 的持久标识与多种仓库附属内容,是这条分支的重要参考。
4.5 语言、领域与文档类型识别
fastText lid.176 速度快,适合大规模第一层;CLD3/pycld2 可作独立信号;GlotLID覆盖 1,665 种语言,适合长尾多语言管线。最新的 CommonLID提示:在干净 benchmark 上的 LID 准确率可能高估真实网页表现。
关键工程选择不是「哪个模型最高分」,而是:
- 文档级 + 段落级联合判断,避免多语言、引用、代码和公式把整篇误分;
- 按语言校准阈值,不使用一个全局 confidence;
- 低置信文档路由到 mixed/unknown 池,不立即删除;
- 语言之后再跑语言特定的停用词、标点、字符比例和质量模型;
- 同时预测 domain/doc type(论坛、论文、教程、商品页、代码文档),为后续规则和混合提供条件。
FineWeb 英文管线使用 fastText 分数 0.65 作为其阈值,这是案例,不是默认值。公式密集、短文本与 code-switching 应单独抽样画混淆矩阵,再定语言级阈值。
4.6 便宜规则:负责明显坏,不负责定义所有好
规则层的意义是用极低成本移除确定性噪声,为昂贵模型减负。常见信号包括:
- URL/domain policy 与成人、恶意、内容农场信号;
- 文档、行、词的最小/最大长度;
- alphabetic、数字、符号、emoji、异常 Unicode 和 stopword 比例;
- 句末标点、平均词长、超长词、bullet/ellipsis 比例;
- 重复行、重复段、top n-gram 覆盖率、模板密度;
- lorem ipsum、cookie/banner、SEO 关键词堆砌、机器乱码;
- 代码/数学专用的可解析性、注释比例、测试/文档与 minified 检测。
C4、Gopher/MassiveText 和 Dolma 提供了成熟规则集,但不能原样复制。C4 的 blocklist 分析显示,词表过滤会不成比例地移除某些身份与方言相关文本;英语句末标点规则用于中文、代码或表格也会大规模误杀。规则必须输出 reason_code 与原始数值,按语言、来源、时间、domain 分层看 retention rate,并人工抽查边界样本。
FineWeb 的公开消融是一个好例子:其三条 custom filter 合用约移除 22% token,而不是 7%;团队通过训练小模型比较了 token 损失与能力收益。启发式规则的最佳角色是高精度拒绝和特征生产,不是单独承担全部质量判断。
4.7 学习式质量评分:先定义 rubric,再选模型

图 3:质量过滤应按单位成本级联。越靠下语义能力越强、单文档成本越高,只让少量困难样本进入昂贵阶段。
| 路线 | 优点 | 局限 | 典型用途 |
|---|---|---|---|
| KenLM/perplexity | 极便宜、无 GPU | 倾向「像参考语料」,不等于事实或教育价值 | CCNet 式 Wikipedia-likeness |
| fastText/线性模型 | 吞吐高、易解释和部署 | 依赖浅层词汇/风格特征,容易学到捷径 | DCLM 全量筛选 |
| 小型 encoder 分类/回归 | 能理解上下文,质量更细 | GPU 成本与长度截断 | FineWeb-Edu 式 teacher→student |
| 多分类器集成 | 提高覆盖,减少单一品味 | 校准和冲突处理更复杂 | Nemotron-CC 分桶 |
| LLM 直接评分/成对比较 | rubric 灵活,可解释 | 贵、位置/长度/模型偏差 | 标注种子、灰区复核 |
DCLM 的一个关键结果是:用 OpenHermes 2.5 与高分 ELI5 等指令式文本作正例、随机网页作负例训练 fastText,比传统「像 Wikipedia」正例更适合它的评测目标;该 baseline 用 7B 模型训练 2.6T token,报告 64% 的 5-shot MMLU。FineWeb-Edu由 Llama-3-70B-Instruct 对 46 万样本给 0~5 教育价值分,再训练分类器;对 15T FineWeb 打分约用 6,000 H100 GPU 小时,阈值 3 产生论文版约 1.3T token 的高教育性子集。
QuRating把写作、专业知识、事实信息、教育价值分开,以 LLM pairwise judgment 训练 QuRater 并标注 260B 语料;其结果表明质量与多样性要同时优化,按连续 score 软采样可能优于硬阈值。
推荐实现是级联:规则 → fastText/perplexity → encoder → LLM 只审查抽样和不确定区。保留 quality_vector 而非单分数,例如 {readability, educational, factual_density, style, spam, toxicity, domain};用 reliability diagram 校准分数,并审查 classifier 对语言、长度、来源的选择偏差。
4.8 去重:按粒度分层,先建簇再选代表

图 4:去重的正确抽象是先发现重复关系并建立簇,再按质量、许可、时间和结构选择代表,最后决定采样权重。
| 层级 | 方案 | 优点 | 缺点/风险 |
|---|---|---|---|
| URL/版本 | canonical URL、版本和 redirect | 最便宜,保留时间关系 | 不同 URL 转载检测不到 |
| 精确文档 | canonical text hash | 快、确定、适合前置 | 轻微编辑即可绕过 |
| 段落/行 | hash 或 Bloom filter | 清模板与重复段落 | 误删免责声明、引用与必要上下文 |
| 模糊文档 | MinHash + LSH | 可扩展、公开管线中最常见 | 阈值/分片敏感,只看词面集合 |
| 精确子串 | suffix array 等 | 找跨文档长片段 | 全局内存/IO 成本高 |
| 语义重复 | embedding + ANN/聚类 | 能找改写近义样本 | 成本高、易损多样性,边界难解释 |
MinHash 把文档表示为归一化 n-gram/shingle 集合,用多个随机 hash 的最小值近似 Jaccard。若签名被切成 (b) 个 band、每 band (r) 行,Jaccard 为 (s) 的文档成为候选对的概率为:
[ P(\text{candidate}) = 1 - (1-s^r)^b ]
FineWeb 采用 5-gram、112 个 hash、14×8 band 的配置,并最终选择每个 crawl snapshot 内独立去重:其全局按时间去重实验只留下约 4T token,而且早期 crawl 的残余质量更差。这个结果说明代表保留策略与数据时间分布会改变训练效果,不是「全局越彻底越好」。另一方面,长周期训练会更缺 unique token;Nemotron-CC 因此组合 exact、全局 MinHash 和 substring dedup。两种目标不同,不能互相推出矛盾结论。
Lee et al.显示训练数据重复会增加逐字记忆,去重可减少生成训练片段;SemDeDup与 D4进一步研究 embedding 空间中的语义冗余与多样化,但这类方法更贵,也可能把少数观点当冗余。
工程上不要在发现重复时立刻「保留第一个」。先写 cluster_id,再按质量、许可、来源可信度、结构完整性、时间和长度选代表;必要时保留多版本并调整采样权重。Bloom filter 适合流式 membership test,但有假阳性、不能直接恢复重复簇且结果依赖输入顺序。所有去重都应在 train/eval split 前共享 cluster 信息,防止簇跨 split。
4.9 隐私、安全、毒性与权利是四个不同问题
PII 可以从高精度 regex(email、IP、电话、密钥模式)开始,再用 NER 或上下文模型识别人名、地址与敏感组合。Dolma 的公开策略对少量 email/IP/电话做 mask、过多则移除;Dolma 3 进一步用 LLM 制定上下文规则,再蒸馏到较小模型,以区分论文作者等公开信息和真正风险内容。代码分支还要扫描 API key、token、私钥与凭据历史。
安全/毒性 不应与低质量合并。毒性分类器对方言、身份讨论、医学和法律文本可能有系统偏差;更稳妥的做法是分别记录 explicit content、hate、harassment、self-harm、malware 等标签,再按模型用途和训练阶段设阈值。保留经审查的安全知识池,避免模型因完全没见过风险内容而无法识别它。
权利与来源策略 处理许可、用途限制、退出与删除;隐私策略 处理个人可识别性和可提取风险。两者会重叠但不能互相替代。对 policy-fail 样本使用隔离区和 tombstone,不让它继续进入合成与缓存。Carlini 等关于训练数据提取的研究(2021、2022)说明,重复和异常序列会显著放大记忆风险;过滤、去重、访问控制和训练后红队要共同工作。
4.10 去污染:保护评估,不只是跑一次 13-gram
没有普适的 n-gram 长度。GPT-3 报告使用过 13-gram,Llama 3 的分析使用 8-gram;tokenizer、语言和文档长度不同,阈值也应不同。PALOMA使用段落级匹配与 Bloom filter,并对短段落另作处理;污染综述系统总结了精确、词面与语义检测的盲点。
推荐分层:
- 对标准化文本、题干、答案、few-shot 示例做 exact hash;
- token/character n-gram + Bloom/倒排索引找长重叠;
- BM25 找局部复制,embedding 找翻译/改写候选;
- 数学检查题干、答案和解题模板,代码检查仓库、测试和 AST/标识符;
- 人工复核相似候选,记录 overlap 类型与阈值;
- 在每次加入新来源、翻译、合成或改写数据后重跑,而不是只在最终做一次。
将疑似污染放 quarantine 而非永久删除,因为常识性短语和公共代码接口会产生假阳性。能力报告同时给出 contaminated/clean split、时间切片和动态或私有评测,避免一个检测器决定结论。
4.11 合成、改写、翻译与结构化增强
合成数据至少分五类:
| 类型 | 做法 | 优势 | 风险 |
|---|---|---|---|
| 从零生成 | 给主题、受众和体裁,生成教材/练习 | 可精准补能力与难度 | 幻觉、覆盖受 teacher 知识限制 |
| 源约束改写 | 给原文,清洗或改成百科/问答/教程 | 保留知识广度、改善形式 | teacher 风格同质化、事实漂移 |
| 信息抽取/任务化 | 从文档生成 QA、摘要、知识列表、证明 | 同一知识产生多种监督结构 | 重复放大、答案泄漏 |
| 翻译/跨语言迁移 | 高资源语言到低资源语言 | 补长尾语言与平行信号 | 翻译腔、文化替代、名称错误 |
| 蒸馏轨迹 | teacher 生成推理/代码/工具轨迹 | 传递任务策略 | 错误链条、不可验证步骤、teacher imprint |
Phi-1 并非「只靠合成数据」:其报告组合约 6B 筛选后的代码相关文本和约 1B synthetic textbook/exercise token。Cosmopedia公开版本包含超过 3,000 万文件、约 25B token,由 Mixtral-8x7B 生成;官方也明确提示合成内容可能包含幻觉。WRAP以不同风格改写 C4,并报告在其设置中约 3× 的学习效率提升。Nemotron-CC 的 6.3T token 中约 1.9T 为合成数据,低质量内容做 Wikipedia-style rewrite,高质量内容做 QA/知识提取等多视角增强。
每条合成样本必须保留 parent_id、teacher/checkpoint、prompt/template、sampling 参数、seed 和 verifier 结果;对源文做 factual entailment/实体数字一致性检查,对代码运行测试,对数学验证最终答案;之后重新过 PII、安全、污染、exact/semantic dedup。抽样检查模板泄漏、固定开场、长度分布和 teacher 特有措辞。真实数据与合成数据混合通常比封闭递归生成更稳健;不要让下一代模型只学习上一代模型的分布。
4.12 数据选择、配比、课程与重复
Llama 3 报告的预训练混合约为 50% general knowledge、25% math/reasoning、17% code、8% multilingual。它是 Llama 3 在其目标和数据池上的结果,不是「42% 数学代码适合所有模型」的行业定律。
| 方法 | 信号与优化方式 | 优点 | 局限 |
|---|---|---|---|
| 人工比例/temperature sampling | 来源先验、规模与经验 | 简单稳定、易加入政策约束 | 交互难预测,迁移性弱 |
| DSIR | 让候选 n-gram 分布匹配目标分布 | 便宜、无需训练大模型 | 目标集选择决定偏好 |
| DoReMi | proxy model + group DRO 学 domain 权重 | 可在固定 domain 上自动调权 | 依赖 reference 与 proxy transfer |
| DoGE | 以目标域泛化做双层优化 | 目标明确 | 优化与计算更复杂 |
| RegMix | 多个微型训练实验拟合 mixture→metric 回归 | 可搜索大量组合、成本相对低 | 小模型排序可能翻转 |
| Online mixing/Skill-It | 训练中按 loss/skill 动态更新 | 能适应学习进度 | 系统更复杂、可复现性下降 |
| CLIMB | embedding 聚类发现隐式 domain 后搜索 | 不要求人工域标签 | 聚类语义和最终能力未必一致 |
实用流程是:先用人工/政策约束给可行域;再用 DSIR/DoReMi/RegMix 等产生候选;用相同架构、token、超参和多个 seed 的小模型比较;最后在较大 checkpoint 的 continued training 上复核。代理实验并非永远可靠:DataDecide在 25 个 corpus、多个尺度和 seed 上发现,小模型/连续指标能以很低成本预测不少比较,但预测能力依任务和尺度变化,不能只跑一个 150M 模型就宣布大模型最优配比。
多 epoch 也不是「四遍以内等同新数据」的定律。Scaling Data-Constrained Language Models在最高 9B 参数、900B training tokens 的实验范围内发现,固定算力时最多约 4 epoch 的重复对 loss 影响很小,之后重复 token 的边际价值衰减;后续研究指出可重复程度还依赖数据集大小和分布。工程上为每个来源记录 effective epochs、重复簇曝光次数与 curriculum,而不是只看全局 token 数。
4.13 Tokenizer:决定 token 预算、吞吐和语言公平
常见选择是 BPE、SentencePiece BPE/Unigram 或 byte-level BPE,并配置 byte fallback 和 special tokens。词表变大通常减少序列 token 数、改善代码和多语言压缩,但会扩大 embedding/LM head、logits 计算和稀有 token 学习难度。Llama 3 使用 128K 词表,并报告相对 Llama 2 tokenizer 最多约 15% 的 token 压缩改善。
Tokenizer 不必机械地在「最终完整混合」上训练,而应在反映目标 mixture 的分层代表样本上训练;最终比例尚未确定时允许迭代。审计指标包括每种语言/领域的 bytes-per-token、字符/token、UNK/byte fallback 率、数字/公式/代码边界、词表利用率、压缩率与 loader 吞吐。研究表明 tokenizer 选择会改变性能与训练/推理成本,英语中心词表会显著提高部分语言的 token 成本(Tokenizer Choice、Getting the Most out of your Tokenizer)。
先冻结 tokenizer 版本,再以该 tokenizer 重算所有 token 数、长度阈值、mixture 预算与污染 n-gram;不同论文的「T tokens」若 tokenizer 不同,不能直接等量比较。
4.14 序列构造、shuffle、落盘与 QA
Tokenizer 后还不是训练数据。需要决定:
- 文档拼接:多个短文以 EOS 拼接;可允许跨文档 attention,或用 block-diagonal mask 禁止跨文档注意力(Llama 3 报告采用后者);
- 长文切分:截断、滑窗重叠、结构感知 chunk,或保留整篇供长上下文阶段使用;始终保留 doc/chunk ID;
- 代码增强:可加入 FIM(fill-in-the-middle)变换,但要独立记录转换和比例;
- packing:追求高 token utilization,同时正确处理 position、loss mask 与跨文档边界;
- shuffle:不一定必须在 tokenization 前完成。可以文档级预打乱,也可以 token 化后用确定性全局索引/两级 shuffle;目标是避免同站点、同来源、同质量桶长时间连续,并能精确恢复样本顺序;
- 存储:文档湖常用 JSONL/Parquet,训练侧用带 offset/index 的二进制 shard、WebDataset/tar 或框架原生格式;shard 大小按对象存储、重试成本与顺序读吞吐压测决定。
发布训练前设置 QA gate:schema/checksum、空文档与解码错误、每 stage 留存率、来源/语言/长度/质量漂移、duplicate cluster 跨 split、PII/secret 抽检、污染率、tokenizer fertility、packed sequence mask 单测、data loader 吞吐与固定 seed 可重放。输出 dataset card 与精确 manifest,而不仅是一个总 token 数。
五、三条公开生产管线告诉我们的不是同一个答案
5.1 FineWeb / FineWeb-Edu:消融优先的高精度路线
FineWeb 论文版处理 96 个 Common Crawl snapshots:WARC 经 trafilatura 抽取,成人 URL、fastText 英语阈值及 MassiveText 风格规则形成约 36T GPT-2 token 的基础池;每个 snapshot 独立 MinHash 去重,再加入筛选后的 C4/custom filters,形成最初约 15T token 的 FineWeb。FineWeb-Edu 用 46 万 teacher 标注训练教育性分类器,阈值 3 的版本约 1.3T token。
更重要的是实验方法:团队训练 192 个 crawl 对照模型,仅 crawl-time 分析就超过 60,000 H100 GPU 小时;公开博客同时给出每一步的模型 checkpoint 和评估。这个案例证明「造数据集」包含大量训练实验,不能只比较规则数量。
5.2 DCLM:固定赛场,暴露分类器正例的重要性
DCLM 建立 240T-token Common Crawl 候选池,固定模型、训练预算与 53 个下游评测,让不同 curation 策略可比较。其 baseline 使用 resiliparse、RefinedWeb 风格清洗/全局去重和 fastText top-10% 质量选择;fastText 以约 20 万指令/高质量问答正例与 20 万随机网页负例训练。最终 7B、2.6T-token 模型报告 64% 5-shot MMLU。
它最可迁移的经验不是「top 10%」,而是正例定义比分类器复杂度更重要:改变正例数据使 CORE 平均分提高约 3.5 点。质量模型学习的是 rubric 和训练分布,不是自然界客观存在的 quality。
5.3 Nemotron-CC 与 Dolma 3:长周期覆盖和完整谱系
Nemotron-CC 面向长周期训练,在抽取上选高召回 jusText,在去重上追求更多 unique token,以三个分类器集成将高质量占比从约 9% 提到约 25%,再把低质量网页改写、高质量网页多视角合成;最终 6.3T English tokens 中约 1.9T synthetic。其 8B/1T 对照的高质量子集比 DCLM 报告高 5.6 个 MMLU 点;这是该设置下的结果,不代表它在所有能力和预算上都优于更严格过滤。
OLMo 3 / Dolma 3 则展示了完整开放的数据生命周期:不同来源各有 HTML/OCR/code 分支,保留过滤属性、去重簇、质量与 topic 分类,最后组成公开的训练 mix。OLMo 3 报告的主混合约 5.93T token,并公开 checkpoints、数据与依赖。它提醒我们,最有研究价值的开放性不是只放最终 Parquet,而是放出从 raw source 到 model flow 的谱系。
三个案例的目标函数不同:FineWeb 强调逐步消融与单 token 质量;DCLM 强调固定赛场下可比较的数据选择;Nemotron-CC 强调长周期 unique coverage 与合成扩容;Dolma/OLMo 强调可追溯的开放科学。自建管线应先选择目标,再借鉴模块。
六、工具链:按工作负载和可复现性选,不按 Logo 选
| 工具 | 擅长 | 注意点 |
|---|---|---|
| DataTrove | FineWeb 同源组件;reader/extractor/filter/stats/token/dedup;local/Slurm/Ray | CPU/对象存储调优和全局去重仍需容量设计 |
| Dolma toolkit | tagger 与 attributes 分离、Bloom/MinHash、可审计流水线 | 应按自己的 policy 重写配置,不照抄阈值 |
| NeMo Curator | Ray/GPU 的 exact/fuzzy/semantic dedup、分类与 PII | GPU 加速是否划算取决于数据规模、网络和 IO |
| Data-Juicer | 大量文本/多模态 operators、Ray 与云上执行 | operator 多不等于配方已验证,仍需消融 |
| Spark / Beam / 自研 DAG | 复用既有数据平台、治理与 observability | NLP 算法组件和训练格式需自行集成 |
选型先做一组端到端 benchmark:每秒文档/token、峰值 RAM/VRAM、对象存储请求、shuffle、checkpoint/retry、输出确定性、sidecar 支持和运营可观测性。去重常受网络 shuffle/IO 限制,GPU kernel 的理论倍数不等于全流水线倍数,因此本文不引用脱离配置的「16×」宣传数字。
七、如何证明某一步真的有效
一套可复用的实验协议:
- 注册假设:例如「模型解析器保护公式,因此提升数学而不伤通用能力」;
- 只改一个因素:相同 raw sample、tokenizer、token 数、架构、优化器与 seed;
- 同时报告成本与保留率:训练指标之外,报告丢弃 token、unique token、处理 GPU/CPU 小时和存储;
- 多尺度、多 seed:极小 proxy 做筛选,至少一个中等规模复核,关键决策在目标 checkpoint 做 continued-training/annealing 验证;
- 看学习曲线而非单点:validation loss、下游指标、不同 token budget 的交叉和方差;
- 做切片与负向指标:语言、领域、长度、少数群体、记忆、毒性、校准,而不是只看 MMLU;
- 审计污染与 judge:先去污染,尽量用可复现 scorer,LLM-as-a-judge 要做顺序/长度/风格校准;
- 保留失败样本:比较被保留和被丢弃的 stratified sample,检查分类器究竟学到了什么捷径。
FineWeb 官方博客修正了一个常见误传:在逐 Common Crawl 快照的那组分析中,团队训练的是 192 个模型、合计超过 6 万 H100 GPU 小时,而不是「70 多个模型、约 8 万小时」。过滤器实验另有其他模型;不同统计范围会产生不同总数,所以写作时必须指明是哪组实验。小模型消融提供的是目标条件下的证据,不是绝对真理;proxy 排名可能随尺度、LR 和评测任务翻转。
八、总结:一条可落地的检查清单
现代 LLM 训练不是八个固定步骤,而是由数据、语言建模、行为学习、偏好/可验证奖励、环境交互、蒸馏和评估组成的反馈系统。本系列后七篇会逐一「点亮」这些模块,并严格区分论文事实、工程经验和合理推断。
对于文本预训练数据,一条足够完整的生产清单是:
- 明确目标、权利政策和冻结评测集;
- 建不可变 raw lake、stable ID、provenance 与删除谱系;
- 做完整性检查、Unicode/URL 规范化;
- 按 HTML、PDF/OCR、代码和 curated source 专用抽取;
- 文档+片段级语言、领域和类型路由;
- 便宜高精度规则过滤并保留 reason codes;
- 多维学习式质量评分,级联而非一刀切;
- URL→exact→段落→MinHash→子串→可选语义的分层去重,建簇后选代表;
- 分开处理隐私、安全、毒性、许可和退出;
- 对所有来源及每轮合成数据反复去污染;
- 对生成、改写、翻译和任务化数据保留 lineage,并重新验证;
- 用受约束的代理实验优化 mixture/curriculum/effective epochs;
- 在代表性混合上训练与审计 tokenizer;
- 正确 packing、边界 mask、确定性 shuffle 与分片,并通过完整性、分布、隐私、污染、吞吐和可重放 QA gate 后发布 manifest/data card。
最值得带走的不是某个阈值,而是三个原则:原始内容与决策标签分离;按成本级联但按依赖排 DAG;任何“最佳配方”都要用自己的目标、数据池与尺度重新消融。
下一篇进入 Pretrain:next-token objective、Scaling Laws、Dense/MoE、LR schedule 与 BF16/FP8。重点会是一套 loss spike 诊断路径——如何用 batch 指纹、梯度范数、激活统计和数值重放区分坏数据与数值不稳定,再决定 skip batch、回滚、降 LR、QK-Norm、attention scale、z-loss 或 embedding 独立 LR。
参考资料
数据集、公开配方与治理
- C4 / T5: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
- CCNet: Extracting High Quality Monolingual Datasets from Web Crawl Data
- Gopher: Scaling Language Models — Methods, Analysis & Insights from Training Gopher
- ROOTS: A Multilingual Dataset for Training Language Models
- RefinedWeb
- Dolma / OLMo / OLMo 3
- FineWeb / FineWeb 官方实验报告 / FineWeb2
- DataComp-LM
- Nemotron-CC
- The Stack v2 / StarCoder2
- AICC / Beyond a Single Extractor
质量、选择、配比与合成
- Ask-LLM / QuRating
- DSIR
- DoReMi / DoGE / RegMix / CLIMB
- DataDecide
- Scaling Data-Constrained Language Models
- Phi-1: Textbooks Are All You Need
- WRAP: Rephrasing the Web / Cosmopedia
去重、污染、隐私与 tokenizer
- Deduplicating Training Data Makes Language Models Better
- SemDeDup / D4
- PALOMA / Survey on Data Contamination
- Extracting Training Data from Large Language Models / Quantifying Memorization Across Neural Language Models
- SentencePiece / Tokenizer Choice / Getting the Most out of your Tokenizer
- The Llama 3 Herd of Models
