教師-生徒学習(キョウシセイトガクシュウ)
モデル蒸留の中核フレームワーク。大規模な教師モデルが生成する知識(出力分布・中間表現)を、軽量な生徒モデルが模倣する形で学習する訓練パラダイム。
教師-生徒学習とは
教師-生徒学習(Teacher-Student Training / Teacher-Student Framework)は、既に十分に学習済みの大規模モデル(教師)と、これから学習する小型モデル(生徒)の2つのモデルを使って知識を転移させる訓練パラダイムです。知識蒸留の実装フレームワークとして最も広く使われており、NLP、コンピュータビジョン、音声認識など幅広い分野で応用されています。
教師モデルの役割
教師モデルは「答え」だけでなく「考え方」を生徒に伝えます。正解ラベルが[犬: 1.0, 猫: 0.0]という二値情報しか持たないのに対し、教師モデルの出力[犬: 0.7, 猫: 0.2, 狼: 0.08, ...]にはクラス間の類似度関係(ダークナレッジ)が含まれます。
教師モデルの選定基準
| 基準 | 推奨 | 理由 |
|---|---|---|
| パラメータ比 | 教師:生徒 = 5:1〜50:1 | 差が小さすぎると蒸留効果が薄い |
| アーキテクチャ | 同系統が理想 | Transformer→Transformer が最も安定 |
| 学習データ | 生徒のドメインと重複 | ドメイン外の知識は転移しにくい |
| 性能水準 | 生徒の到達目標+10%以上 | 教師が弱いと生徒も弱い |
生徒モデルの設計
アーキテクチャの選択
生徒モデルは教師と同じアーキテクチャの縮小版が一般的ですが、異なるアーキテクチャでも蒸留は可能です(例: Transformer教師 → CNN生徒)。ただし、異種アーキテクチャ間の蒸留は Feature-based 手法の適用が難しくなります。
サイズの決定
目標のレイテンシ・メモリ制約から逆算して生徒のサイズを決めます。
- エッジデバイス(スマートフォン): 100M-500Mパラメータ
- コンシューマGPU(RTX 4060): 1B-7Bパラメータ
- データセンター(コスト最適化): 7B-13Bパラメータ
学習プロセス
オフライン蒸留
教師モデルの推論を事前に実行し、出力をファイルに保存してから生徒の学習に使う方式です。教師モデルを学習中ずっとGPU上に保持する必要がなく、計算資源を効率的に使えます。
オンライン蒸留
教師と生徒を同時にGPU上にロードし、各バッチで教師の推論→生徒の学習を逐次実行します。動的にデータを生成できるため品質は高いですが、GPU メモリを大量に消費します。
自己蒸留(Self-Distillation)
教師と生徒が同一モデルの場合、深い層が浅い層の教師となる構造です。BERT の最終層が中間層の教師となり、各層の出力を均質化することで性能向上を図ります。追加モデルが不要で実装が容易です。
LLM での応用パターン
Instruction Tuning + 蒸留
GPT-4 や Claude のような強力なモデルの instruction-following 能力を小型モデルに転移させます。Alpaca(Stanford)、Vicuna は GPT-3.5/4 の出力を使って LLaMA を蒸留した代表例です。
Chain-of-Thought 蒸留
教師モデルの推論過程(CoT: 思考の連鎖)を含む出力を生徒に学習させることで、単純な回答だけでなく推論能力も転移させます。
FAQ
Q1: 教師モデルなしで小型モデルを直接大量データで学習するのとどちらが良いですか?
A1: 同じデータ量・計算量なら蒸留の方が高品質です。教師モデルのソフトターゲットにはラベルにはない豊富な情報(クラス間関係)が含まれるためです。ただし、非常に大量のデータ(数兆トークン)を直接学習に使える場合、蒸留なしでも匹敵する性能に達することがあります(Llama 3 がこの例)。
Q2: 複数の教師モデルを使うことはできますか?
A2: はい。アンサンブル蒸留と呼ばれ、複数の教師の出力を平均化して生徒に学習させます。個々の教師の弱点を補い合い、単一教師よりも高品質な蒸留が可能です。異なるアーキテクチャの教師を組み合わせることで多様な知識を転移できます。
Q3: 蒸留の学習率やエポック数のベストプラクティスは?
A3: 一般的に、通常のFine-tuningより低い学習率(1e-5〜5e-5)で長めに学習します。ソフトターゲットは情報量が多いため、3-10エポックで十分に収束することが多いです。温度パラメータTは3-7が一般的で、値が大きいほどダークナレッジを強調しますが大きすぎるとノイズが増えます。