training-data-curation について
Training Data Curation Guidelinesは、LLMのファインチューニングや選好学習向けデータセットの準備ガイドです。データ品質の確認、サンプル形式、データソースの検討、規模の目安を扱います。
主な機能
- 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 は、高品質な SFT サンプルをわずか 27,540 件だけ使用し、ノイズの多い大規模なデータセットでトレーニングされたモデルを上回りました [1]。クリーンで、多様性があり、適切にフォーマットされたデータに重点を置いてください。
ゴミを入れれば、ゴミが出てきます。 モデルは、エラー、バイアス、書式の問題を含め、データに含まれるパターンを学習します。トレーニング前にサンプルを手作業で確認してください。
ターゲットとする分布に合わせてください。 トレーニングデータには、モデルに実行させたいタスクやスタイルを反映させる必要があります。フォーマルな応答を求める場合は、カジュアルなチャットデータでトレーニングしないでください。
フォーマット要件
教師ありファインチューニング(SFT)
messages 形式(OpenAI/Anthropic/Tinker 標準)を使用してください [5]。
{"messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
- 各サンプルは完全な会話です
- 複数ターンの場合は、ユーザーとアシスタントのメッセージを交互に配置します
- システムプロンプトは任意です:
{"role": "system", "content": "..."} - JSONL 形式で、1 行につき 1 サンプルです
選好学習(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] |
| 定型文 | キーワードフィルター | 「subscribe」、「cookie policy」などを削除します | [8] |
| 繰り返しの多いテキスト | N-gram 分析 | 一意なトライグラムが 30%未満の場合にフラグを付けます | [4] |
| 品質の低いテキスト | アルファベット比率 | アルファベット文字の割合が 50%未満の場合に削除します | [8] |
| 言語が異なる | 言語検出 | fastText 分類器を使用し、対象言語に絞り込みます | [3] |
| 短すぎる | 長さのチェック | 最低 3~5 文、文書の場合は 100 語以上にします | [8] |
データソース
高品質:
中品質:
- より強力なモデルから生成された合成データ(蒸留)
- 投票シグナルを含むコミュニティの Q&A
- フィルタリング済みのユーザー生成コンテンツ
注意して使用:
- 生のウェブスクレイピングデータ
- フィルタリングされていない合成データ
- 明確な出所が確認できないデータ [6]
データセットの規模の目安
| データセットの規模 | 用途 | 出典 |
|---|---|---|
| 100~1K | 簡単な実験、特定の振る舞い | — |
| 1K~10K | 本番環境向け SFT、ドメイン適応 | — |
| 10K~100K | 包括的な指示チューニング | [1] |
| 1M 以上の選好ペア | 大規模な RLHF | [1] |
Llama 2 では、約 27K 件の SFT サンプルと 1M 件以上の選好比較が使用されました [1]。
ファイル形式
- JSONL — 1 行につき 1 つの JSON オブジェクトを記述する、人間が読みやすい形式です
- Parquet — 大規模なデータセットに適した、圧縮機能が組み込まれた効率的な形式です [3]
- シャーディング — 500MB を超えるファイルを分割します
参考資料
- Llama 2 Paper — Touvron ら(2023)。SFT/RLHF のデータ品質に関する実践、27K 件の SFT サンプル、アノテーター間の合意率が 70% を超える基準
- TRL Library — SFT、DPO、KTO、ORPO 向けの HuggingFace トレーナー実装
- FineWeb Paper — Penedo ら(2024)。大規模なフィルタリング:MinHash による重複排除、言語検出、品質分類器
- Data-Juicer — 繰り返しフィルターや n-gram 分析を備えた Alibaba の品質フィルタリングツールキット
- Tinker API — SFT にメッセージ形式を使用し、DPO/RLHF をサポートするトレーニング API
- Data Provenance Initiative — Longpre ら(2023)。データセットのライセンスと帰属表示の監査
- KTO Paper — Ethayarajh ら(2024)。ペアを使用しない二値選好学習
- C4/T5 Paper — Raffel ら(2020)。基本的なフィルタリング:文末の句読点、最小文数、アルファベット比率、定型文の除去