关于 fine-tuning-data-generator
用于生成语言模型微调所需的 ChatML 合成训练数据的技能,涵盖数据集规划、样例生成、验证和训练准备。
主要功能
- 01数据集需求与规划
- 02生成多样化合成样例
- 03ChatML 格式指南
- 04验证与数据集分析脚本
- 05训练框架集成
适用场景
- 01规划特定任务的微调数据集
- 02生成多样化多轮训练样例
- 03检查 JSONL 结构与数据集多样性
- 04为 Unsloth 或 Axolotl 准备数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ markpitt/ claude-skills --skill fine-tuning-data-generator安装后在 Claude Code 中输入/fine-tuning-data-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdresources/chatml-format.mddataset-strategy.mdexamples.mdframework-integration.mdgeneration-techniques.mdquality-validation.mdscripts/analyze_dataset.pyvalidate_chatml.pytemplates/generation-plan.md详细介绍
微调数据生成器
此技能可生成高质量的 ChatML 格式合成训练数据,用于借助 Unsloth、Axolotl 等框架微调语言模型。
我需要什么?
| 需求 | 资源 |
|---|---|
| 规划数据集 - 需求、策略、质量检查清单 | resources/dataset-strategy.md |
| 如何创建多样化示例 - 变化技巧、多轮模式、特定格式的指南 | resources/generation-techniques.md |
| ChatML 格式详情 - 结构、规范、常见问题、框架兼容性 | resources/chatml-format.md |
| 示例数据集 - 各领域的灵感、多轮样本、边缘情况 | resources/examples.md |
| 验证质量 - 验证工作流、分析数据集、故障排查 | resources/quality-validation.md |
| 训练与部署 - 框架设置、超参数、优化、部署 | resources/framework-integration.md |
工作流
阶段 1:收集需求
先提出以下关键澄清问题:
任务定义:
- 模型要接受什么任务的训练?(例如,客户支持、代码生成、创意写作)
- 具体属于哪个领域或主题?(例如,法律、医疗、电商、软件开发)
- 需要多少条训练示例?(建议:简单任务 100 条以上,复杂任务 500–1000 条以上)
质量与多样性:
- 复杂度范围:简单与复杂任务混合,还是专注于特定难度级别?
- 多样性:是否包含边缘情况、错误处理和特殊场景?
- 语气/风格:专业、友好、技术性强、简洁还是详细?
- 对回复长度有什么偏好?
- 是否需要特定格式:代码块、列表、表格、JSON?
数据集构成:
- 子主题的分布:均匀分布还是按权重分配?
- 是否包含负面示例(不该怎么做)?
- 是否需要验证集划分?(建议占总量的 10%–20%)
详细的问题模板请参阅 resources/dataset-strategy.md。
阶段 2:制定生成计划
提出一份计划,涵盖:
- 示例的数量及其在各类别中的分布
- 要覆盖的关键主题/场景
- 多样性策略(措辞变化、复杂度级别、边缘情况)
- 系统提示词方案(保持一致或有所变化)
- 质量保证方案
生成前先获得用户批准。
阶段 3:生成合成数据
创建示例时遵循以下质量标准:
关键原则:
- 采用反映真实使用场景的情境
- 使用自然语言,并变换措辞和正式程度
- 回复准确、有帮助,并符合预期行为
- 全程保持 ChatML 格式一致
- 难度均衡(除非另有说明)
- 有意义的变化(避免重复)
- 包含边缘情况和错误场景
多样性技巧:
- 变换查询措辞(问题、命令、陈述)
- 包含不同专业水平的示例(初学者、中级、专家)
- 同时涵盖正面和负面示例
- 混合简短和长篇回复
- 适当加入多步推理
- 增加上下文变化
详细技巧、领域专属指南和批量生成工作流,请参阅 resources/generation-techniques.md。
阶段 4:验证与文档编写
运行验证工具并执行检查:
# Validate JSON formatting and structure
python scripts/validate_chatml.py training_data.jsonl
# Analyze dataset statistics and diversity
python scripts/analyze_dataset.py training_data.jsonl
# Export statistics
python scripts/analyze_dataset.py training_data.jsonl --export stats.json
质量检查清单:
- JSON 验证通过(无错误)
- 分析显示多样性指标良好
- 手动抽样审查通过
- 没有重复或近似重复的示例
- 所有必需字段均已填写
- 用户查询真实可信
- 回答准确且有帮助
- 类别分布均衡
- 数据集元数据已记录
验证详情、故障排除和文档模板请参阅 resources/quality-validation.md。
阶段 5:集成与训练
使用你选择的框架为训练做准备:
输出文件:
training_data.jsonl- 主要训练集validation_data.jsonl- 可选验证集dataset_info.txt- 元数据和统计信息
框架设置:
- Unsloth:自动检测 ChatML,高效进行 4-bit 训练
- Axolotl:指定
type: chat_template和chat_template: chatml - Hugging Face:使用分词器的
apply_chat_template()方法 - 自定义:从 JSONL 加载并处理 ChatML 格式
设置代码、超参数、部署选项和最佳实践请参阅 resources/framework-integration.md。
ChatML 格式概览
每个训练示例都是一个包含 messages 数组的 JSON 对象:
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "How do I reverse a string in Python?"}, {"role": "assistant", "content": "Use slicing: `text[::-1]`"}]}
角色:
system:设置助手行为(可选,但建议使用)user:用户的输入/查询assistant:模型预期的回答
**多轮对话:**在对话中添加更多用户/助手消息对。
详细规范、验证、常见问题和特定框架说明请参阅 resources/chatml-format.md。
工具参考
scripts/ 中的脚本
validate_chatml.py
验证 ChatML 格式的 JSONL 文件:
python scripts/validate_chatml.py training_data.jsonl
python scripts/validate_chatml.py training_data.jsonl --verbose
检查项:
- JSON 格式有效
- 必需字段(messages、role、content)
- role 值有效(system、user、assistant)
- 消息顺序正确
- 重复项检测
- 多样性指标
analyze_dataset.py
提供全面的统计数据和分析:
python scripts/analyze_dataset.py training_data.jsonl
python scripts/analyze_dataset.py training_data.jsonl --export stats.json
提供内容:
- 数据集概览(示例总数、消息数量)
- 消息长度统计
- system 提示词的变化情况
- 用户查询模式(问题、命令、与代码相关的查询、长度类别)
- 助手回答模式(代码块、列表、标题、长度类别)
- 质量指标(多样性得分、均衡比例)
- Token 数量估算和成本预测
常见工作流
小型数据集(100-200 个示例)
- 收集需求
- 为 1-2 个类别制定生成计划
- 单批生成并审查质量
- 验证并编写文档
- 准备好用于训练
中型数据集(500-1000 个示例)
- 收集需求
- 制定包含多个类别的详细计划
- 分 2-3 批生成,每批完成后进行审查
- 分析多样性并调整方案
- 补齐缺漏
- 最终验证并编写文档
大型数据集(2000 个以上示例)
- 全面收集需求
- 制定多批次生成计划
- 第 1 批(50-100 个):基础示例
- 第 2 批(100-200 个):扩展复杂度
- 第 3 批(100-200 个):补全覆盖范围
- 第 4 批(50-100 个):优化与验证
- 运行完整验证套件
- 生成全面的文档
最佳实践
从小规模开始,逐步迭代
- 先生成 10-20 个示例
- 审查并收集反馈
- 根据反馈完善方案
- 扩展至完整数据集
质量优先于数量
- 500 个多样且高质量的示例,胜过 5,000 个重复的示例
- 每个示例都应带来新的知识
- 始终保持回答质量一致
系统性地增加多样性
- 改变查询的表达方式(问题、命令、陈述)
- 覆盖不同的专业水平
- 混合不同复杂度的回答
- 包含边缘情况(通常占数据集的 20-30%)
- 大型数据集使用分批生成工作流
部署前测试
- 使用实际训练框架测试数据集
- 监控训练指标,排查问题
- 部署前测试微调模型的输出
- 将结果与基础模型进行比较
记录一切
- 记录生成参数
- 保存不同版本的数据集
- 记录所做的任何修改
- 记录使用的生成策略
- 跟踪模型性能指标
高级功能
批量生成策略
对于包含 500 个以上样例的数据集:
- 每次生成 50-100 个样例
- 每批生成后检查分布和多样性
- 根据发现的不足调整生成策略
- 避免重复并保持创造性
应避免的常见陷阱
- 过度套用模板:会造成重复模式(自然地变化)
- 不切实际的查询:用户输入过于正式或机械(使用不同的措辞)
- 覆盖范围狭窄:场景和措辞有限(确保多样性)
- 质量不一致:质量随时间下降(使用质量检查清单)
- JSON 错误:格式无效,导致训练失败(始终进行验证)
- 缺少上下文:系统提示词缺少细节(提供清晰的说明)
- 回答不匹配:回答没有解决查询问题(检查相关性)
数据集规模建议
| 任务复杂度 | 建议规模 | 说明 |
|---|---|---|
| 简单任务 | 100-500 | 定义明确,变化有限 |
| 中等任务 | 500-2,000 | 多种场景,中等复杂度 |
| 复杂任务 | 2,000-10,000+ | 边缘情况众多,变化性高 |
| 领域适配 | 1,000-5,000 | 需要专业知识 |
资源
- 规划与策略:
resources/dataset-strategy.md- 需求收集、规划、质量检查清单 - 生成技术:
resources/generation-techniques.md- 多样性技巧、领域特定指南、批量工作流 - ChatML 规范:
resources/chatml-format.md- 格式详情、验证、框架说明 - 示例数据集:
resources/examples.md- 多样化领域示例、多轮模式 - 质量验证:
resources/quality-validation.md- 验证工作流、分析、故障排除 - 框架集成:
resources/framework-integration.md- Unsloth、Axolotl、HuggingFace 的设置;部署选项
版本:2.0 | 更新日期:2024 | 模式:模块化编排
评论
支持 Markdown