mcpField
F
fine-tuning-data-generator

fine-tuning-data-generator

github.com/markpitt数据与数据库2455 次安装36 周前更新
代码仓库

关于 fine-tuning-data-generator

用于生成语言模型微调所需的 ChatML 合成训练数据的技能,涵盖数据集规划、样例生成、验证和训练准备。

主要功能

  1. 01数据集需求与规划
  2. 02生成多样化合成样例
  3. 03ChatML 格式指南
  4. 04验证与数据集分析脚本
  5. 05训练框架集成

适用场景

  1. 01规划特定任务的微调数据集
  2. 02生成多样化多轮训练样例
  3. 03检查 JSONL 结构与数据集多样性
  4. 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.md
resources/
chatml-format.md
dataset-strategy.md
examples.md
framework-integration.md
generation-techniques.md
quality-validation.md
scripts/
analyze_dataset.py
validate_chatml.py
templates/
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. 为 1-2 个类别制定生成计划
  3. 单批生成并审查质量
  4. 验证并编写文档
  5. 准备好用于训练
中型数据集(500-1000 个示例)
  1. 收集需求
  2. 制定包含多个类别的详细计划
  3. 分 2-3 批生成,每批完成后进行审查
  4. 分析多样性并调整方案
  5. 补齐缺漏
  6. 最终验证并编写文档
大型数据集(2000 个以上示例)
  1. 全面收集需求
  2. 制定多批次生成计划
  3. 第 1 批(50-100 个):基础示例
  4. 第 2 批(100-200 个):扩展复杂度
  5. 第 3 批(100-200 个):补全覆盖范围
  6. 第 4 批(50-100 个):优化与验证
  7. 运行完整验证套件
  8. 生成全面的文档

最佳实践

从小规模开始,逐步迭代
  1. 先生成 10-20 个示例
  2. 审查并收集反馈
  3. 根据反馈完善方案
  4. 扩展至完整数据集
质量优先于数量
  • 500 个多样且高质量的示例,胜过 5,000 个重复的示例
  • 每个示例都应带来新的知识
  • 始终保持回答质量一致
系统性地增加多样性
  • 改变查询的表达方式(问题、命令、陈述)
  • 覆盖不同的专业水平
  • 混合不同复杂度的回答
  • 包含边缘情况(通常占数据集的 20-30%)
  • 大型数据集使用分批生成工作流
部署前测试
  • 使用实际训练框架测试数据集
  • 监控训练指标,排查问题
  • 部署前测试微调模型的输出
  • 将结果与基础模型进行比较
记录一切
  • 记录生成参数
  • 保存不同版本的数据集
  • 记录所做的任何修改
  • 记录使用的生成策略
  • 跟踪模型性能指标

高级功能

批量生成策略

对于包含 500 个以上样例的数据集:

  • 每次生成 50-100 个样例
  • 每批生成后检查分布和多样性
  • 根据发现的不足调整生成策略
  • 避免重复并保持创造性
应避免的常见陷阱
  • 过度套用模板:会造成重复模式(自然地变化)
  • 不切实际的查询:用户输入过于正式或机械(使用不同的措辞)
  • 覆盖范围狭窄:场景和措辞有限(确保多样性)
  • 质量不一致:质量随时间下降(使用质量检查清单)
  • JSON 错误:格式无效,导致训练失败(始终进行验证)
  • 缺少上下文:系统提示词缺少细节(提供清晰的说明)
  • 回答不匹配:回答没有解决查询问题(检查相关性)

数据集规模建议

任务复杂度建议规模说明
简单任务100-500定义明确,变化有限
中等任务500-2,000多种场景,中等复杂度
复杂任务2,000-10,000+边缘情况众多,变化性高
领域适配1,000-5,000需要专业知识

资源


版本:2.0 | 更新日期:2024 | 模式:模块化编排

评论

支持 Markdown