VRAMとは何か、そしてなぜLLMにとって重要なのか?

VRAM(ビデオランダムアクセスメモリ)は、GPU計算用のデータを保存するためにグラフィックスカードに搭載された専用メモリです。大規模言語モデル(LLM)をローカルで実行する場合、効率的な推論のためにモデル全体の重みがVRAMに収まる必要があります。システムRAMとは異なり、VRAMはLLMを機能させる並列計算に必要な高帯域幅を提供します。

VRAMが不足すると、システムはGPUメモリとシステムRAM間でデータをスワップするため、テキスト生成が劇的に遅くなります。多くの場合、モデルがVRAMに収まらないと、そもそも実行できません。このため、ローカルLLMをダウンロードまたは実行する前に、VRAM要件を計算することが不可欠です。

LLMのVRAMはどのように計算されるのか?

LLMのVRAM使用量は、主に3つのコンポーネントで構成されます:

  1. モデルの重み: コアニューラルネットワークパラメータです。FP16(16ビット)の7Bパラメータモデルは約14 GBを使用し、同じモデルを4ビットに量子化すると約4 GBのみになります。

  2. KVキャッシュ: テキスト生成中、モデルは前のトークンからキー値ペアを保存します。このキャッシュはコンテキスト長とともに増加し、長い会話では数ギガバイトを消費する可能性があります。

  3. オーバーヘッド: CUDAカーネル、活性化テンソル、フレームワークオーバーヘッドは通常、基本要件に10~15%を追加します。

モデルサイズの計算式は次のとおりです:(パラメータ数 × 重みあたりのビット数) ÷ 8 = サイズ(バイト)

ツールの説明

このカリキュレータは、GPUでLarge Language Modelをローカルで実行するために必要なVRAMを推定します。モデルのパラメータ数を入力し、量子化形式を選択し、利用可能なVRAMを指定すると、モデルが収まるかどうか、およびサポートできるコンテキスト長がすぐにわかります。

このツールはllama.cppの一般的なすべての量子化形式(GGUF Q2~Q8バリアント)、i-quants(IQ2~IQ4)、標準精度(FP16、FP32、BF16)をサポートしています。また、VRAMキャパシティを考慮して、GPUが処理できる最大コンテキスト長も計算します。

機能

  • 20以上の量子化形式: GGUF量子化タイプ(Q2_K~Q8_0)、i-quants(IQ2~IQ4)、標準精度(FP16、FP32、BF16)の完全なサポート
  • 一般的なモデルプリセット: Llama 3、Mistral、Qwen、Phiモデルを含む1Bから405Bパラメータまでの一般的なモデルサイズの簡単選択
  • GPUプリセット: GTX 1650からH100までの一般的なコンシューマーおよびプロフェッショナルGPUの事前設定されたVRAM量
  • コンテキスト長の計算: GPUがサポートできる最大コンテキストウィンドウを自動的に計算
  • リアルタイム結果: パラメータを調整すると即座にフィードバックが得られます

ユースケース

モデルをダウンロードする前に: 50GB以上のファイルをダウンロードするのに時間を費やす前に、モデルがハードウェアで実行されるかどうかを確認します。必要な量子化レベルを事前に把握できます。

推論設定の最適化: モデル品質(より高い量子化)とコンテキスト長のバランスの取れたポイントを見つけます。Q6からQ4に下げると、コンテキストウィンドウを2倍にできる場合があります。

GPU アップグレードの計画: 異なるGPUがターゲットモデルをどのように処理するかを比較します。Llama 70Bなどの大規模モデルを快適に実行するために必要なVRAMの正確な量を確認できます。

サポートされている量子化形式

形式 ビット/重み 最適用途
FP32 32.0 最大精度、研究
FP16/BF16 16.0 トレーニング、高品質推論
Q8_0 8.5 ほぼロスレス品質
Q6_K 6.56 高品質で優れた圧縮
Q5_K_M 5.69 バランスの取れた品質とサイズ
Q4_K_M 4.85 コンシューマーGPUの一般的な選択肢
Q4_0 4.5 優れた圧縮、わずかな品質低下
Q3_K_M 3.65 積極的な圧縮
Q2_K 2.63 最大圧縮、顕著な品質低下
IQ4_XS 4.25 重要度の重みを考慮した最適化4ビット
IQ3_XXS 3.06 実験的な超低ビット
IQ2_XXS 2.06 極限圧縮

仕組み

カリキュレータは以下の計算式を使用します:

モデルサイズ(GB) = (10億単位のパラメータ数 × 10⁹ × 重みあたりのビット数) ÷ 8 ÷ 10⁹

KVキャッシュ(GB) ≈ (パラメータ × コンテキスト長 ÷ 1000 × 0.5) ÷ 1000

合計VRAM = モデルサイズ + KVキャッシュ + 10%オーバーヘッド

KVキャッシュ計算式は簡略化された近似値です。実際のKVキャッシュサイズはモデルアーキテクチャ(レイヤー数、注意ヘッド数、ヘッド次元)に依存しますが、この推定値はほとんどのトランスフォーマーベースのLLMに適しています。

ヒント

  • Q4_K_Mから始める: この量子化は、ほとんどのユースケースで品質とサイズの最適なバランスを提供します
  • 余裕を残す: より長い生成中のメモリ不足エラーを回避するために、1~2 GBの空きVRAMを目指します
  • コンテキストニーズを考慮: 長いコンテキスト(8K以上)が必要な場合、より積極的な量子化を使用する必要があるかもしれません
  • 複数GPU: マルチGPUセットアップの場合、モデルをカード間で分割できることが多いですが、このカリキュレータはシングルGPU使用を想定しています

制限事項

  • KVキャッシュの推定値は、一般的なトランスフォーマーアーキテクチャに基づいた近似値です
  • 実際のVRAM使用量は推論フレームワーク(llama.cpp、vLLM、TensorRT-LLM)によって異なります
  • バッチ推論または推測デコーディングのオーバーヘッドは考慮されていません
  • Flash Attentionおよび他の最適化により、実際の要件を削減できます
  • 一部のモデルには、より多くまたはより少ないメモリを使用する可能性のある非標準アーキテクチャがあります

FAQ

Q: 計算されたVRAMよりもモデルがより多くのVRAMを使用するのはなぜですか? A: カリキュレータは基本的な推定値を提供します。推論フレームワークは独自のオーバーヘッドを追加し、一部の操作はピーク使用量を増加させる一時バッファが必要です。

Q: CPUオフロードを使用してVRAMより大きいモデルを実行できますか? A: はい、llama.cppなどのツールは部分的なGPUオフロードをサポートしていますが、パフォーマンスは大幅に低下します。このカリキュレータはフルGPU推論に焦点を当てています。

Q: どの量子化を使用すべきですか? A: ほとんどのユーザーにとって、Q4_K_Mは重みあたり約4.85ビットで優れた品質を提供します。VRAMに余裕がある場合、Q5_K_MまたはQ6_Kはわずかに優れた品質を提供します。絶対に必要な場合のみQ2/Q3形式を使用してください。

Q: これらの推定値の精度はどの程度ですか? A: ほとんどの一般的なモデルで10~20%以内です。実際の使用量は、特定のモデルアーキテクチャ、推論バックエンド、実行時設定に依存します。