モデル蒸留(モデルジョウリュウ)
大規模な教師モデルの知識を小さな生徒モデルに転移させる技術。推論コストを大幅に削減しつつ教師モデルに近い性能を維持でき、エッジデバイスへのデプロイに不可欠。
モデル蒸留とは
モデル蒸留(Model Distillation / Knowledge Distillation)は、大規模で高性能な「教師モデル(Teacher Model)」の出力や内部表現を、小さく軽量な「生徒モデル(Student Model)」に学習させることで、教師モデルの知識を圧縮・転移する技術です。Geoffrey Hinton らが 2015 年に発表した論文「Distilling the Knowledge in a Neural Network」で体系化されました。
なぜ蒸留が必要なのか
LLM の性能はパラメータ数に比例して向上しますが、推論コスト(計算量・メモリ・レイテンシ)も比例して増大します。70Bパラメータモデルの推論にはA100 GPU が複数枚必要ですが、蒸留で7Bや1.5Bに圧縮すれば、コンシューマGPUやモバイルデバイスでも動作可能になります。
| モデル規模 | 推論GPU要件 | レイテンシ目安 | 蒸留後の性能維持率 |
|---|---|---|---|
| 70B(教師) | A100×2以上 | 500ms/token | 100%(基準) |
| 13B(中間) | RTX 4090×1 | 80ms/token | 90-95% |
| 7B(蒸留) | RTX 3090×1 | 40ms/token | 85-92% |
| 1.5B(小型) | CPU/Edge | 15ms/token | 70-80% |
蒸留の基本メカニズム
ソフトターゲット学習
通常の学習では正解ラベル(ハードターゲット: [0, 0, 1, 0])を使いますが、蒸留では教師モデルの出力確率分布(ソフトターゲット: [0.05, 0.15, 0.70, 0.10])を使います。ソフトターゲットには「猫と犬は似ている」「猫と車は全く違う」といったクラス間の関係性(ダークナレッジ)が含まれており、この情報が生徒モデルの汎化性能を高めます。
温度パラメータ(Temperature)
ソフトマックス関数の温度T を上げることで、確率分布を平滑化しダークナレッジを強調します。T=1 は通常の出力、T=3-20 で蒸留に適した滑らかな分布になります。
損失関数
蒸留の損失関数は通常、2つの項の加重和です。
- 蒸留損失: 教師と生徒のソフトターゲット間のKLダイバージェンス
- タスク損失: 生徒の出力とハードターゲット間の交差エントロピー
α で両者のバランスを調整します(α=0.7-0.9 が一般的)。
LLM における蒸留手法
Response-based Distillation
教師モデルの最終出力(テキスト生成結果)を生徒モデルの学習データとして使う最もシンプルな手法です。OpenAI の GPT-4 出力を使って小型モデルを学習させる「LLM Distillation」がこの典型例です。
Feature-based Distillation
教師モデルの中間層の特徴表現(hidden states)を生徒モデルに転移させます。出力だけでなく「思考過程」も転移できるため、Response-based より高品質な蒸留が可能です。
Relation-based Distillation
入力間の関係性(類似度行列)を教師から生徒に転移させます。教師が「AとBは似ている」「AとCは異なる」と判断する構造を生徒に学ばせます。
代表的な蒸留モデル
| 蒸留モデル | 教師 | パラメータ数 | 性能維持率 | 用途 |
|---|---|---|---|---|
| DistilBERT | BERT-base | 66M(40%削減) | 97% | NLU/分類 |
| TinyLlama | Llama 2 | 1.1B | 70-80% | エッジ推論 |
| Phi-2 | GPT-4(推定) | 2.7B | 80-85% | 研究/教育 |
| Gemma 2 2B | Gemma 2 27B | 2B | 85-90% | モバイル |
| Mistral 7B | 非公開大規模 | 7B | 90%+ | 汎用 |
蒸留 vs 他の圧縮手法
| 手法 | 圧縮率 | 精度維持 | 追加学習 | 適用段階 |
|---|---|---|---|---|
| 蒸留 | 5-50× | ◎ | 必要 | 学習時 |
| 量子化 | 2-4× | ○ | 不要/軽微 | 学習後 |
| プルーニング | 2-10× | ○ | 推奨 | 学習後 |
| Low-Rank分解 | 2-5× | ○ | 推奨 | 学習後 |
蒸留と量子化は直交する技術であり、7B蒸留モデルをさらにINT4量子化するといった組み合わせも一般的です。
FAQ
Q1: 蒸留に教師モデルの重みへのアクセスは必要ですか?
A1: 手法によります。Feature-based は教師の中間層にアクセスが必要ですが、Response-based は教師のAPI出力(テキスト)だけで実行可能です。GPT-4の出力を使った蒸留が可能なのはこのためです。ただし、OpenAI等の利用規約で競合モデルの蒸留が禁止されている場合があります。
Q2: 蒸留にはどのくらいのデータと計算資源が必要ですか?
A2: Response-based なら教師モデルの出力を数万〜数十万件用意し、生徒モデルを通常のFine-tuningと同程度の計算資源で学習します。7B生徒モデルの蒸留なら A100×4 で数日が目安です。Feature-based はより多くの資源が必要です。
Q3: 自分で蒸留を行う場合のおすすめフレームワークは?
A3: Hugging Face Transformers + distillation ライブラリ(TextBrewer、DistillerNLP)が定番です。LLM向けでは、LLaMA-Factory、Axolotl などのFine-tuningフレームワークでResponse-based蒸留が可能です。最近ではGoogle の Gemma や Microsoft の Phi シリーズの蒸留レシピも公開されています。