LLM のサイズを理解する

Maud Nalpas
Maud Nalpas

大規模言語モデル(LLM)の「L」は大規模なスケールを示していますが、実際のところはより微妙な意味合いを持ちます。LLM には数兆個のパラメータが含まれているものもあれば はるかに少ないパラメータで効果的に機能するものもあります

いくつかの実際の例と、さまざまなモデルサイズの実際の影響を確認します。

LLM のサイズとサイズクラス

ウェブ デベロッパーにとって、リソースのサイズはダウンロード サイズと考える傾向があります。モデルのドキュメント化されたサイズは、代わりにパラメータの数を参照します。たとえば、Gemma 2B は 20 億個のパラメータを持つ Gemma を意味します。

LLM には、数十万、数百万、数十億、場合によっては数兆のパラメータがある場合があります。

大規模な LLM は小さなものよりも多くのパラメータを持つため、より複雑な言語関係をキャプチャし、微妙なプロンプトを処理できます。また、多くの場合、大規模なデータセットでトレーニングされます。

20 億や 70 億など、特定のモデルサイズが一般的です。たとえば、Gemma 2B、Gemma 7BMistral 7B などです。モデルサイズクラスは近似的なグループ化です。たとえば、Gemma 2B には約 20 億のパラメータがありますが、厳密にはそうではありません。

モデルサイズクラスは、LLM のパフォーマンスを測定する実用的な方法を提供します。ボクシングの体重クラスのようなものと考えてください。同じサイズクラス内のモデルはより比較しやすくなります。2 つの 2B モデルは同様のパフォーマンスを提供します。

つまり、特定のタスクに関しては、小さいモデルでも大規模モデルと同じパフォーマンスは同じです。

HuggingFace のモデルサイズのチェックボックスのスクリーンショット。
HuggingFace のモデルサイズクラス。これらのクラスは業界標準ではなく、自然に生まれたものです。

GPT-4、Gemini Pro、Ultra など、最新の LLM のモデルサイズは必ずしも開示されているわけではありませんが、数千億または数兆のパラメータであると考えられています。

モデルのサイズは大きく異なります。この図の DistilBERT は、巨大な Gemini Pro と比較して小さなドットです。

すべてのモデルの名前にパラメータの数が示されるわけではありません。一部のモデルには末尾にバージョン番号が付いています。たとえば、Gemini 1.5 Pro はモデルのバージョン 1.5(バージョン 1 の後)を指します。

LLM かどうか

モデルが LLM として小さすぎるのは、どのような場合ですか。LLM の定義は AI と ML のコミュニティ内で ある程度流動性があります

何十億ものパラメータを持つ最大のモデルのみを真の LLM と考える人もいれば、DistilBERT などの小規模なモデルは単純な NLP モデルと見なす人もいます。LLM の定義として、これも DistilBERT のような小規模ながら強力なモデルがあります。

オンデバイスのユースケース向けの小規模な LLM

大規模な LLM では、推論に多くの保存容量と多くのコンピューティング能力が必要になります。特定のハードウェア(TPU など)を備えた強力な専用サーバーで実行する必要がある。

ウェブ デベロッパーとして私たちが関心を持っていることの一つは、モデルがダウンロードしてユーザーのデバイスに実行できるほど小さいかどうかです。

しかし、それは答えにくい質問です。現時点では、いくつかの理由から、「このモデルはほとんどのミッドレンジ デバイスで動作する」ことを知る簡単な方法はありません。

  • デバイスの機能は、メモリや GPU/CPU の仕様などによって大きく異なります。ローエンドの Android スマートフォンと NVIDIA® RTX ノートパソコンは大きく異なります。ユーザーが使用しているデバイスに関するデータポイントが存在する場合があります。ウェブへのアクセスに使用されるベースライン デバイスの定義はまだありません。
  • モデルやモデルが実行されているフレームワークは、特定のハードウェアで実行するように最適化される場合があります。
  • 特定の LLM を特定のデバイスにダウンロードして実行できるかどうかを、プログラムで判断する方法はありません。デバイスのダウンロード機能は、GPU の VRAM の量など、さまざまな要因に左右されます。

ただし、経験的な知識はあります。現在、数百万から数十億のパラメータを持つ一部のモデルは、一般ユーザー向けのデバイスのブラウザで実行できます。

次に例を示します。

これは初期の分野です。状況は今後さらに進化することが予想されます。

  • WebAssembly と WebGPU のイノベーションにより、WebGPU はより多くのライブラリ、新しいライブラリ、最適化に対応しており、ユーザー デバイスでさまざまなサイズの LLM を効率的に実行できるようになることが期待されます。
  • 新しい圧縮技術により、小規模で高性能な LLM がますます一般的になりつつあると予想します。

小規模な LLM に関する考慮事項

小規模な LLM を使用する場合は、常にパフォーマンスとダウンロード サイズを考慮する必要があります。

パフォーマンス

モデルの機能はユースケースによって大きく異なります。ユースケースに合わせて微調整した小規模な LLM は、大規模な汎用 LLM よりもパフォーマンスが向上する可能性があります。

ただし、同じモデル ファミリー内では、小規模な LLM は大規模な LLM よりも能力が低くなります。同じユースケースでは、通常、より小さな LLM を使用するときにプロンプト エンジニアリング作業を増やす必要があります。

Chrome DevTools の [Network] パネルのスクリーンショット。
Gemma 2B's score than Gemma 7B's score。
出典: HuggingFace Open LLM Leaderboard、2024 年 4 月

ダウンロード サイズ

パラメータが増えると、ダウンロード サイズも大きくなります。これは、モデルをオンデバイスのユースケースで合理的にダウンロードできるかどうかに影響します(小規模と見なされたとしても)。

パラメータの数に基づいてモデルのダウンロード サイズを計算する手法がありますが、これは複雑になる可能性があります。

2024 年初頭の時点では、モデルのダウンロード サイズはほとんど文書化されていません。そのため、デバイス上およびブラウザ内でのユースケースでは、Chrome DevTools の [Network] パネル、またはその他のブラウザ デベロッパー ツールを使用して、ダウンロード サイズを経験的に確認することをおすすめします。

Chrome DevTools の [Network] パネルのスクリーンショット。
Chrome DevTools の [Network] パネルで、Gemma 2BDistilBERT: ウェブ アプリケーションのブラウザ内、デバイス上の推論を行います。ダウンロード サイズは、それぞれ 1.3 GB と 67 MB です。

Gemma は MediaPipe LLM Inference API で使用されます。DistilBERT は Transformers.js とともに使用されます。

モデルの圧縮手法

モデルのメモリ要件を大幅に減らす手法は複数あります。

  • LoRA(低ランク適応): 事前トレーニング済みの重みを固定する微調整手法。LoRA の詳細をご覧ください
  • 枝刈り: 重要性の低い重みをモデルから削除してサイズを小さくします。
  • 量子化: 重みの精度を浮動小数点数(32 ビットなど)から低ビット表現(8 ビットなど)に下げます。
  • 知識蒸留: 小規模なモデルをトレーニングして、大規模な事前トレーニング済みモデルの動作を模倣します。
  • パラメータの共有: モデルの複数の部分に同じ重みを使用し、一意のパラメータの合計数を減らす。