本文へスキップ

レッスン 3/6 · 6分 · +100 XP

大規模言語モデルを、スマホで動くほど小さくするには?

言語モデルを小さくする主な方法は2つです。量子化は、何十億もある重みの1つ1つを、たとえば16ビットではなく4ビットのように少ないビット数で保存します。ファイルは数分の1になって速くなり、丸めすぎない限り質はほとんど落ちません。蒸留は、小さな生徒モデルに大きな先生モデルの答えをまねさせて学習させます。

▶ やってみよう

なぜ大切なのか

いちばん大きなモデルは、チップをぎっしり積んだラックが必要です。小さくすれば、AIがノートパソコンやスマホで、安く、速く、オフラインでも動きます。小さなモデルでも優秀でいられる理由もわかります。

6分後にできるようになること

  • モデルの大きさは、ほぼ「重みの数×1つを保存するビット数」で決まります。
  • 4ビットくらいまでなら質はふつう少ししか落ちませんが、それより下げると答えが崩れます。
  • 端末で動く小さなモデルは、オフラインで動き、あなたの文章を端末の中にとどめておけます。

練習する内容

  1. なぜモデルを小さくするの?

    カードをタップしましょう。

    📦 モデルの大きさは?
    モデルは、重みと呼ばれる何十億もの数でできています。1つ16ビットなら、重みが70億個のモデルは約14 GBになります。
    📱 なぜ端末で動かすの?
    オフラインで動き、サーバーとやりとりせずに答えられ、あなたの文章を端末の中にとどめておけます。
    ⚡ なぜ小さいと速いの?
    トークン1つごとに、チップはメモリから重みを読みこむ必要があります。読むバイト数が少ないほど、1秒あたりのトークンが増えます。
    💸 研究所が気にする理由は?
    何百万人もの人に答えるには、チップと電気代がかかります。ほとんど同じくらいよく答える小さなモデルなら、ずっと安く動かせます。
  2. Vireoをスマホ用に縮めよう

    精度を下げていき、重み、サイズ、質の変化を見ましょう。収まって、ちゃんと動くようになったら届けます。サイズ、速度、点数は考え方を見せるための例です。

    Vireo · 7B

    • 32ビット: 28 GB · 2 tok/s · 質 100% · オーストラリアの首都はキャンベラです。
    • 16ビット: 14 GB · 5 tok/s · 質 100% · オーストラリアの首都はキャンベラです。
    • 8ビット: 7 GB · 9 tok/s · 質 99% · オーストラリアの首都はキャンベラです。
    • 4ビット: 3.5 GB · 16 tok/s · 質 96% · オーストラリアの首都は、キャンベラです。
    • 2ビット: 1.75 GB · 21 tok/s · 質 38% · オーストの首都首都はははシドベラベラです

    Vireo Mini · 1B

    • 32ビット: 4 GB · 12 tok/s · 質 89% · キャンベラがオーストラリアの首都です。
    • 16ビット: 2 GB · 24 tok/s · 質 89% · キャンベラがオーストラリアの首都です。
    • 8ビット: 1 GB · 44 tok/s · 質 88% · キャンベラがオーストラリアの首都です。
    • 4ビット: 0.5 GB · 70 tok/s · 質 85% · 首都はキャンベラです。
    • 2ビット: 0.25 GB · 84 tok/s · 質 31% · キャンベラのの首都がオースオース
    1. スマホの空き容量4 GBにVireoを収めましょう。質は90%以上が条件です。

      ✓ 重み1つあたり4ビット。元の8分の1の大きさで、ほとんど同じくらい優秀です。だから4ビットのモデルはノートパソコンやスマホで人気なのです。

    2. 2ビットにしても、7Bモデルは1.75 GBで、しかも崩れています。ちゃんと答えられる、ずっと小さなモデルを手に入れるには?

      • ✓ 小さな生徒モデルに、大きなモデルの答えをまねさせて学習させる: それが蒸留です。生徒は正解か不正解かだけでなく、先生がどの言葉にどれくらいの確率をつけたかまで学ぶので、少ないデータから多くを学べます。
      • ✗ 大きなモデルの層の大半をランダムに消す: 層をランダムに切ると、モデルが学んだことがこわれます。蒸留は、小さなモデルを意図して教えることで知識を保ちます。
      • ✗ 小さなモデルを、少ないデータでゼロから学習させる: 少ないデータで1人で学んだ小さなモデルは、ずっと少ししか学べません。大きな先生の答えをまねすれば、一歩先からスタートできます。

      安いスマホは空きが0.8 GBしかありません。質80%以上で生徒モデルを届けましょう。

      ✓ 蒸留してから量子化。28 GBから始まったモデルが、0.5 GBでちゃんと答えています。研究所はこの2つのわざをいつも組み合わせています。

  3. どのわざ?

    これは量子化?蒸留?それともモデルを大きくする?

    • 重み1つを16ビットではなく4ビットで保存する → 量子化
    • 1Bのモデルを70Bのモデルの答えで学習させる → 蒸留
    • すべての重みで0.73914を0.74に丸める → 量子化
    • 層の数を2倍にする → 大きくする
    • 次の言葉ごとに、先生の確率をまねする → 蒸留
    • 10倍の文章と、より多くの重みで学習させる → 大きくする

覚えておこう

量子化はすべての重みを少ないビット数に丸め、蒸留は小さなモデルに大きなモデルをまねさせます。どちらもAIを小さな端末に収めます。

重みを少ないビット数に丸めると、ほとんど質を落とさずにモデルを大きく縮められます。やりすぎなければ。生徒モデルは先生から学べます。

押さえておきたい事実

  • 大きなモデルのなめらかにした出力で小さなモデルを学習させる「知識の蒸留」は、2015年の論文で広く知られるようになりました。 · 出典: Hinton, Vinyals and Dean, Distilling the Knowledge in a Neural Network, Google, 2015
  • DistilBERTは、学習元のBERTより40%小さく60%速いまま、言語理解の力の97%を保ちました。 · 出典: Sanh et al., DistilBERT, Hugging Face, 2019
  • 重みを8ビットで保存することで、研究者は最大1,750億パラメータのモデルを性能を落とさずに動かしました。 · 出典: Dettmers et al., LLM.int8(), 2022
  • 4ビットの重みを使い、研究者は650億パラメータのモデルを48 GBのGPU1枚でファインチューニングしました。 · 出典: Dettmers et al., QLoRA, 2023
  • 重みが70億個のモデルは、重み1つ16ビットで約14 GB、4ビットで約3.5 GBが必要です。

更新日:

よくある質問

LLMの量子化とは?

モデルの重みを、たとえば16ビットではなく4ビットのように、少ないビット数で保存することです。モデルは数分の1の大きさになって速くなり、質の低下はふつう少しだけです。

モデルの蒸留とは?

小さな生徒モデルに、大きな先生モデルの出力をまねさせて学習させることです。次の言葉の候補それぞれにどれくらいの確率をつけたかまでまねします。生徒は、1人で学んだ小さなモデルよりずっと優秀になります。

LLMはスマホで動かせる?

動かせます。重みが数十億個以下の小さなモデルを、多くの場合4ビットに量子化すれば、最近のスマホやノートパソコンで、インターネットにつながっていなくても動きます。

量子化するとモデルは悪くなる?

少しだけ悪くなります。8ビットや4ビットくらいまでなら低下はふつう小さいですが、2ビットのようにとても低い精度では丸めの誤差が積み重なり、答えが崩れることがあります。

関連用語