合成数据与数据蒸馏
先说结论
合成数据是指由 AI 模型(通常是更强的"教师"模型)生成的、用于训练其他模型的数据;数据蒸馏则是指通过合成数据将大模型的知识转移到小模型中的系统化流程,已成为 2024-2025 年 LLM 训练的核心范式之一。
先把核心脉络捋清楚
数据生成方法对比
| 方法 | 核心思想 | 代表工作 | 数据质量 | 成本 |
|---|---|---|---|---|
| Self-Instruct | 模型自我生成指令数据 | Alpaca, Wang et al. 2023 | 中等 | 低 |
| Evol-Instruct | 渐进式演化指令复杂度 | WizardLM, Xu et al. 2023 | 较高 | 中 |
| 解释蒸馏 | 教师模型提供推理痕迹 | Orca, Mukherjee et al. 2023 | 高 | 中高 |
| 纯 RL 生成 | 模型自己探索并生成推理数据 | DeepSeek-R1-Zero | 极高(需筛选) | 高 |
| 人工 + AI 协作 | 人工标注 + AI 扩展 | Phi 系列, InstructGPT | 最高 | 高 |
关键术语
| 术语 | 含义 |
|---|---|
| 合成数据(Synthetic Data) | 由模型生成的训练数据,非人工标注 |
| 数据蒸馏(Data Distillation) | 用强模型的输出训练弱模型的完整流程 |
| 教师模型(Teacher) | 生成合成数据的大模型 |
| 学生模型(Student) | 使用合成数据训练的小模型 |
| 数据污染(Contamination) | 训练数据中包含测试集内容,导致虚高的评估结果 |
| 模型坍塌(Model Collapse) | 递归使用合成数据训练导致模型退化 |
原理/机制
1. Self-Instruct 流程
Self-Instruct(Wang et al., 2023)开创了用模型自身生成训练数据的范式:
- 种子指令:人工编写约 175 条高质量指令-输出对
- 指令生成:让模型基于种子生成新指令(多样化)
- 输出生成:让模型为每条新指令生成输出
- 过滤:去除低质量、重复或不合规的数据
- 训练:用过滤后的数据微调模型
Alpaca(Stanford, 2023)用这个方法,仅花约 600 美元就从 LLaMA 7B 微调出接近 text-davinci-003 水平的模型。
2. Evol-Instruct 的进化策略
Evol-Instruct(WizardLM, Xu et al., 2023)通过以下操作将简单指令逐步演化为复杂指令:
| 进化操作 | 示例 |
|---|---|
| 增加约束 | "写一个排序函数" → "写一个 O(n log n) 的原地排序函数,不使用额外空间" |
| 深化推理 | "解释什么是递归" → "分析递归与迭代的等价性,并给出不可互相转换的例子" |
| 具体化 | "写一篇文章" → "为《纽约时报》写一篇关于 AI 伦理的 800 字评论文章" |
| 增加难度 | "解决一个数学题" → "解决一个涉及多步积分的 IMO 级别问题" |
| 扩展主题 | 从编程扩展到编程 + 安全 + 性能优化 |
3. 数据质量的维度
高质量合成数据需要关注:
- 多样性(Diversity):覆盖广泛的指令类型、难度和领域,避免模式集中
- 准确性(Accuracy):教师模型的输出必须可靠,错误输出会"误导"学生
- 复杂性(Complexity):数据应包含多步推理和复杂任务,不能只有简单 QA
- 去污染(Decontamination):严格排除与评估基准重叠的数据
- 格式一致性:统一的输出格式有利于学生模型学习
4. 模型坍塌问题
Shumailov et al.(2023, Nature 2024)揭示了递归训练的致命问题:
- 第一代:教师模型生成数据,质量可控
- 第二代:用第一代学生模型生成数据,尾部分布开始丢失
- 第 N 代:模型只记住高频模式,输出变得重复、无意义
关键发现:模型坍塌不是渐进的,而是在某一代突然崩溃。
设计时真正要权衡什么
- 数据量 vs 数据质量:大量低质量数据不如少量高质量数据。Microsoft Phi 系列证明了"教科书级"少量数据的有效性。
- 教师模型选择:GPT-4/Claude 生成质量高但成本高且存在 TOS 限制;开源模型更自由但质量较低。
- 自动化 vs 人工介入:全自动化效率高但可能引入系统性偏差;人工审核提升质量但成本高。
- 合成数据占比:纯合成数据有坍塌风险;混合真实数据与合成数据是更安全的做法。
- 过滤策略的严格程度:过严会丢弃有效数据,过松会引入噪声。通常需要多阶段渐进式过滤。
容易踩的坑
- 数据污染导致虚假基准:训练数据中不小心包含了 MMLU、GSM8K 等基准的题目,模型在基准上虚高但实际能力不足。
- 教师模型的偏见放大:教师的系统性错误被学生放大,形成"偏见遗传"。
- 多样性不足:生成数据集中在少数模式上,模型泛化能力差。
- 格式过拟合:学生模型学会模仿输出格式而非真正理解任务。
- 忽视数据时效性:合成数据可能包含过时信息,对知识密集型任务造成问题。
工程落地时我会怎么做
- 多阶段数据管线:生成 → 初筛(规则)→ 精筛(奖励模型/教师评分)→ 去重 → 去污染 → 最终训练集。
- 去污染检测:用 n-gram 重叠检测(如 8-gram)和 embedding 相似度检测确保与评估集无重叠。
- 质量评分系统:训练奖励模型或使用 LLM-as-Judge 对合成数据打分,保留高分样本。
- 多样性度量:监控数据集的指令类型分布、长度分布、主题分布,确保覆盖面。
- 版本控制:对合成数据集进行版本管理,追踪每次数据变更对模型性能的影响。
如果要对外讲,可以怎么概括
"合成数据和大模型蒸馏是 2023-2025 年让小模型能力暴涨的核心技术。Self-Instruct 用 175 条种子数据就让 LLaMA 7B 达到 GPT-3.5 水平,Evol-Instruct 进一步通过渐进演化提升数据复杂度。关键洞察是:数据质量远比数据量重要——Microsoft Phi 系列用'教科书级'数据证明了这一点。但合成数据有严重的陷阱:数据污染(不小心包含测试集)会让评估虚高,模型坍塌(递归用 AI 生成数据训练 AI)会导致能力退化。工程上最重要的是建立严格的数据管线:生成、多级过滤、去重、去污染、质量评分,每一步都不能省。"
最后记几条
- 数据质量 > 数据数量:Phi 系列用少量高质量数据训练出超参数量级别的小模型。
- Self-Instruct 是起点,Evol-Instruct 是进化:前者开创范式,后者提升数据复杂度和多样性。
- 模型坍塌是真实威胁:递归使用合成数据会导致模型在某一代突然退化。
- 数据污染是最隐蔽的 bug:不严格的去污染会让你以为模型很强,实际上只是在"背题"。
- 混合策略最安全:真人数据 + 合成数据的混合比例是关键超参数。
参考资料
- Self-Instruct: Aligning Language Models with Self-Generated Instructions (Wang et al., 2023)
- WizardLM: Empowering LLMs to Follow Complex Instructions (Xu et al., 2023)
- Alpaca: A Strong, Replicable Instruction-Following Model (Taori et al., 2023)
- Orca: Progressive Learning from Complex Explanation Traces (Mukherjee et al., 2023)
- Phi-3 Technical Report (Microsoft, 2024)
- The Curse of Recursion: Training on Generated Data Makes Models Forget (Shumailov et al., 2023, Nature 2024)
- Textbooks Are All You Need (Gunasekar et al., 2023, Phi-1)
- Losing Pride on the Shoulders of Giants (Data Contamination Survey)