← PC・IT用語集へ戻る

蒸留 / モデル蒸留

Knowledge Distillation
ai beginner
大きなAIモデルの振る舞いを小さなモデルに学ばせ、軽くて速いモデルを作る手法のこと。
蒸留 / モデル蒸留 (Knowledge Distillation)

概要(サマリー)

蒸留とは、大きなAIモデルの振る舞いを小さなモデルに学ばせ、軽くて速いモデルを作る手法のことである。「知識蒸留(Knowledge Distillation)」とも呼ばれる。

ベテランの職人に弟子がついて、仕事のやり方を間近で見ながら覚えていくようなものだと考えるとよい。弟子は師匠ほど何でもできるわけではないが、任された仕事の範囲なら師匠と遜色ない働きをする。しかも身軽で早い。

大きい側を「教師モデル」、小さい側を「生徒モデル」と呼ぶ。私たちが日常的に使っている小型・高速なAIモデルの多くは、この手法で作られている。

詳細解説

なぜ小さいモデルが必要なのか

最上位のモデルは賢いが、動かすのに大きな代償がある。

  • 推論の費用が高い。利用のたびに継続的に発生する
  • 応答が遅い。1語ずつ生成するため、大きいモデルほど待ち時間が伸びる
  • 大きな計算資源が要る。高性能なGPUが必要になる
  • 手元の端末では動かない。スマートフォンやノートパソコンには載らない

一方で、実際の用途を見ると「そこまでの賢さは要らない」場面が多い。文章の分類、要約、定型的な返信の下書き。こうした作業に最上位モデルを使うのは、近所のコンビニに大型トラックで行くようなものである。

蒸留は、用途に見合ったサイズまで小さくしつつ、質はできるだけ落とさないための手法である。

どうやって小さいモデルに移すのか

単純に「同じ学習データで小さいモデルを学習させる」のとは違う。蒸留では、教師モデルの出力そのものを教材にする

  1. 大量の入力を用意する
  2. それを教師モデルに解かせ、出力を記録する
  3. その入出力の組を教材として、生徒モデルに学習させる
  4. 生徒モデルが教師モデルと似た出力を返すようになる

ここで効いているのが、教師モデルが持つ答えの「迷い方」まで学べるという点である。

たとえば動物の画像を分類するとき、正解ラベルは「犬」の一言でしかない。しかし教師モデルの出力を見ると「犬 80%、狼 15%、猫 3%」のようになっている。この「狼にも少し似ている」という情報は、正解ラベルだけを見ていては絶対に学べない。生徒モデルは、こうした微妙な判断の傾向ごと受け継ぐことができる。

これが、同じサイズのモデルをゼロから学習させるより蒸留のほうが良い結果になりやすい理由である。

ファインチューニングとの違い

どちらも「既存のモデルを使って新しいモデルを作る」点は似ているが、目的が違う。

蒸留 ファインチューニング
目的 小さく・速くする 特定用途に合わせる
教材 大きいモデルの出力 人が用意した正解例
結果 別サイズの新しいモデル 元と同じサイズのモデル
主な効果 費用と速度の改善 振る舞いの変化

サイズを変えたいのが蒸留、振る舞いを変えたいのがファインチューニングと覚えるとよい。両方を組み合わせ、蒸留で小さくしてから用途に合わせて調整する、という流れもある。

実際の製品での位置づけ

各社が提供している「小型・高速」なモデルの多くは、上位モデルの能力を引き継ぐ形で作られている。

  • 応答が速く、費用が安い
  • 上位モデルほどの難問は解けない
  • 日常的な作業では実用上の差が小さい

利用者から見れば、同じシリーズの中に大・中・小のモデルが並んでいるのは、この技術があるからだといえる。作業の重さに応じて選べる状態になっているわけだ。

限界と注意点

  • 教師を超えることはない。生徒モデルの上限は教師モデルの性能である
  • 苦手な範囲も受け継ぐ。教師が間違えやすい問題は、生徒も同じように間違えやすい
  • 難しい問題ほど差が出る。簡単な作業では差が小さいが、複雑な推論では明確に劣る
  • 万能性が落ちやすい。特定の用途に絞って蒸留すると、想定外の入力に弱くなる

3つ目が実務上いちばん重要である。「小さいモデルで十分だった」のか「差に気づいていないだけ」なのかは、実際に比べてみないと分からない。自分の用途で両方を試して比較するのが確実である。

AIコーディングとの関係

個人開発者が自分で蒸留を行う場面はまずない。それでも知っておく価値があるのは、モデル選びの判断が変わるからである。

小型モデルは「劣化版」ではない。 上位モデルの振る舞いを引き継いで作られているため、多くの日常作業では体感差が出ない。変数名を考える、コメントを整える、コミットメッセージを書く、単純な変換処理を書く。こうした作業に最上位モデルを使う必要はない。

作業の難しさで切り替える。 目安としては次のようになる。

  • 定型的な作業・軽い修正 → 小型モデル
  • 設計の相談・原因が分からないバグの調査・大きなリファクタリング → 上位モデル

判断は自分の用途で行う。 ベンチマークの数値ではなく、実際に自分がよく頼む作業で両方を試すのがいちばん確かである。「この種の作業なら小さいほうで足りる」という感覚が掴めると、待ち時間も費用も目に見えて減る。

よくある勘違い

蒸留したモデルは元のモデルの劣化版?

用途によっては実用上の差がほとんどない。単純に性能を削ったのではなく、大きいモデルの判断の傾向まで受け継いでいるため、同サイズをゼロから学習させたモデルより優れていることが多い。ただし難しい問題では差が出る。

蒸留とファインチューニングは同じ?

目的が違う。蒸留はサイズを小さくすること、ファインチューニングは振る舞いを特定用途に合わせることが目的である。結果として得られるモデルの性質も異なる。

蒸留すれば教師モデルより賢くなる?

ならない。生徒モデルの上限は教師モデルである。教師が答えられない問題は、生徒も答えられない。

小さいモデルなら精度は諦めるしかない?

作業の種類による。分類や要約のような定型的な作業では差がほとんど出ないことが多い。「小さい=精度が低い」と決めつけず、自分の用途で比べてから判断したい。

まとめ

  • 蒸留は、大きなモデルの振る舞いを小さなモデルに学ばせ、軽くて速いモデルを作る手法である
  • 正解ラベルだけでなく、教師モデルの「迷い方」まで学べる点が強みになる
  • サイズを変えるのが蒸留、振る舞いを変えるのがファインチューニングと使い分ける
  • 生徒モデルは教師モデルを超えられず、苦手な範囲も受け継ぐ
  • 日常的な作業では上位モデルとの差が小さいことが多く、作業の重さで使い分けると効率が上がる

情報ソース

より詳しくAIに聞いてみよう

  • 知識蒸留の仕組みを、教師と生徒のたとえを使って初心者向けに説明してください。
  • 正解ラベルだけで学習する場合と、教師モデルの出力で学習する場合で何が違うのか教えてください。
  • 蒸留とファインチューニングと量子化の違いを、それぞれの目的つきで整理してください。
  • 小型モデルと上位モデルの性能差が出やすい作業・出にくい作業を教えてください。
  • 自分の用途で小型モデルが使えるかどうかを、どう比較検証すればよいですか。