まずバッチサイズを半分に下げるのが最速の解決策。それでもダメなら混合精度学習(FP16)→ FP8量子化の順に試す。ComfyUIでは、コンソールの行で「止まった(OOM)」のか「載り切らずに遅いだけ」なのかを先に見分ける。ソフト対策で目的のモデルが動かないなら、VRAMの大きいGPUへの乗り換えが根本の対処になる。
結論:「CUDA out of memory」エラーは、PyTorchのコード最適化とVRAM容量の2軸で解決できる。バッチサイズ削減・混合精度学習・Gradient Checkpointingなどの施策に加え、2026年はFP8/NVFP4量子化やComfyUIのDynamic VRAMが強力な武器になっている。
PyTorchやStable Diffusion、ComfyUIを使っていると、突然現れるCUDA out of memory。VRAMが物理的に足りなくなった瞬間に発生するこのエラー、解決策を知らないと何時間も詰まってしまう。本記事では、原因の解説から7つの実践的対処法、最終手段のBTOパソコン選びまで2026年の最新情報をもとに徹底解説する。

CUDAエラーの仕組み:なぜVRAMが枯渇するのか

GPUはCPUとは独立した専用メモリ(VRAM)を持ち、テンソル・モデルパラメータ・中間出力をすべてそこに展開する。バッチサイズが大きすぎる、解像度が高い、ループ内でテンソルが蓄積するといった状況でVRAMが一杯になるとCUDA out of memoryが発生する。
検証環境(RTX 4070 Ti SUPER / torch 2.6.0+cu124)で実際にVRAMを使い切って確認したところ、送出される例外はtorch.OutOfMemoryError(RuntimeErrorのサブクラス)で、メッセージはCUDA out of memory. Tried to allocate 1024.00 MiB. GPU 0 has a total capacity of 15.99 GiB of which 0 bytes is free.という形式だった。古い資料ではRuntimeError:と表記されることが多いが、画面に出る型名はPyTorchのバージョンによって変わる。
よくある誤解:nvidia-smiでVRAMが常に満杯に見えても、それはPyTorchのキャッシュが解放されていないだけの場合がある。実際の枯渇とは別物なので、torch.cuda.memory_summary()で内部状態を確認するのが正確だ。
ComfyUIでは「止まった」のか「遅いだけ」かを先に見分ける
ComfyUIは、VRAMが足りなくてもすぐには止まりません。載り切らない分をメインメモリに置いて動かし(そのぶん遅くなる)、それでも足りないときにCUDA out of memoryで止まります。どちらの状態かは、コンソールに出る行で分かります。
| コンソールの行 | 意味 |
|---|---|
Got an OOM, unloading all loaded models. |
VRAMが足りずに止まった(ComfyUIは読み込んだモデルを全部外す) |
loaded partially; … MB offloaded … |
載り切らない分(offloaded)をメインメモリに置いて動かしている=止まらないが遅くなる。旧来の読み込みの行で、Dynamic VRAMが無効のときと、GGUFのモデル(カスタムノードのComfyUI-GGUFで読み込む)で出る |
DynamicVRAM support detected and enabled |
起動時に出る。Dynamic VRAM(VRAMとメインメモリを自動でやりくりする読み込み)が有効 |
Model … prepared for dynamic VRAM loading. …MB Staged. |
Dynamic VRAMでモデルを読み込んだ。この行には、載り切らない量は出ない |
出典=ComfyUI v0.39.0のソース(main.py・comfy/model_patcher.py・execution.py)と当サイトの検証機のログ。v0.39.0では、NVIDIAのGPUでPyTorch 2.8以上ならDynamic VRAMが既定で有効です。行の詳しい読み方はComfyUIでGPUが認識されない時の対処法にまとめています。
見分けたあとは、次の順で考えます。
- 止まった(
Got an OOM):ComfyUIは「前に動いたワークフローなら、バッチサイズを大きくしていないか」を確かめるよう表示します(v0.39.0のexecution.py)。まずはお金のかからない対処として、バッチサイズや解像度を下げる、小さい版や量子化したモデル(FP8・GGUFなど)に替える、ほかのアプリが使っているVRAMを空ける、を試します。 - 遅いだけ(載り切らない):処理は進んでいます。当サイトの測定では、載り切らない量1,000MiBにつき、1ステップあたり約0.42〜0.60秒遅くなりました(GGUFのモデル・ComfyUI 0.20.1・ComfyUIのVRAM不足の遅さを測った記事)。この遅さを許せるなら、設定はそのままでも使えます。
- 小さいモデルや低い設定では目的が果たせない:ここで初めて、VRAMの大きいGPUを検討します。画像はAI画像生成のGPU/VRAM選び、動画はローカルAI動画生成のGPU/VRAM選びで、モデルごとの条件を比べています。
7つの解決方法【PyTorch・Stable Diffusion・ComfyUI対応】
① バッチサイズを下げる
最も即効性のある手段。64でエラーが出るなら32→16と段階的に下げる。ただし小さすぎると勾配が不安定になるため、学習率の再調整もセットで行うこと。
② 勾配の蓄積(Gradient Accumulation)
バッチサイズ8でも蓄積ステップを4にすれば、実効的にバッチサイズ32として学習できる。メモリを抑えながら大バッチの安定性を得られる手法で、VRAMが少ない環境での必須テクニックだ。
③ 混合精度学習(FP16 / BFloat16)
torch.ampのautocastとGradScalerを使うだけでメモリを大きく削減できる。NVIDIA GPU上のTensor Coreも活用されるため速度も向上する、現代のPyTorch開発では必須のベストプラクティスだ。
実測値と、記法の変更(2026年8月16日 訂正)
検証環境(RTX 4070 Ti SUPER / torch 2.6.0+cu124)で同じ形状のテンソルを確保して比べると、FP32の256MiBに対しFP16は128MiB(比0.50)だった。「約半分」は実測と一致する。ただし旧記法のtorch.cuda.amp.GradScaler(...)は非推奨で、実行するとtorch.amp.GradScaler('cuda', ...)を使うよう警告が出る。本記事は当初torch.cuda.ampと記載していたため訂正した。
④ メモリリークの防止

ループ内で不要になったテンソルの参照をdelで明示的に消すのが本体です。torch.cuda.empty_cache()は、PyTorchが抱えている使われていないキャッシュを手放して、ほかのアプリやnvidia-smiから見えるようにする関数で、PyTorch自身が使えるメモリは増えません(PyTorchの公式の説明。断片化が減る場合はある)。参照中のテンソルも解放されません。
⑤ 推論・評価時にtorch.no_grad()を使う
ValidationループやInferenceのブロック全体をwith torch.no_grad():で囲むだけで、計算グラフの構築を止めてメモリを大幅削減できる。学習コードで忘れがちなポイントだ。
⑥ Gradient Checkpointing(アクティベーション再計算)
中間出力を都度破棄して逆伝播時に再計算する手法。計算をやり直すぶん学習は遅くなるが、中間出力を持たないぶんメモリ消費が大きく減る。深いTransformerモデルや大規模LLMのファインチューニングに特に効果的だ。
⑦ FP8 / NVFP4量子化とComfyUIのDynamic VRAM
| 形式 | VRAM | 速さ | 条件 |
|---|---|---|---|
| NVFP8 | 40%減 | 2倍 | NVIDIAの発表値 |
| NVFP4 | 60%減 | 3倍 | RTX 50シリーズの形式(NVIDIAの発表値) |
NVIDIAが2026年1月(CES 2026)に発表した、ComfyUIでの値です。ComfyUIの最適化と合わせた値で、比べた条件は発表に書かれていません。NVFP4・NVFP8の重みは、LTX-2・FLUX.1・FLUX.2・Qwen-Imageなどで配布されています(同じ発表)。画質の違いは、使うモデルの配布元の比較で確かめてください。
ComfyUI v0.39.0では、NVIDIAのGPUでPyTorch 2.8以上ならDynamic VRAMが既定で有効で、VRAMに載り切らない分をメインメモリに置いて動かします。止まりにくくなる代わりに遅くなり、それでも足りなければCUDA out of memoryで止まります(上の「止まったのか遅いだけか」の節)。Dynamic VRAMが有効な間は、--lowvramを付けても何もしません(本体の起動オプションの説明)。Stable Diffusion WebUI(AUTOMATIC1111)では、NVIDIAのGPUなら--xformersでメモリの使用量と速度が大きく改善します(公式wiki)。それでも足りなければ--medvram(少し遅くなる)、さらに--lowvram(大きく遅くなる)を足します。
📘 7つの手法のうち「自分の構成でどれが効くか」を数字で決めたい方へ:当サイト運営者がZennで公開している電子書籍『画像生成AI・ローカルLLMを“安く速く”動かす実測ガイド』(有料・500円/第1〜2章は無料公開)で、量子化・オフロード・スライスを RTX 4070 Ti SUPER(VRAM 16GB)で一つずつ実測し、通説と答え合わせをしています。先に結論を言うと、節約テクの多くはVRAMを時間で買う取引でした。
LLMファインチューニングの場合:Unslothの公式READMEは「2倍速く、VRAMは70%少なく」とうたっています。必要なVRAMの目安は公式の表で、QLoRA(4ビット)なら7Bで最小5GB・8Bで最小6GB、16ビットのLoRAでは7Bで19GB・8Bで22GBです(公式は「最小値で、モデルによって増える」と注記)。
ソフト最適化の限界とBTOパソコン選びの基準

量子化やオフロードは「延命措置」にすぎない。VRAMが足りないまま動かすと遅くなり、当サイトの測定では、載り切らない量1,000MiBにつき1ステップあたり約0.42〜0.60秒遅くなりました(ComfyUIのVRAM不足の遅さを測った記事)。本格的なAI開発・画像生成なら、GPU選定の基準は一つ:VRAMが何GBかだ。
エントリー〜中級(16GB)
画像生成・推論が中心なら。RTX 50シリーズで16GBを積む一番下のモデルはRTX 5060 Tiの16GB版です(8GB版もあるので注意・NVIDIA公式)。
上級者・プロ(24GB以上)
大きなLLMのファインチューニングや動画生成で余裕を持たせたいなら。RTX 50シリーズで24GB以上を積むのはRTX 5090(32GB)だけで、RTX 5080は16GBです(NVIDIA公式)。動画のモデルごとの条件はローカルAI動画生成のGPU/VRAM選びで比べています。
GPUを買わない選択(クラウド)
GPUを買わずに試すなら、ブラウザでComfyUI・AUTOMATIC1111を使えるConoHa AI Canvasがあります。ただし公式の対応モデルはStable Diffusion 1.5/2.0/2.1/XLで、FLUXなどは対応一覧にありません。
コスト重視なら中古も:中古・整備済みPCのPC WRAPは、対象商品に無料の3年保証が付きます(対象外の商品・条件あり。修理が難しい場合は代替品で対応・公式)。中古は積んでいるGPUとVRAMが商品ごとに違うので、商品ページでGPUの型番とVRAMの容量を確かめてください。
まとめ
「CUDA out of memory」の解決は2段階で考えるのが正解だ。
- ソフトウェア対策:バッチサイズ削減・混合精度学習・no_grad・FP8/NVFP4量子化・Dynamic VRAMを組み合わせる
- ハードウェア対策:VRAM 16GB以上のBTOパソコンに移行して根本解決する
ComfyUIなら、まずコンソールの行で「止まった」のか「遅いだけ」なのかを見分ける。ソフト対策で目的のモデルや設定が動かない、または遅さが許せないときに、VRAMの大きいGPUを検討してほしい。
よくある質問
CUDA out of memoryエラーが出たときまず何をすればいいですか?▼
Stable DiffusionやComfyUIでのOOMエラーに効果的な設定は?▼
--xformers でメモリの使用量と速度が大きく改善します(公式wiki)。それでも足りなければ --medvram(少し遅くなる)か --lowvram(大きく遅くなる)を追加してください。ComfyUI v0.39.0は、NVIDIAのGPUでPyTorch 2.8以上ならDynamic VRAMが既定で有効で、その間は --lowvram を付けても何もしません。止まったのか遅いだけなのかは、コンソールの行で見分けます。AI用途のBTOパソコンはVRAM何GBを選べばいいですか?▼
torch.cuda.empty_cache()でOOMエラーは解決しますか?▼
LLMのファインチューニングで使えるメモリ削減技術はありますか?▼
「RuntimeError: CUDA error: out of memory」は別のエラーですか?▼
torch.cuda.OutOfMemoryError。当サイトの検証環境のtorch 2.6.0では torch.OutOfMemoryError と表示)になりましたが、「RuntimeError: CUDA error: out of memory」は同じVRAM不足を古い汎用エラーとして表示したものです。モデルが大きすぎるか、別のプロセスがVRAMを掴んだままのことが多いので、まず使っていないGPUプロセス(前回の学習・生成の残り)を終了してVRAMを解放し、本記事の7つの方法を上から試してください。

コメント