知識蒸留とは、Geoffrey Hintonらが2015年に提案した手法で、教師モデルの出力確率分布(soft label)を温度パラメータで制御しながら生徒モデルに転移する技術であり、LLMの軽量化の理論的基盤となっている。
知識蒸留(Knowledge Distillation)は、2015年にGeoffrey Hinton、Oriol Vinyals、Jeff Deanが論文「Distilling the Knowledge in a Neural Network」で提案した技術である。教師モデルのsoftmax出力を温度パラメータTで平滑化し、通常のhard label(one-hot)では得られない「クラス間の類似性情報」を生徒モデルに転移することが核心的なアイデアである。
知識蒸留の損失関数は以下の2項の加重和で構成される:
最終損失 = α × 蒸留損失 × T² + (1-α) × タスク損失
T²の項は、温度Tで平滑化するとgradientの大きさが1/T²倍になるための補正である。実験的にはT=4〜8、α=0.5〜0.7が多くのタスクで最適とされる。
| 特性 | Hard Label | Soft Label (T=1) | Soft Label (T=4) |
|---|---|---|---|
| 表現形式 | one-hot [0,0,1,0] | [0.01,0.04,0.90,0.05] | [0.15,0.22,0.38,0.25] |
| 情報量 | 最小(正解のみ) | 中(確率分布) | 最大(クラス間関係) |
| 学習効率 | 低い | 中程度 | 高い |
| ノイズ耐性 | 高い | 中程度 | 低い(平滑化しすぎると劣化) |
LLMでは元論文の分類タスク向け手法を以下のように拡張している:
温度Tは蒸留品質に決定的な影響を与える:
| フレームワーク | 開発元 | 言語 | LLM対応 | 特徴 |
|---|---|---|---|---|
| TextBrewer | HFL | Python | GPT-2/BERT系 | 教育用途に最適、日本語対応 |
| DistilBERT | Hugging Face | Python | BERT系 | 事前学習済み蒸留モデル提供 |
| TinyLlama | Zhang et al. | Python | Llama系 | 1.1Bパラメータ、3T tokenで学習 |
| MiniLLM | Microsoft | Python | GPT/OPT系 | 逆KL-divergenceで安定学習 |
| GKD | Python | Gemma/T5系 | Generalized KD、on-policy蒸留 |
知識蒸留にはいくつかの理論的限界が知られている:
Q1: 知識蒸留と転移学習の違いは何ですか? A: 転移学習は事前学習済みモデルの重みを新タスクに再利用する技術で、モデル構造は変わらない。知識蒸留は教師の「振る舞い」(出力分布)を異なるアーキテクチャの生徒に転移する技術で、モデルサイズの大幅な削減が可能な点が根本的に異なる。
Q2: 温度パラメータはどう設定すべきですか? A: LLMの蒸留ではT=4〜8が汎用的な出発点。タスク特化ならT=2〜4で十分な場合が多い。語彙サイズが大きい(64K以上)モデルではT=4程度に抑えないとlong-tail tokenの情報が消失する。ハイパーパラメータ探索で最適値を見つけることを推奨する。
Q3: オープンソースモデルの蒸留にライセンス上の制約はありますか? A: Llama 3系はMeta Llama Licenseで商用利用可能だが、月間7億MAU超の場合は別途ライセンスが必要。Mistralの蒸留はApache 2.0で制約なし。GPT-4等のAPIモデルからの蒸留は、OpenAIの利用規約で競合モデルの学習への使用が禁止されているため注意が必要。