目录

  1. 概述
  2. 预训练数据工程
  3. 数据质量过滤
  4. 数据去重
  5. 数据混合与配比
  6. SFT 数据构造
  7. 合成数据与数据飞轮
  8. 数据污染检测
  9. 实践建议
  10. 参考文献

1. 概述

“Data-centric AI”的核心理念是:在模型架构和训练方法趋于同质化的背景下,数据质量成为决定模型能力的关键变量。LLaMA、Chinchilla、DeepSeek 等模型的成功均与其数据工程实践密切相关。

大模型数据工程覆盖三个阶段:

\[\underbrace{\text{预训练数据}}_{\text{大规模、低精度}} \rightarrow \underbrace{\text{SFT 数据}}_{\text{中等规模、高精度}} \rightarrow \underbrace{\text{偏好/RL 数据}}_{\text{小规模、极高精度}}\]

数据量呈金字塔形递减,但单条数据的质量要求递增。


2. 预训练数据工程

2.1 数据来源

来源 占比(典型) 特点
网页爬取(CommonCrawl 等) 60%-80% 规模大但噪声多,需重度清洗
书籍 5%-10% 长文本、高质量、叙事连贯
代码(GitHub) 5%-10% 结构化、提升推理能力
学术论文(arXiv 等) 2%-5% 高质量专业知识
维基百科 1%-3% 高质量百科知识
问答/论坛(StackExchange) 1%-3% 指令-回答模式
社交媒体 视策略而定 口语化、时效性强、噪声大

2.2 数据处理流水线

典型的预训练数据处理流水线:

原始采集 → 语言识别 → URL 过滤 → 质量过滤 → 去重 → 隐私脱敏 → 分词 → 打包

语言识别:fastText、CLD3 等工具识别文档语言,按目标语言筛选。

URL 过滤:基于黑白名单过滤低质量域名,使用域名级质量评分。

隐私脱敏:移除 PII(个人身份信息),常用正则匹配 + NER 模型识别邮箱、电话、身份证号等。

分词与打包:用 SentencePiece/BPE 分词后,将文档拼接为固定长度序列(如 4K/8K Token),文档间插入 EOS。

2.3 数据规模与 Chinchilla 定律

Chinchilla(Hoffmann et al., 2022)通过系统的缩放实验得出:在给定计算量 $C$ 下,最优参数量 $N$ 和训练 Token 数 $D$ 满足:

\[N \propto C^{0.5}, \quad D \propto C^{0.5}\]

即计算量翻倍时,参数量和数据量各增加约 $\sqrt{2} \approx 1.41$ 倍。经验法则是:每个参数对应约 20 个训练 Token。后续研究(如 DeepSeek、Llama 3)发现,在数据质量足够高时,用更多 Token(up to 10-20T)训练更小模型仍有收益。


3. 数据质量过滤

3.1 基于规则的过滤

  • 长度过滤:过短的文档通常是导航、错误页面,直接剔除。
  • 符号比例:高质量自然语言文字占比高;低质量页面常含大量标点、HTML 标签、链接。
  • 停用词比例:含太少停用词的文档可能是乱码或机器生成。
  • 行数/句子数:异常多短句可能是表格或垃圾内容。
  • 重复行比例:模板化页面(如电商列表)重复率高。

3.2 基于困惑度的过滤

用一个高质量语料训练的 $n$-gram 或小型语言模型对文档评分,过滤高困惑度(低质量)和过低困惑度(可能是模板/重复内容)的文档:

\[\text{PPL}(d) = \exp\left(-\frac{1}{|d|}\sum_{i=1}^{|d|} \log P(w_i | w_{GPT-3、LLaMA 等均使用了基于困惑度的过滤。

3.3 基于分类器的过滤

训练一个二分类器区分”高质量”(维基百科、书籍)和”低质量”(未过滤网页)文档,对所有语料评分并阈值过滤。

  • FineWeb(Penedo et al., 2024):使用基于 BERT 的分类器,以维基百科为正样本、随机网页为负样本。
  • DSIR:通过重要性采样选择与目标分布(如维基百科)$n$-gram 分布匹配的文档。
  • Text Quality Classifier:可基于启发式规则标注训练数据,再训练分类器实现规模化过滤。

3.4 生成式质量评估

用 LLM 对文档质量进行打分(如教育价值、事实准确性、写作质量),作为过滤或加权依据。这种方法精度高但成本大,适合用于精选子集或蒸馏小模型。


4. 数据去重

4.1 为什么去重

  • 记忆风险:重复内容导致模型对特定文本过拟合,可能一字不差地”背诵”训练数据。
  • 训练效率:重复 Token 浪费计算量,等效于减少了有效训练数据。
  • 泛化能力:多样化数据有助于模型学习更通用的模式。
  • 数据污染:测试集泄漏通常通过去重流程检测和移除。

4.2 去重层级

层级 方法 粒度
URL 级 精确 URL 匹配 整页
文档级 MinHash + LSH 近似重复文档
段落/句子级 $n$-gram 精确匹配 重复段落
行级 哈希精确匹配 重复行

4.3 MinHash + LSH

MinHash 是一种估计集合 Jaccard 相似度的高效算法:

\[J(A, B) = \frac{|A \cap B|}{|A \cup B|}\]

将文档表示为 $n$-gram 集合,计算 MinHash 签名,再通过 LSH(Locality-Sensitive Hashing)将相似度高于阈值的文档哈希到同一桶中,实现近似线性时间的近重复检测。LLaMA、GPT-3 等均使用 MinHash 做文档级去重。

4.4 子串去重

CCNet、BLOOM 等使用后缀数组(Suffix Array)检测语料中重复出现的长字符串(如 50-gram),并移除包含重复片段的文档。这种方法可检测跨文档的段落级复制。


5. 数据混合与配比

5.1 Do-Resume 机制

不同领域数据在训练过程中的引入时机影响模型能力:

  • 预训练早期:通用网页数据建立基础语言能力。
  • 预训练中期:加入代码、数学等高质量数据增强推理。
  • 预训练后期:加入高质量书籍、论文、长文本数据提升专业能力。

DeepSeek、Llama 3 等采用了类似的”预训练课程”策略。

5.2 领域配比

领域配比是超参数优化问题。常见做法:

  • 小规模实验:用小模型(100M-1B)做混合比例消融,找到最优配比后迁移到大模型。
  • 代理模型(Proxy Model):训练小模型预测不同配比下大模型的性能。
  • DoGE(Domain Generalization Mix):基于梯度信号自动调整各领域权重。
  • Token 质量加权:不做硬过滤,而是按质量分数对不同文档加权采样。

5.3 代码与数学数据的特殊价值

即使是通用语言模型,加入代码和数学数据也能显著提升:

  • 代码数据:提升结构化推理、长程依赖建模和指令遵循能力(Chain-of-Thought 能力与代码训练相关)。
  • 数学数据:提升符号推理和多步推理能力。
  • 论文表明代码数据对推理能力的提升远超其在语料中的占比预期。

6. SFT 数据构造

6.1 SFT 数据质量原则

监督微调(SFT)数据的质量远比数量重要。LIMA(Zhou et al., 2023)表明仅用 1000 条高质量 SFT 数据即可对齐出风格良好的模型。核心原则:

  • 多样性:覆盖不同任务类型、领域、难度和表达方式。
  • 一致性:回答风格、格式、长度保持统一。
  • 高质量:回答准确、有帮助、格式规范。
  • 难度梯度:从简单到复杂,覆盖不同能力层级。

6.2 Self-Instruct

Self-Instruct(Wang et al., 2023)用种子任务引导 LLM 自动生成指令数据:

  1. 准备少量(如 175 条)人工编写的种子任务。
  2. 用 LLM 基于种子生成新指令。
  3. 对每个指令生成回答。
  4. 过滤低质量生成,构建 SFT 数据集。

Self-Instruct 是 Alpaca、Vicuna 等开源模型数据构造的基础。

6.3 Evol-Instruct

Evol-Instruct(WizardLM, Xu et al., 2023)让 LLM 对指令进行”进化”,逐步提升难度和复杂度:

  • 深度进化:增加约束、提升推理深度、细化要求。
  • 广度进化:变换主题、创造新领域、换角度提问。
  • 每轮进化后过滤无效/退化的指令。

Evol-Instruct 生成的数据能训练出处理复杂指令能力更强的模型。

6.4 其他数据构造方法

  • ShareGPT / 对话日志:从真实用户与 ChatGPT 的对话中提取高质量交互。
  • 拒绝采样(Rejection Sampling):对每个提示采样多条回答,用奖励模型或规则筛选最佳回答。
  • 蒸馏(Distillation):用强模型(如 GPT-4)生成回答,训练小模型。
  • 人工标注:领域专家编写高质量回答,成本高但质量最优。
  • 多轮对话构造:将单轮数据扩展为多轮对话,增强模型对话能力。

7. 合成数据与数据飞轮

7.1 合成数据的类型

类型 说明 示例
合成指令数据 LLM 生成指令和回答 Self-Instruct、Evol-Instruct
合成偏好数据 LLM 生成回答对并标注偏好 RLAIF、Constitutional AI
合成推理数据 让模型生成 CoT 推理过程 Phi、OpenAI o1
合成验证数据 用测试用例/数学答案验证正确性 RLVR(可验证奖励 RL)
合成领域数据 用 LLM 生成特定领域训练语料 医疗、法律问答

7.2 数据飞轮(Data Flywheel)

数据飞轮是指模型能力提升与数据质量提升之间的正反馈循环:

\[\text{更好的模型} \rightarrow \text{生成更高质量合成数据} \rightarrow \text{训练更好的模型}\]

关键机制包括:

  • 模型自生成 SFT 数据:用当前模型生成回答,用奖励模型筛选优质回答,加入训练集。
  • 拒绝采样微调(RFT):用模型对同一问题采样多条推理链,保留正确答案,形成训练数据。
  • RLVR 数据循环:用可验证奖励(代码测试通过、数学答案正确)自动生成训练信号,无需人类标注。
  • 人类反馈持续收集:部署后收集用户反馈(点赞/点踩),持续优化。

7.3 合成数据的风险

合成数据使用需警惕模型坍塌(Model Collapse)—— 用模型生成的数据递归训练会导致输出多样性丧失和质量退化。核心防御策略:

  • 真实人类数据始终占主体。
  • 合成数据比例设置上限(通常 10%-30%)。
  • 对合成数据做去重和多样性筛选。
  • 用水印技术识别并控制合成数据占比。
  • 持续注入新鲜真实数据打破递归循环。

详见 llm-mllm/llm-defects.md 中模型坍塌章节。


8. 数据污染检测

8.1 什么是数据污染

数据污染(Data Contamination)指训练数据中意外包含了评测基准的测试数据,导致评测分数虚高。随着模型训练数据规模增大,污染几乎不可避免。

8.2 检测方法

  • $n$-gram 重叠:检查评测样本与训练语料的 $n$-gram 重叠率(如 13-gram)。
  • 前缀匹配:检查评测题目开头是否出现在训练数据中。
  • 嵌入相似度:用嵌入模型检测语义级重叠。
  • 成员推断攻击:统计模型对训练/非训练样本的困惑度差异。
  • Canary 检测:在数据中插入已知标记字符串,检查模型是否泄露。

8.3 去污染策略

  • 评测基准发布后,从训练数据中移除匹配的文档。
  • 对时间敏感的评测,设置训练数据截止日期早于评测发布日期。
  • 报告评测结果时同时报告污染检测结果。
  • 对已污染的评测,使用无污染子集或动态生成的新评测。

9. 实践建议

9.1 预训练数据建议

  • 数据清洗流水线应模块化:语言识别 → URL 过滤 → 质量分类 → 去重 → 脱敏,每步可独立调优。
  • 用小模型做消融实验确定数据配比,不要直接在大模型上试。
  • 保留数据版本和处理日志,确保实验可复现。
  • 代码和数学数据的价值远超其占比,不要因”不是语言数据”而忽视。

9.2 SFT 数据建议

  • 质量优先于数量:1000 条精心编写的数据可能胜过 100K 条低质量数据。
  • 用 Evol-Instruct 等方法提升数据复杂度和多样性。
  • 回答风格应统一(格式、语气、详细程度),风格不一致会让模型困惑。
  • 包含一定比例的”拒绝回答”样本,教会模型处理超出能力范围的问题。

9.3 合成数据建议

  • 将合成数据作为真实数据的补充而非替代。
  • 用可验证奖励(RLVR)场景的合成数据最可靠,因为正确性可自动判定。
  • 建立数据质量监控:定期采样人工检查,跟踪合成数据多样性和质量指标。
  • 记录合成数据的生成模型、Prompt 和筛选规则,确保可追溯。

10. 参考文献

[1] J. Hoffmann, S. Borgeaud, A. Mensch, et al., Training Compute-Optimal Large Language Models, NeurIPS, 2022.

[2] H. Touvron, T. Lavril, G. Izacard, et al., LLaMA: Open and Efficient Foundation Language Models, arXiv preprint, 2023.

[3] G. Penedo, Q. Malartic, D. Hesslow, et al., The FineWeb Datasets: Decanting the Web for the Finest Text Data at Scale, arXiv preprint, 2024.

[4] Y. Wang, Y. Kordi, S. Mishra, et al., Self-Instruct: Aligning Language Models with Self-Generated Instructions, ACL, 2023.

[5] C. Xu, Q. Sun, K. Zheng, et al., WizardLM: Empowering Large Language Models to Follow Complex Instructions, ICML, 2024.

[6] C. Zhou, P. Liu, P. Xu, et al., LIMA: Less Is More for Alignment, NeurIPS, 2023.

[7] I. Shumailov, Z. Shumaylov, Y. Zhao, et al., The Curse of Recursion: Training on Generated Data Makes Models Forget, Nature, 2024.

[8] N. Muennighoff, A. M. Rush, B. Barak, et al., Scaling Data-Constrained Language Models, NeurIPS, 2023.

[9] S. Longpre, G. Yauney, E. Reif, et al., The Data Provenance Initiative: A Large Scale Audit of Dataset Licensing & Attribution in AI, arXiv preprint, 2023.

[10] R. Jiang, C. Huang, Y. Ma, et al., Direct Preference Optimization with Data Quality, arXiv preprint, 2024.

留下评论