モデル蒸留
モデル蒸留とは、小さな「生徒」モデルが、生のラベルではなく教師の出力(またはその内部の確率分布)を使って学習することで、はるかに大きな「教師」モデルを模倣するように学習させる学習技術です。その結果、サイズ、レイテンシ、コストのごく一部で、教師の能力のほとんどを備えたモデルが得られます。
モデル蒸留とは、小さな「生徒」モデルが、生のラベルではなく教師の出力(またはその内部の確率分布)を使って学習することで、はるかに大きな「教師」モデルを模倣するように学習させる学習技術です。その結果、サイズ、レイテンシ、コストのごく一部で、教師の能力のほとんどを備えたモデルが得られます。
なぜ重要なのか
フロンティアモデルと安価なモデルのトレードオフは、かつて過酷なものでした。5%賢いモデルに10倍を支払うか、妥協するかのどちらかです。蒸留はそのギャップを縮めます。GPT-4o-mini、Claude Haiku、Gemini Flash、Llama 3 8B Instructなど、主要なラボの「小型で高速で安価」な層は、実際にはすべてフラッグシップモデルから蒸留された子孫です。蒸留はまた、専門化のための最も好まれる方法でもあります。カスタマーサポートの会話ログでGPT-4から蒸留された7Bモデルは、その1つのタスクにおいて、提供コストが100分の1でありながら元のモデルを上回ることができます。開発者にとって蒸留は、「どのモデルを使うか」を「手頃に使える最大のもの」から「自分の仕事をこなせる最小のモデルは何か」へと捉え直させます。
どのように機能するのか
1. 教師を選ぶ: 通常は大規模で高性能なモデル(GPT-4、Claude Opus、Llama 70B)です。
2. 学習データを生成する: 次のいずれかです。
- 出力蒸留: 大量の入力に対して教師を実行し、その応答を保存します。それらの(入力、教師の応答)のペアで生徒を学習させます。
- ロジット蒸留: 各トークンにおける語彙全体に対する教師の完全な確率分布(「ソフトターゲット」)を取得し、生徒がそれに一致するように学習させます。
3. 生徒を学習させる: 標準的な教師ありファインチューニングですが、教師の出力をラベルとして使います。生徒の損失は、人間がラベル付けした正解からのずれではなく、教師の出力からのずれです。
4. 任意のタスク特化: 特定のドメイン(コード、チャット、数学、カスタマーサポート)のデータで蒸留し、専門化された小型モデルを作ります。
5. 評価する: 保留したベンチマークで生徒と教師を比較します。コストが10%未満で、教師の品質の80〜95%を目指します。
出力蒸留対ロジット蒸留
| 観点 | 出力(応答)蒸留 | ロジット(ソフトターゲット)蒸留 |
|---|---|---|
| データ | 教師のテキスト出力のみ | 教師の完全なトークン確率 |
| 必要なアクセス | APIのみ | 生のモデルの重みが必要 |
| 品質 | 良好 | より良い(トークンあたりの情報量が多い) |
| コスト | 安価 | より高価(取得コスト) |
| ユースケース | クローズドAPIから蒸留 | オープンモデルや自前のモデルから蒸留 |
ほとんどのチームが出力蒸留を行うのは、GPT-4やClaudeへの重みレベルのアクセスを持っていないためです。ロジット蒸留は学術的な標準ですが、オープンモデルを必要とします。
有名な蒸留モデル
DistilBERT(Hugging Face、2019年): 元祖です。BERTのサイズの60%、性能の95%、速度は60%向上。
Alpaca / Vicuna(スタンフォード / LMSYS、2023年): GPT-3.5の出力から蒸留されたLlama。小型の指示追従モデルを安価にしました。
GPT-4o-mini、Claude Haiku、Gemini Flash: それぞれのフラッグシップから蒸留されたと報じられていますが、詳細は公開されていません。
Llama 3.2 1B / 3B: オンデバイス利用のために、より大きなLlamaのバリアントから蒸留されたMetaの小型モデル。
DeepSeek-R1-Distill(2025年): DeepSeek-R1の推論を、より小さなLlamaとQwenのベースに蒸留したオープンな蒸留版。
TinyLlama、Phi-3: パラメータ数以上の性能を発揮するために、蒸留スタイルの技術で学習された小型モデル。
いつ蒸留を使うべきか
コスト重視の製品: 品質のほとんどが必要だが、すべてのリクエストにGPT-4やClaude Opusを使う余裕がない場合。
レイテンシに敏感なUX: 応答が1秒未満でなければならないチャットアシスタント。
専門化: 狭いタスク(インテント分類、JSON抽出、コード補完)で、小さなファインチューニング済みモデルが汎用のフラッグシップを上回る場合。
オンデバイスまたはエアギャップ環境: 70Bモデルの実行が不可能な場合。
大量のバッチ処理: 1日に数百万件の文書分類。フラッグシップモデルは高価すぎます。
いつ使うべきでないか
十分な教師データがない: 最低でも数千の高品質な(入力、教師の出力)ペアが必要です。
自由度の高い創造的なタスク: 蒸留モデルはしばしばニュアンスや創造性を失います。
フロンティアレベルの推論: 数学、コーディング、複雑な推論は、依然として実際のフロンティアモデルを実行する恩恵があります。
急速に変化するドメイン: 蒸留モデルはスナップショットです。ドメインが毎週変化するなら、蒸留は後れを取ります。
トレードオフ
品質の上限: 生徒は教師を超えられません。蒸留は転移であり、創造ではありません。
不慣れな入力での脆さ: 小型モデルは汎化能力が低くなります。分布外の入力では急速に劣化します。
バイアスの継承: 教師のバイアス(そして誤りやハルシネーション)が生徒に焼き付けられます。
初期のAPIコスト: クローズドAPIから蒸留するには、データ生成中に数千回の教師推論の費用を支払う必要があります。
コンプライアンスリスク: 一部のクローズドAPIの利用規約では、出力を競合モデルの学習に使うことを禁止しています。規約をよく読みましょう。
よくある間違い
評価なしで蒸留する: 保留したベンチマークがなければ、生徒が教師に一致しているかどうか判断できません。
小さすぎる生徒、複雑な教師: 1Bの生徒は、1,750億の教師の挙動すべてを捉えることはできません。規模を野心に合わせましょう。
データ品質を軽視する: 質の悪い教師の出力(ハルシネーション、タスク外)は、そのまま質の悪い生徒の挙動として焼き付けられます。
専門化しない: 汎用モデルから汎用モデルを蒸留すると、多くの場合より劣った汎用モデルが生まれます。タスクのために蒸留しましょう。
コンプライアンスの盲点: 競合のAPI出力で密かに学習することは、法的な時限爆弾です。利用規約を確認しましょう。
Sources: