VRAM不足エラーの原因と解決法|Stable Diffusion・Ollama実測データで解説

VRAM不足エラーの原因と解決法|Stable Diffusion・Ollama実測データで解説 アイキャッチ GPU・グラフィックボード

Stable Diffusionで画像を生成しようとしたら、突然 CUDA out of memory の赤文字。Ollamaでモデルをロードした瞬間、画面がフリーズ。ローカルAI環境を使い始めた人が最初にぶつかる壁が、このVRAM不足エラーだった。

原因はシンプルで、AIモデルが必要とするメモリ量がGPUの搭載VRAM容量を超えている、それだけの話。ただし解決策は1つではなく、設定変更だけで済むケースもあれば、モデルの選び直しやハードウェアの見直しが必要な場合もある。

この記事では、当サイトの検証環境(RTX 5060 Ti 16GB)で実際に計測したVRAM使用量データをもとに、「自分のGPUで何が動いて何が動かないのか」を数値で判断できる基準を示していく。

この記事の要点

  • VRAM不足エラーの最大の原因は、モデルサイズと精度設定がGPUのVRAM容量を超えていること
  • 最初に試すべきはモデルの量子化・精度変更・解像度調整など費用ゼロの設定変更
  • 設定変更で解決しない場合、VRAM 16GB以上のGPUへの買い替えかクラウドGPU利用が現実的な選択肢

VRAM不足エラーとは?発生する原因を理解する

VRAM不足エラーは、GPUに搭載されたビデオメモリ(VRAM)の容量を、AIモデルの実行に必要なメモリ量が上回ったときに発生する。表示されるエラーメッセージは環境によって異なるが、代表的なものは以下の3種類。

  • CUDA out of memory
  • RuntimeError: CUDA error: out of memory
  • torch.cuda.OutOfMemoryError

どのメッセージも意味は同じで、「GPUのメモリが足りない」という警告。では、何がVRAMを消費しているのか?

ローカルAIの実行時、VRAMを大きく消費するのは3つの要素。まず モデルの重み(パラメータ) で、これが最大の消費源になる。8Bパラメータのモデルなら約5GB、14Bなら約10GB、22Bなら約13GBが目安。次に KVキャッシュ と呼ばれる推論中の一時データ。長い文章を生成するほど、このキャッシュが膨らんでいく。最後が 中間テンソル で、計算途中に生成される一時的なデータ。

これら3つの合計がGPUのVRAM容量を超えると、冒頭のエラーが発生する仕組み。つまり「モデルが大きすぎるか」「設定が高すぎるか」「他のアプリがVRAMを食っているか」のいずれかが原因ということになる。

対処法を試す前に、まず自分の環境情報を確認してほしい。

  • OS: Windows 10/11 または Linux
  • GPU: モデル名とVRAM容量(タスクマネージャーの「パフォーマンス」→「GPU」で確認可能)
  • ドライババージョン: NVIDIA コントロールパネルの「システム情報」、またはターミナルで nvidia-smi を実行
  • AIソフトとバージョン: Ollamaなら ollama –version、ComfyUIならメイン画面の左下に表示

実測データで見るVRAM使用量の目安

自分のGPUのVRAM容量で何が動くのか。当サイトの検証環境(RTX 5060 Ti 16GB / i7-14700F / 96GB RAM)で実際に計測したデータを紹介する。

Ollama(LLM)のVRAM使用量

LLMはパラメータ数が大きいほどVRAM消費が増える。以下は当サイトの検証環境で計測した実測値。

モデル パラメータ数 VRAM使用量 推論速度
phi4-mini 3.8B 3.5GB 122.9 tokens/sec
gemma3:4b 4B 3.9GB 118.3 tokens/sec
llama3.1:8b 8B 5.5GB 80.7 tokens/sec
deepseek-r1:8b 8B 5.6GB 74.5 tokens/sec
gemma3:12b 12B 9.0GB 48.8 tokens/sec
phi4:14b 14B 9.7GB 44.8 tokens/sec
qwen3:14b 14B 9.5GB 43.4 tokens/sec
codestral:22b 22B 13.2GB 31.7 tokens/sec

見過ごせないのが、8Bモデルでも5GB以上のVRAMを消費する点。VRAM 8GBのGPUでは8Bモデルがギリギリのラインで、14B以上のモデルはVRAM 12GB以上がないと動作しない。22Bクラスになると13.2GBを消費するため、VRAM 12GBのGPUではエラーが出る可能性が高い。

VRAM 8GBのGPUでは8Bモデルが実質的な上限。14B以上を動かしたいなら、VRAM 12GB以上のGPUが必要になる。

ComfyUI/Stable DiffusionのVRAM使用量

画像生成AIの場合、同じモデルでも 精度設定 によってVRAM消費量が劇的に変わる。ここが見落としやすいポイント。

モデル 精度設定 VRAM使用量
SDXL fp8 約4.1GB
SDXL bf16 約13.7GB

同じSDXLモデルで、fp8なら約4.1GB、bf16なら約13.7GB。その差は実に3倍以上。VRAM 8GBのGPUでもfp8設定ならSDXLが動くが、bf16設定ではVRAM 16GBでもギリギリという状況になる。精度設定の変更は、追加費用ゼロでVRAMを大幅に節約できる最も効果的な手段と言える。

モデル側の最適化で「CUDA out of memory」を解決する

エラーが出たとき、最初に試すべきはモデル側の最適化。GPUを買い替える前に、設定変更だけで解決するケースは多い。

この対処法で解決するケースが最も多い。まずここから試してみてください。

LLMの量子化とモデルサイズ選択

量子化とは、モデルの計算精度を下げてVRAM消費を削減する技術のこと。Ollamaで使われるGGUF形式では、Q4(4ビット)やQ8(8ビット)といった量子化レベルが選べる。

対処手順:

  1. 現在使用しているモデルのパラメータ数を確認する。Ollamaなら ollama list で一覧表示できる
  2. VRAM容量に収まるサイズのモデルに切り替える。VRAM 8GBなら8B以下、VRAM 12GBなら14B以下が目安
  3. 同じパラメータ数でもQ4量子化版を選ぶとVRAMをさらに削減できる。Ollamaではモデル名の末尾に量子化レベルが記載されている

ただし、量子化には注意点もある。Q4まで精度を落とすと、タスクによっては回答品質の劣化が顕著になるケースが報告されている。特にツールコール(関数呼び出し)やコード生成など、精密な出力が求められる用途では、Q8以上を維持したほうが安定する。品質とVRAM節約のバランスを見極めることが重要。

モデルサイズを下げるのが最もシンプルな解決策で、たとえば14Bモデルでエラーが出るなら、まず8Bモデルに切り替えて動作を確認するのがよい。当サイトの検証環境では、llama3.1:8bがVRAM 5.5GBで80.7 tokens/secの推論速度を記録しており、8Bクラスでも実用的な速度が出ることがわかっている。

画像生成モデルの精度設定と解像度調整

Stable Diffusion系のモデルでVRAM不足が出た場合、最初に見直すべきは精度設定と生成解像度の2つ。

対処手順:

  1. チェックポイントの精度をbf16からfp8に変更する。ComfyUIではモデルロード時に精度を指定できる。前述の通り、SDXLではこの変更だけでVRAM消費が約4.1GBまで下がる
  2. 生成解像度を下げる。SDXLの標準は1024×1024だが、768×768に下げるとVRAM消費が大幅に減少する
  3. バッチサイズを1に設定する。一度に複数枚生成する設定になっていると、その分VRAMを消費する

fp8への変更で画質が目に見えて劣化するかという点については、多くのユーザーがfp8でも実用上十分な品質だと報告している。まずfp8で試し、品質に不満があればfp16を検討するという順序が合理的。

実行環境の設定で解決する方法

モデル側の最適化で解決しなかった場合、次に確認すべきは実行環境の設定とシステム側の要因。

Stable Diffusion系の設定調整

ComfyUIやAutomatic1111で、モデル自体は小さいのにVRAM不足が出る場合、以下の設定を見直してみてほしい。

対処手順:

  1. –lowvram または –medvram オプションを起動引数に追加する。これによりモデルを分割してVRAMに読み込む方式に切り替わる
  2. VAE(画像デコーダー)をtiled方式に変更する。画像を分割してデコードすることでVRAMのピーク使用量を抑える
  3. 不要なモデルやLoRAがメモリ上に残っていないか確認する。複数のモデルを切り替えて使っている場合、以前のモデルがアンロードされずにVRAMを占有していることがある

ステップ1の –lowvram は生成速度が低下するトレードオフがある。まずは –medvram から試すのがおすすめ。

Ollamaの設定調整

Ollamaの場合、コンテキスト長(num_ctx)の設定がVRAM消費に直結する。デフォルトでは2048だが、これを大きく設定しているとKVキャッシュのVRAM消費が増える。

対処手順:

  1. モデル実行時のnum_ctx値を確認する。不必要に大きな値が設定されていないかチェックしてほしい
  2. 複数のモデルが同時にロードされていないか確認する。ollama ps でアクティブなモデル一覧を表示できる
  3. 使わないモデルは ollama stop モデル名 でアンロードし、VRAMを解放する

Ollamaはデフォルトでモデルをメモリに保持し続ける。別のモデルに切り替えた後も前のモデルがVRAMに残っているケースがあるため、定期的にアクティブなモデルを確認する習慣をつけるとよい。

OS・システム側の対策

AIソフトの設定を見直しても解決しない場合、OS側でVRAMを圧迫しているプロセスがないか確認する。意外と見落としがちなのがこの部分。

対処手順:

  1. タスクマネージャーの「パフォーマンス」タブでGPUメモリの使用状況を確認する。「専用GPUメモリ」の項目がVRAM使用量に該当する
  2. ブラウザ(特にChrome)を閉じる。タブを大量に開いていると、GPUアクセラレーションにより数百MB〜1GB以上のVRAMを消費している場合がある
  3. Discord、Slack、動画プレイヤーなど、GPUを使用するアプリケーションを終了する
  4. マルチモニター環境の場合、AI処理中はサブモニターを無効化することでVRAMの空き容量を確保できる

ターミナルで nvidia-smi を実行すると、各プロセスのVRAM使用量が一覧で表示される。どのアプリがどれだけVRAMを消費しているか一目で確認できるため、この方法が最も確実。

ドライバの更新やクリーンインストールを行う場合は、作業中のデータをすべて保存してから実施すること。ドライバの不整合でGPUが正常に認識されなくなるリスクがある。NVIDIA公式サイトから最新の安定版ドライバをダウンロードし、「クリーンインストール」オプションを選択するのが安全。

なお、NVIDIAドライバが古いバージョンのままだと、VRAM管理の効率が悪くなり不足エラーが出やすくなるケースもある。ドライバのバージョンは定期的に確認しておきたいところ。

それでも解決しない場合のハードウェア対策

設定変更やモデル最適化を試しても解決しないなら、根本的にVRAM容量が不足している状態。ここからはハードウェア側の選択肢を検討する段階になる。

VRAM容量別にできることの違い

GPUの買い替えを検討する際、VRAM容量ごとに何ができるかを把握しておくと判断しやすい。

VRAM容量 LLM(Ollama) 画像生成(SD系) 代表的なGPU
8GB 8Bモデルがギリギリ SDXL fp8は動作可能 RTX 4060、RTX 5060
12GB 14Bモデルまで動作 SDXL bf16は厳しい RTX 5070、RTX 3060 12GB
16GB 22B〜26Bモデルまで対応 SDXL bf16も動作可能 RTX 5060 Ti 16GB、RTX 5070 Ti
24GB 大型モデルに余裕あり 高解像度・大規模モデル対応 RTX 3090(中古)

当サイトの検証環境(RTX 5060 Ti 16GB)では、codestral:22bがVRAM 13.2GBで動作し、22Bクラスまでは実測上しっかり枠内に収まっている。16GBあれば22Bクラスのモデルまでカバーできるため、現時点でコストパフォーマンスに優れた選択肢と位置付けられる。

VRAM 16GBのGPUは、RTX 5060 Ti 16GBが2026年4月時点で8万円台後半〜10万円前後のレンジで流通している(実勢は kakaku.com 等の価格比較サイト・店頭動向で変動するため、購入前に最新値を確認してください)。VRAM 12GBのRTX 5070はCUDAコア数が多いぶん推論速度で有利な一方、14B超モデルでオフロードが発生するリスクがある。用途と予算に応じた判断が必要になる。

クラウドGPUという選択肢

高額なGPUを購入する前に検討すべきなのが、クラウドGPUサービスの利用。海外のRedditコミュニティ(r/LocalLLaMA)でも、ローカル環境のVRAM制約に悩むユーザーに対して「まずはクラウドで自分の用途を確定させてから、本当に必要なスペックを見極めるべき」という意見が多く見られる。

この考え方は合理的で、たとえばVRAM 12GBの環境で大型モデルを動かしたい場合、いきなり高額GPUを購入するよりも、クラウドで試して「自分に必要なVRAM容量」を確認してからハードウェア投資を判断するほうがリスクが低い。

クラウドGPUを使わない場合でも、ChatGPTやClaude、GeminiなどのAPI経由であれば、ローカルのGPUスペックに関係なく大規模モデルの性能を利用できる。GPU不要の代替手段として覚えておいて損はないだろう。

よくある質問

Q. VRAM 8GBのGPUでStable DiffusionやOllamaは使えますか?

使えますが動作するモデルに制限があります。OllamaのLLMは8Bパラメータ以下が実質的な上限(約5.3GB消費)。Stable DiffusionはSDXLをfp8精度に設定すれば約4.1GBで動作します。bf16設定や14B以上のLLMはVRAM不足エラーが出る可能性が高いため、精度設定とモデルサイズの見直しが先決です。

Q. 「CUDA out of memory」エラーが出たとき最初に試すべき対処法は?

費用ゼロでできる設定変更から試すのが合理的です。LLMならモデルをQ4量子化版や小さいパラメータ数に切り替える、Stable DiffusionならチェックポイントをbF16からfp8に変更する・解像度を下げる・バッチサイズを1にするの3点が有効です。SDXLはfp8変更だけでVRAM消費を約13.7GBから4.1GBまで削減できます。

Q. LLMの量子化(Q4/Q8)で回答の品質は落ちますか?

Q4まで精度を落とすと、タスクによっては品質劣化が顕著になるケースがあります。特にツールコール(関数呼び出し)やコード生成など精密な出力が求められる用途ではQ8以上の維持が推奨されています。一般的な会話や要約用途ならQ4でも実用上問題ないことが多く、VRAMとの兼ね合いで選択するのが現実的です。

まとめ

VRAM不足エラーの対処は、以下の優先順位で進めるのが効率的。

まず 費用ゼロでできる設定変更 から。精度設定の変更(bf16→fp8)、解像度の低下、バッチサイズの削減、不要プロセスの停止。これだけで解決するケースが最も多い。

次に モデル側の最適化 を試す。量子化版への切り替え、より小さいパラメータ数のモデルへの変更。当サイトの検証環境ではllama3.1:8bがVRAM 5.3GBで実用的に動作しており、モデルサイズを下げても十分使える場面は多い。

それでも解決しないなら ハードウェアの見直し を検討する。VRAM 16GB以上のGPUへの買い替えか、クラウドGPUの活用が現実的な選択肢になる。

よくある質問(FAQ)

Q: VRAMは後から増設できますか?
A: GPUのVRAMはマザーボードのRAMとは異なり、後から増設できない。VRAM容量を増やすにはGPU自体を買い替える必要がある。VRAM容量はGPU購入時の最も重要な判断基準なので、AI用途ならVRAM 16GB以上のモデルを選ぶことを推奨する。

Q: 「共有GPUメモリ」はVRAM不足の解決になりますか?
A: Windows の設定で表示される「共有GPUメモリ」は、システムRAMの一部をGPUメモリとして使う機能。利用自体は可能だが、通常のVRAMと比べて帯域幅が大幅に狭いため、AI推論の速度が著しく低下する。緊急的な回避策にはなるが、実用的な解決策とは言いがたい。

Q: AMD GPUでもVRAM不足エラーは同じ対処法で解決できますか?
A: VRAM不足の原理はNVIDIA・AMDともに共通のため、モデルの最適化や設定調整といった対処法はそのまま適用できる。ただし、AMDの場合はCUDAではなくROCm(Linux)やDirectML(Windows)が使われるため、エラーメッセージの表現が異なる場合がある。対処の基本的な考え方は変わらないが、ソフトウェアの互換性については事前にROCm対応状況を確認してほしい。

当サイトはAmazonアソシエイト・プログラムの参加者です。Amazonのアソシエイトとして、当サイトは適格販売により収入を得ています。

おすすめパーツ 価格まとめ

製品名 カテゴリ スペック 参考価格
RTX 5070 Ti GPU・グラフィックボード NVIDIA GeForce RTX 5070 Ti 16GB GDDR7 ¥158,000〜
(kakaku.com最安値・2026/04/22)
RTX 5070 GPU・グラフィックボード NVIDIA GeForce RTX 5070 12GB GDDR7 ¥105,000〜
RTX 4060 GPU・グラフィックボード NVIDIA GeForce RTX 4060 8GB GDDR6 ¥45,000〜(中古相場)

本記事は AIハードウェア図鑑 編集部 が記載時点の情報をもとに執筆。製品アップデートや第三者ベンチマーク・価格・対応ランタイム等の変動で評価が変わる可能性がある。一定期間経過した内容は再検証を推奨する。

タイトルとURLをコピーしました