自宅でAIモデルを動かすのに、GPUメモリはどれくらい必要?
モデルサイズ、4ビットのファイル、コンテキストメモリ、速度を、シミュレーターが使う数値とともにわかりやすく解説します。
モデルがパソコンで動くかどうかは、3つで決まります。重みのサイズ、コンテキストに必要なメモリ、そしてグラフィックボードのメモリの速さです。
1. 重み
モデルは、パラメータと呼ばれる長い数値のリストです。フル精度で保存すると、1つあたり2バイトかかります。自宅ではほとんどの人が、代わりに圧縮された4ビットのファイル(一般的な形式はQ4_K_Mと呼ばれます)を使います。品質の低下は小さく、パラメータ1つあたり約0.6バイトです。
おおよそ次のとおりです。
| モデルサイズ | 4ビットのファイル | 8ビットのファイル |
|---|---|---|
| 4 B | 2.4 GB | 4.3 GB |
| 9 B | 5.5 GB | 9.6 GB |
| 14 B | 8.5 GB | 15 GB |
| 31 B | 19 GB | 33 GB |
| 120 B | 73 GB | 128 GB |
2. コンテキスト
モデルは文章を書いている間、会話の記憶を保持しています。これをKVキャッシュと呼びます。会話のトークンが増えるたびに大きくなり、モデルの作りにも左右されます。新しいモデルはこのメモリを共有または圧縮しますが、古いモデルはそうしません。32,000トークンでは、1 GB未満にも10 GB以上にもなります。
推測するのではなく、Hugging Faceにある各モデルの設定ファイルから、実際のアーキテクチャを読み取って計算しています。
3. 速度
1トークンを書くために、カードはアクティブな重みをすべて1回読み込みます。そのため速度は、おもにメモリ帯域を読み込む量で割ったものになります。RTX 4090は約1,000 GB/sを読み込めるので、19 GBのモデルなら毎秒およそ35~40トークンで、誰が読むよりも速い速度です。
Mixture of Experts モデルは、1トークンごとに重みの一部しか読み込まないため、サイズから想像するよりずっと高速です。
複数のカード、またはシステムRAM
カードが2枚以上あれば、llama.cpp や Ollama などのツールがレイヤーを分割して振り分けます。すべてのカードのメモリを合わせて使えますが、速度は1枚分に近いままです。
モデルが収まらない場合は、一部をシステムRAMに置くことができます。動きますが、RAMはGPUメモリより10~20倍遅いため、速度は大きく落ちます。
試す
自宅で動かすシミュレーターは、カードの種類、枚数、RAMごとにこれらをすべて計算し、収まるモデルのうち最も投票を集めたものを表示します。Arenaでまだ投票されていない、4~12 GBのカード向けの小型モデルも68件あり、はっきり区別して表示しています。
お使いのGPUで何が動く?
カードを選ぶと、各モデルに必要なメモリ、収まるかどうか、推定速度がわかります。