大規模言語モデル(LLM)の「L」は、大規模であることを示唆していますが、実際はより微妙なものです。LLM の中には、数兆のパラメータが含まれているものもあれば、はるかに少ないパラメータで効果的に動作するものもあります。
実際の例と、さまざまなモデルサイズの実用的な影響について見てみましょう。
LLM のサイズとサイズクラス
ウェブ デベロッパーは、リソースのサイズをダウンロード サイズと考えがちです。モデルの記載されているサイズは、パラメータの数を指しています。たとえば、Gemma 2B は 20 億個のパラメータを持つ Gemma を表します。
LLM には数十万、数百万、数十億、さらには数兆のパラメータが存在する場合があります。
大規模な LLM には、小規模な LLM よりも多くのパラメータがあるため、より複雑な言語関係をキャプチャし、微妙なニュアンスのプロンプトを処理できます。また、多くの場合、大規模なデータセットでトレーニングされます。
20 億や 70 億など、特定のモデルサイズが一般的であることに気づいたかもしれません。たとえば、Gemma 2B、Gemma 7B、Mistral 7B などです。モデルサイズ クラスはおおよそのグループ化です。たとえば、Gemma 2B には 20 億個のパラメータが約ありますが、正確ではありません。
モデルサイズ クラスは、LLM のパフォーマンスを測定する実用的な方法です。ボクシングの階級のように考えることができます。同じサイズクラス内のモデルは比較が容易です。2 つの 2B モデルは同様のパフォーマンスを提供する必要があります。
ただし、特定のタスクでは、小さいモデルでも大きなモデルと同じパフォーマンスを実現できる場合があります。
GPT-4、Gemini Pro、Ultra などの最新の最新の LLM のモデルサイズは必ずしも公開されていませんが、数百億または兆のパラメータに達すると推定されています。
すべてのモデルで、名前にパラメータの数が示されているわけではありません。一部のモデルにはバージョン番号が付いています。たとえば、Gemini 1.5 Pro は、モデルの 1.5 バージョン(バージョン 1 に続く)を指します。
LLM かどうか
モデルが小さすぎて LLM にならないのはどのような場合ですか?LLM の定義は、AI と ML のコミュニティ内で多少流動的です。
数十億のパラメータを持つ最大のモデルのみを真の LLM と見なす人もいますが、DistilBERT などの小規模なモデルは単純な NLP モデルと見なされます。他にも、LLM の定義に、DistilBERT など、小型ながら強力なモデルが含まれています。
オンデバイスのユースケース向けの小型 LLM
LLM が大きくなるほど、推論に大量のストレージ容量とコンピューティング能力が必要になります。特定のハードウェア(TPU など)を備えた専用の強力なサーバーで実行する必要があります。
ウェブ開発者として注目すべき点の 1 つは、モデルがユーザーのデバイスにダウンロードして実行できるほど小さいかどうかです。
ただし、この質問に答えるのは難しいと思います。現時点では、次のような理由から、「このモデルはほとんどの中級デバイスで動作できます」と簡単に判断できる方法はありません。
- デバイスの機能は、メモリ、GPU/CPU の仕様などによって大きく異なります。ローエンドの Android スマートフォンと NVIDIA® RTX ラップトップは大きく異なります。ユーザーが使用しているデバイスに関するデータポイントがある場合があります。ウェブへのアクセスに使用されるベースライン デバイスの定義はまだありません。
- モデルまたはそのモデルが実行されるフレームワークは、特定のハードウェアで実行するように最適化されている場合があります。
- 特定の LLM を特定のデバイスにダウンロードして実行できるかどうかをプログラムで判断する方法はありません。デバイスのダウンロード機能は、GPU の VRAM の量など、さまざまな要因によって異なります。
ただし、実証的な知識もあります。現在、数百万から数十億のパラメータを持つモデルは、コンシューマ グレードのデバイスでブラウザで実行できます。
次に例を示します。
- MediaPipe LLM 推論 API を使用した Gemma 2B(CPU 専用デバイスにも適しています)。試してみましょう。
- Transformers.js を使用した DistilBERT。
これは新しい分野です。今後、状況は変化していくことが予想されます。
- WebAssembly と WebGPU の革新により、WebGPU のサポートがより多くのライブラリ、新しいライブラリ、最適化に導入されるため、ユーザーのデバイスでさまざまなサイズの LLM を効率的に実行できるようになります。
- 新しい圧縮手法により、小型で高性能の LLM がますます一般的になるでしょう。
小規模な LLM に関する考慮事項
小さい LLM を使用する場合は、常にパフォーマンスとダウンロード サイズを考慮する必要があります。
パフォーマンス
モデルの機能はユースケースに大きく依存します。ユースケースに合わせて微調整された小規模な LLM は、大規模な汎用 LLM よりもパフォーマンスが優れている場合があります。
ただし、同じモデルファミリー内では、小規模な LLM は大型の LLM よりも能力が低くなります。同じユースケースで、より小さな LLM を使用する場合は、通常、より多くのプロンプト エンジニアリング作業を行う必要があります。
ダウンロード サイズ
パラメータが多いほどダウンロード サイズが大きくなります。これは、モデルが小さいと見なされていても、オンデバイスのユースケースで合理的にダウンロードできるかどうかにも影響します。
パラメータの数に基づいてモデルのダウンロード サイズを計算する手法はありますが、複雑になる可能性があります。
2024 年初頭時点では、モデルのダウンロード サイズが文書化されていることはほとんどありません。そのため、デバイス上とブラウザ内のユースケースでは、Chrome DevTools の [ネットワーク] パネルまたは他のブラウザのデベロッパー ツールで、ダウンロード サイズを経験的に確認することをおすすめします。
Gemma は MediaPipe LLM Inference API で使用されます。DistilBERT は Transformers.js で使用されます。
モデルの圧縮手法
モデルのメモリ要件を大幅に削減する手法は複数あります。
- LoRA(低ランク適応): 事前トレーニングされた重みが固定されるファインチューニング手法。LoRA の詳細
- プルーニング: 重要度の低い重みをモデルから削除してサイズを小さくします。
- 量子化: 重みの精度を浮動小数点数(32 ビットなど)から低ビット表現(8 ビットなど)に下げる。
- 知識蒸留: 大規模な事前トレーニング済みモデルの動作を模倣するように小規模なモデルをトレーニングします。
- パラメータの共有: モデルの複数の部分に同じ重みを使用して、一意のパラメータの総数を減らします。