fine-tuning-data-generator について
言語モデルのファインチューニング向けに、ChatML形式の合成トレーニングデータを作るスキルです。データセットの計画から生成、検証、学習準備までを扱います。
主な機能
- 01データセットの要件整理と計画
- 02多様な合成サンプルの生成
- 03ChatML形式のガイド
- 04検証とデータセット分析用スクリプト
- 05学習フレームワークとの連携
活用シーン
- 01タスク別ファインチューニング用データセットの計画
- 02多様な複数ターン学習サンプルの生成
- 03JSONL構造とデータセットの多様性の確認
- 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.mdresources/chatml-format.mddataset-strategy.mdexamples.mdframework-integration.mdgeneration-techniques.mdquality-validation.mdscripts/analyze_dataset.pyvalidate_chatml.pytemplates/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 回のバッチで生成し、品質をレビューする
- 検証して文書化する
- トレーニングの準備完了
中規模データセット(500~1000 例)
- 要件を収集する
- 複数のカテゴリーを含む詳細な計画を作成する
- 2~3 回のバッチで生成し、各回の後にレビューする
- 多様性を分析し、アプローチを調整する
- 不足分を補う
- 最終検証と文書化を行う
大規模データセット(2000 例以上)
- 包括的な要件を収集する
- 複数バッチに分けた生成計画を作成する
- バッチ 1(50~100):基礎となる例
- バッチ 2(100~200):複雑さの拡張
- バッチ 3(100~200):カバレッジの補完
- バッチ 4(50~100):仕上げと検証
- 検証スイート全体を実行する
- 包括的な文書を作成する
ベストプラクティス
小さく始めて、反復する
- まず 10~20 件の例を生成する
- レビューしてフィードバックを得る
- フィードバックに基づいてアプローチを改善する
- 完全なデータセットへ規模を拡大する
量より質
- 反復的な例が 5,000 件あるより、多様で高品質な例が 500 件あるほうが効果的です
- 各例で新しいことを学べるようにします
- 全体を通じて一貫した応答品質を維持します
体系的に多様化する
- クエリの表現を変える(質問、コマンド、文)
- 異なる専門知識レベルを網羅する
- 応答の複雑さに変化をつける
- エッジケースを含める(通常、データセットの 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 のセットアップ、デプロイオプション
Version: 2.0 | Updated: 2024 | Pattern: Modular Orchestration