LLM合成データ生成とは、大規模言語モデルのAPI呼び出しやローカル推論を通じて、学習用テキストデータを自動的に大量生産する技術であり、Self-Instruct・Evol-Instruct・Magpieなど多様な手法が存在する。
LLM合成データ生成(Synthetic Data Generation)とは、GPT-4・Claude・Llama・Mistralなどの大規模言語モデルを「データ生成器」として活用し、指示応答ペア・対話ログ・コードスニペット・推論チェーンなどの学習用テキストデータを自動的に大量生産する技術である。2023年のAlpacaプロジェクト以降、合成データ生成はLLM開発の標準的なパイプライン工程として定着した。
合成データ生成の典型的なワークフローは以下の通りである。
| 手法 | 入力要件 | 生成プロセス | 出力品質 | コスト目安 | 代表プロジェクト |
|---|---|---|---|---|---|
| Self-Instruct | 種データ175件 | モデルが指示→入力→出力を自己生成 | 中〜高 | API $200-500 | Alpaca, Dolly |
| Evol-Instruct | 既存指示セット | 段階的に複雑化(深化・拡張・制約追加) | 高 |
| API $500-2000 |
| WizardLM, WizardCoder |
| Orca方式 | タスク定義 | GPT-4に推論過程を含む詳細回答を生成させる | 非常に高 | API $2000-5000 | Orca, Orca 2 |
| UltraChat | 対話トピック | 2つのLLMインスタンスが対話をシミュレーション | 高 | API $1000-3000 | UltraChat, OpenChat |
| Magpie | なし(ゼロショット) | LLMのオートリグレッシブ特性でプロンプトを自動生成 | 中〜高 | API $100-300 | Magpie-Align |
| Textbooks方式 | トピック一覧 | 教科書風の体系的テキストを生成 | 非常に高 | API $3000-10000 | Phi-1, Cosmopedia |
Self-Instruct(Wang et al., 2022)は合成データ生成の基盤手法である。
[Step 1] 種データプール(175件の人手作成指示)からランダムにサンプリング
[Step 2] LLMに新しい指示(instruction)を生成させる
[Step 3] 生成された指示に対して入力(input)を生成
[Step 4] 指示+入力に対して出力(output)を生成
[Step 5] 品質フィルタ(長さ・重複・ROUGE類似度チェック)
[Step 6] フィルタ通過データを種データプールに追加
[Step 7] Step 1に戻り反復(通常3-5ラウンド)
最終的に52,000件以上の指示応答ペアを生成し、LLaMA 7Bのファインチューニングに使用されたのがStanford Alpacaプロジェクトである。
WizardLM(Xu et al., 2023)が提案したEvol-Instructは、既存の指示を段階的に「進化」させる手法である。
5段階の進化を適用することで、初期指示セット70Kから最終的に250K以上の多様な難易度の指示を生成。WizardLM 13Bはこのデータで学習し、ChatGPTの90%以上の性能をAlpaca Evalで達成した。
| 戦略 | 削減効果 | トレードオフ |
|---|---|---|
| オープンモデル使用(Llama 3.1 70B等) | API費用ゼロ(GPU計算のみ) | GPT-4比で品質10-20%低下 |
| バッチAPI利用(OpenAI Batch API) | 50%コスト削減 | 24時間以内の非同期処理 |
| 短文生成→後処理で拡張 | 30-50%トークン削減 | 後処理パイプライン構築が必要 |
| vLLMによるローカル推論 | スループット3-5倍向上 | 初期GPU投資(A100 $10K+) |
| 段階的品質向上(安価モデル→高品質モデル) | 60-70%コスト削減 | 2段階パイプラインの設計が必要 |
Q1: 合成データ生成に最適なモデルはどれか? A: 品質重視ならGPT-4o・Claude 3.5 Sonnet、コスト重視ならLlama 3.1 70B・Qwen2.5 72B。2025年以降はDeepSeek-V3やQwen3 235Bなどのオープンモデルが品質面でもGPT-4に迫っており、ライセンスフリーの合成データ生成が現実的になっている。
Q2: 合成データは何件あれば十分か? A: タスクと目標性能に依存する。LIMAの研究では厳選1,000件で実用的な性能を示したが、汎用的な指示追従能力には50K〜500K件が推奨される。コード生成特化なら10K〜100K件の高品質データで十分な場合が多い。
Q3: Evol-InstructとSelf-Instructはどちらが良いか? A: 目的による。汎用的な指示データの大量生成にはSelf-Instructが効率的。特定タスクの難易度制御や段階的な品質向上にはEvol-Instructが優れる。実務では両手法を組み合わせ、Self-Instructで初期データセットを作成→Evol-Instructで複雑化するパイプラインが一般的。