关于 training-data-curation
Training Data Curation Guidelines 是一份为大模型微调和偏好训练准备数据集的指南,面向数据整理与训练团队。内容涵盖质量检查、示例格式、数据来源考量及数据集规模建议。
主要功能
- 01SFT messages 格式示例
- 02偏好与奖励数据结构
- 03数据集质量检查清单
- 04数据来源质量指导
- 05文件格式与规模建议
适用场景
- 01准备微调用 JSONL 样例
- 02训练前检查数据质量
- 03为偏好数据集选择格式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sundial-org/ skills --skill training-data-curation安装后在 Claude Code 中输入/training-data-curation确认已加载。
详细介绍
训练数据整理指南
为 LLM 微调收集和准备训练数据的最佳实践。
数据质量原则
质量胜于数量。 Llama 2 仅使用了 27,540 个高质量 SFT 示例,效果优于使用规模更大、噪声更多的数据集训练的模型 [1]。应专注于干净、多样且格式规范的数据。
垃圾进,垃圾出。 模型会从数据中学习各种模式,包括错误、偏见和格式问题。训练前请手动检查样本。
匹配目标分布。 训练数据应反映你希望模型执行的任务和采用的风格。如果你希望模型给出正式回答,就不要用随意聊天数据训练。
格式要求
监督微调(SFT)
使用 messages 格式(OpenAI/Anthropic/Tinker 标准)[5]:
{"messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
- 每个样本都是一段完整对话
- 多轮对话:用户和助手消息交替出现
- 系统提示词为可选项:
{"role": "system", "content": "..."} - 使用 JSONL 格式,每行一个样本
偏好学习(DPO/ORPO/KTO)
需要 成对比较 [2]:
{"prompt": "...", "chosen": "...", "rejected": "..."}
chosen和rejected必须针对同一个提示词作答- 质量差异应明确且一致
- 标注者一致率 >70% 表示样本可用 [1]
KTO 不需要成对数据——只需为补全文本添加二元标签 [7]:
{"prompt": "...", "completion": "...", "label": true/false}
奖励建模(RLHF)
需要 排序后的回答 [1]:
{"prompt": "...", "responses": ["best", "second", "worst"]}
质量检查清单
训练前,请确认:
- 无重复项 — 删除完全重复和近似重复项 [3]
- 无空字段 — 所有必填字段均已填写
- 格式一致 — 全部数据均符合相同的架构
- 长度合适 — 不能太短(噪声)或太长(截断)
- 文本干净 — 编码正确,无 HTML 或模板文本残留 [8]
- 人工检查 — 随机抽取 50-100 个示例进行审核
- 无个人身份信息/敏感数据 — 除非有意纳入
- 已核实许可证 — 允许用于训练
常见质量问题
| 问题 | 检测方法 | 修复方法 | 来源 |
|---|---|---|---|
| 重复项 | 基于哈希的去重 | 删除完全匹配项;使用 MinHash 处理近似重复项 | [3] |
| 模板文本 | 关键词过滤 | 删除“订阅”“Cookie 政策”等内容 | [8] |
| 重复文本 | N-gram 分析 | 若唯一三元组占比 <30%,则标记 | [4] |
| 低质量文本 | 字母占比 | 若字母字符占比 <50%,则删除 | [8] |
| 语言错误 | 语言检测 | 使用 fastText 分类器,筛选目标语言 | [3] |
| 过短 | 长度检查 | 至少包含 3-5 个句子;文档至少 100 个词 | [8] |
数据来源
高质量:
中等质量:
- 更强大模型生成的合成数据(蒸馏)
- 带有投票信号的社区问答
- 经过筛选的用户生成内容
谨慎使用:
- 原始网页抓取数据
- 未经筛选的合成数据
- 来源不明确的数据 [6]
数据集规模指南
| 数据集规模 | 用途 | 来源 |
|---|---|---|
| 100-1K | 快速实验、特定行为 | — |
| 1K-10K | 生产级 SFT、领域适配 | — |
| 10K-100K | 全面的指令微调 | [1] |
| 1M+ 偏好对 | 大规模 RLHF | [1] |
Llama 2 使用了约 27K 个 SFT 示例和 1M+ 个偏好比较样本 [1]。
文件格式
- JSONL — 每行一个 JSON 对象,便于人工阅读
- Parquet — 适用于大型数据集,内置压缩功能 [3]
- 分片 — 将大于 500MB 的文件拆分成多个块
参考资料
- Llama 2 论文 — Touvron 等人(2023)。SFT/RLHF 数据质量实践、27K 条 SFT 示例、标注者一致率阈值 >70%
- TRL 库 — HuggingFace 为 SFT、DPO、KTO、ORPO 提供的 Trainer 实现
- FineWeb 论文 — Penedo 等人(2024)。大规模过滤:MinHash 去重、语言检测、质量分类器
- Data-Juicer — 阿里巴巴的质量过滤工具包,包含重复内容过滤器、n-gram 分析
- Tinker API — 使用消息格式的训练 API,支持 SFT、DPO/RLHF
- Data Provenance Initiative — Longpre 等人(2023)。数据集许可与归属审计
- KTO 论文 — Ethayarajh 等人(2024)。无需成对样本的二元偏好学习
- C4/T5 论文 — Raffel 等人(2020)。基础过滤方法:句末标点、最少句子数、字母比例、模板内容移除
评论
支持 Markdown