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. 03JSONL構造とデータセットの多様性の確認
  4. 04Unslothや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

詳細

ファインチューニング用データ生成

このスキルは、Unsloth、Axolotl などのフレームワークや類似ツールを使用して言語モデルをファインチューニングするための、高品質な合成トレーニングデータを ChatML 形式で生成します。

何が必要ですか?

必要なことリソース
データセットの計画 - 要件、戦略、品質チェックリスト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:要件の収集

まず、次の重要な確認事項を尋ねます。

タスクの定義:

  • トレーニングするモデルには、何をさせますか?(例:カスタマーサポート、コード生成、創作)
  • 具体的な分野や題材は何ですか?(例:法律、医療、Eコマース、ソフトウェア開発)
  • トレーニング例はいくつ必要ですか?(推奨:単純なタスクでは 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)
  • 有効なロール値(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

提供内容:

  • データセットの概要(例の合計数、メッセージ数)
  • メッセージ長の統計情報
  • システムプロンプトのバリエーション
  • ユーザークエリのパターン(質問、コマンド、コード関連、長さのカテゴリー)
  • アシスタント応答のパターン(コードブロック、リスト、見出し、長さのカテゴリー)
  • 品質指標(多様性スコア、バランス比率)
  • トークン数の推定とコスト予測

一般的なワークフロー

小規模データセット(100~200 例)
  1. 要件を収集する
  2. 1~2 個のカテゴリーの生成計画を作成する
  3. 1 回のバッチで生成し、品質をレビューする
  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. 完全なデータセットへ規模を拡大する
量より質
  • 反復的な例が 5,000 件あるより、多様で高品質な例が 500 件あるほうが効果的です
  • 各例で新しいことを学べるようにします
  • 全体を通じて一貫した応答品質を維持します
体系的に多様化する
  • クエリの表現を変える(質問、コマンド、文)
  • 異なる専門知識レベルを網羅する
  • 応答の複雑さに変化をつける
  • エッジケースを含める(通常、データセットの 20~30%)
  • 大規模データセットではバッチ生成ワークフローを使用する
デプロイ前のテスト
  • 実際のトレーニングフレームワークでデータセットをテストします
  • トレーニング指標を監視し、問題がないか確認します
  • デプロイ前にファインチューニング済みモデルの出力をテストします
  • ベースモデルと結果を比較します
すべてを記録する
  • 生成パラメーターをメモに残します
  • 異なるデータセットのバージョンを保存します
  • 行った変更をすべて記録します
  • 使用した生成戦略を記録します
  • モデルのパフォーマンス指標を追跡します

高度な機能

バッチ生成戦略

500 件以上の例を含むデータセットの場合:

  • 一度に 50〜100 件の例を生成します
  • 各バッチの後に分布と多様性を確認します
  • 特定した不足点に応じて生成戦略を調整します
  • 繰り返しを防ぎ、創造性を維持します
避けるべきよくある落とし穴
  • テンプレート化しすぎる:パターンが繰り返されます(自然な変化を加えます)
  • 非現実的なクエリ:ユーザー入力が過度に形式的、またはロボットのようになります(さまざまな言い回しを使います)
  • 対象範囲が狭い:シナリオや言い回しが限られます(多様性を確保します)
  • 品質に一貫性がない:時間の経過とともに品質が低下します(品質チェックリストを使用します)
  • JSON エラー:無効な形式によりトレーニングに支障が出ます(必ず検証します)
  • コンテキストの不足:システムプロンプトに詳細がありません(明確な指示を提示します)
  • 応答の不一致:応答がクエリに対応していません(関連性を確認します)

データセットサイズの推奨

タスクの複雑さ推奨サイズ備考
シンプルなタスク100-500明確に定義され、変化が限定的
中程度のタスク500-2,000複数のシナリオ、中程度の複雑さ
複雑なタスク2,000-10,000+多くのエッジケース、高い変動性
ドメイン適応1,000-5,000専門知識が必要

リソース


Version: 2.0 | Updated: 2024 | Pattern: Modular Orchestration

コメント