Skip to content

合成数据工程:用大模型生成训练与评测数据

在垂直领域(医疗、法律、内部文档),我们往往面临“数据荒”。

  • 没有足够的问答对来做微调。
  • 没有足够的测试集来做 Evals。 这时候,合成数据 (Synthetic Data) 就成了救命稻草。 利用强模型(GPT-4)生成数据,去训练弱模型(Llama 3 8B),或者生成测试集,已经成为行业标准操作。

1. 生成微调数据 (Instruction Tuning Data)

1.1 Self-Instruct

这是 Alpaca 能够成功的秘诀。

  1. Seed Tasks: 手写 175 个种子任务。
  2. Generate: 让 GPT-3 根据种子任务,生成类似的指令和输入。
  3. Filter: 过滤掉重复的、低质量的。
  4. Output: 让 GPT-3 生成这些指令的输出。

1.2 Evol-Instruct (WizardLM)

单纯的生成可能太简单。 Evol-Instruct 让 LLM 进化指令:

  • Deepening: 增加深度。
  • Complicating: 增加约束条件。
  • Breadth: 增加广度。 通过反复进化,生成的指令越来越复杂,逼近人类的高级认知。

2. 生成 RAG 评测集 (QA Pairs)

你有一堆 PDF,想测试 RAG 系统的准确率。 怎么搞?手动写 100 个问题?太累了。 使用 LLM 自动生成:

  1. Chunking: 把 PDF 切片。
  2. Generate Question: 给 LLM 一个 Chunk,让它基于此生成 3 个问题。
  3. Generate Answer: 让 LLM 基于 Chunk 回答这 3 个问题(作为 Ground Truth)。
  4. Review: (可选) 让另一个 LLM 检查 Question 和 Answer 是否匹配。

3. 工具推荐:Bonito / TextSynth

3.1 Bonito

一个专门用于将非结构化文本转化为微调数据集的模型。 它可以把一段乱七八糟的文本,转化成高质量的 (Instruction, Input, Output) 格式。

3.2 LangSmith Dataset Generator

LangSmith 内置了从文档生成测试集的功能。 上传 CSV/PDF,点击 Generate,自动产出 Golden Dataset。

4. 风险与控制

4.1 模型坍塌 (Model Collapse)

如果反复用 AI 生成的数据训练 AI,模型会不会变傻? 研究表明,如果不引入真实数据(Human Data),模型确实会退化,产生怪异的输出。 对策:始终保持一定比例的人类数据(如 10%)。

4.2 偏见放大

GPT-4 有偏见,它生成的数据也有偏见。 用这些数据微调的小模型,会继承甚至放大这些偏见。

合成数据工程将数据获取的成本从 $10/条(人工标注)降到了 $0.01/条(API 调用)。 它让小团队也能拥有海量的高质量数据。 未来的数据工程,不再是去满世界找数据,而是写 Prompt 让 AI 生产数据