search
  1. ソフト・サービス
  2. ComfyUI
  3. ComfyUIの画像生成
  4. ComfyUIのVRAMの節約と速さ|起動オプション・タイル・キャッシュ

ComfyUI

ComfyUIのVRAMの節約と速さ|起動オプション・タイル・キャッシュ

編集部 読了 約8分

*2026年9月29日に確認した内容です。ComfyUI の公式ドキュメント(「トラブルシューティングの概要」「モデルの問題」・組み込みのノードの「VAEDecodeTiled」「EasyCache」「LazyCache」)と、ComfyUI の公式リポジトリの comfy/cli_args.py(v0.37.0)によります。起動の記録と画面は、編集部の PC(Windows 11・NVIDIA GeForce RTX 4060・VRAM 8,188MB・RAM 30,421MB)のポータブル版(Python ごと1つのフォルダに入った Windows 向けの ComfyUI。ComfyUI v0.37.0・フロントエンド 1.52.7)で確かめました。

VRAM は、GPU が使う専用のメモリです。VRAM が足りないと、ComfyUI は遅くなったり、「CUDA out of memory」のエラーで止まったりします。起動の引数(起動のコマンドの後ろに付ける指定)で、VRAM の使い方を変えられます。VAE のデコードはタイルに分けて処理でき、キャッシュ(結果を取っておくこと)は、起動の引数とノードで速さとメモリの釣り合いを変えられます。

VRAMが足りないときに起きること

公式ドキュメントでは、「生成がとても遅い」「PC が固まる」「メモリ不足のエラーが出る」を、「パフォーマンスが遅い」ときの症状としています。公式ドキュメントが最初に挙げる直し方は、次の4つです。

  1. 画像の大きさか、まとめて作る枚数(バッチサイズ)を減らす
  2. メモリを減らす起動の引数を使う(次の見出し)
  3. 使っていないアプリを閉じて、RAM と VRAM を空ける
  4. タスクマネージャーで CPU と GPU の使われ方を見て、どこで詰まっているかを探す

公式ドキュメントのモデルのエラーのページでは、「RuntimeError: CUDA out of memory」(GPU のメモリが足りない)のエラーが出るときも、起動の引数で VRAM の使用量を減らすとしています。GPU と VRAM の量でできることは、「ComfyUIの動作環境|GPU・VRAM・OS」の記事で解説しています。

起動の引数でVRAMの使い方を変える

ポータブル版では、ComfyUI_windows_portable のフォルダでターミナル(フォルダの中の右クリックのメニューから開ける)を開き、起動のコマンドの後ろに引数を付けて入力します。

.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --lowvram

説明は ComfyUI v0.37.0 の cli_args.py と公式ドキュメントによります。VRAM の使い方を変える引数は、次のとおりです。dynamic VRAM は、cli_args.py の --disable-dynamic-vram の説明によると、見積もりに基づかずにモデルを読み込むしくみで、v0.37.0 では対応している環境で初めから有効になります。

引数説明
--lowvram公式ドキュメントでは、テキストエンコーダを CPU で動かす低 VRAM のモード。v0.37.0 の cli_args.py では、dynamic VRAM が有効なときは何もしない
--novramcli_args.py の説明は「--lowvram で足りないとき」だけ。編集部の起動の記録では、VRAM の状態が NO_VRAM になり、dynamic VRAM は有効にならなかった
--force-fp16fp16 に固定する。公式ドキュメントのモデルのエラーのページでは、精度を下げてメモリを減らす方法に挙げている
--cpuすべてを CPU で動かす。公式ドキュメントでは、とても遅いので最後の手段
--highvram使い終わったモデルを CPU のメモリに移さず、GPU のメモリに置いたままにする
--gpu-onlyテキストエンコーダなども含め、すべてを GPU に置いて動かす
--reserve-vram 2OS やほかのソフトのために残す VRAM の量(GB)
--disable-smart-memoryモデルを VRAM に置いておける場合でも、積極的にふつうの RAM へ移す
--use-pytorch-cross-attentionPyTorch 2.0 のアテンション(モデルの中の計算の1つ)の関数を使う
--async-offload重みを、計算と並行して RAM と行き来させる。cli_args.py では、NVIDIA の GPU では初めから有効
--disable-dynamic-vramdynamic VRAM を止め、見積もりに基づいてモデルを読み込む

編集部は、ポータブル版を引数を変えて起動し、起動の記録を見ました。

(引数なし)     Set vram state to: NORMAL_VRAM / DynamicVRAM support detected and enabled
--lowvram        Set vram state to: LOW_VRAM / DynamicVRAM support detected and enabled
--novram         Set vram state to: NO_VRAM(DynamicVRAM の行は出ない)
--cpu            Set vram state to: DISABLED / Device: cpu

編集部の PC(RTX 4060)では、引数なしで dynamic VRAM が有効になりました。--lowvram を付けても dynamic VRAM は有効のままで、cli_args.py の説明のとおり、--lowvram は効かない状態です。--novram と --cpu では、dynamic VRAM の行は出ませんでした。

公式ドキュメントのモデルのエラーのページは、「CUDA out of memory」が出たら --lowvram → --novram → --cpu の順に試すとしています。そのため v0.37.0 では、--novram から試すことになります。精度を下げて小さくしたモデル(fp8 など)を使う方法は、「ComfyUIのモデルのファイル形式と量子化|safetensors・fp8・GGUF」の記事で解説しています。

キャッシュの起動の引数

ComfyUI は、実行したノードの結果をキャッシュします。キャッシュの方式は、起動の引数で変えられます。

引数説明(cli_args.py・公式ドキュメント)編集部の起動の記録
(引数なし)・--cache-ramRAM の余裕に合わせてキャッシュする。v0.37.0 の初めの方式Using RAM pressure cache.
--cache-classic前のやり方の、積極的なキャッシュキャッシュの行は出ない
--cache-lru 10ノードの結果を、決めた数(この例は10)までキャッシュする。公式ドキュメントでは速いとしている。RAM・VRAM を多く使うことがあるUsing LRU cache
--cache-noneキャッシュしない。RAM と VRAM の使用は減るが、実行のたびにすべてのノードを動かすDisabling intermediate node cache.

公式ドキュメントでは、ほかに、サンプリング中のプレビューを出さない --preview-method none で VRAM と処理を節約できるとしています。v0.37.0 の cli_args.py では、プレビューの初めの値はプレビューなしです。

VAEのデコードをタイルに分ける

大きい画像を潜在から画像に戻すときは、VAE Decode の代わりに VAE Decode (Tiled)(画面の名前は「VAEデコード(タイル)」)を使えます。公式ドキュメントによると、画像を小さなタイルに分けて1つずつ処理し、メモリの使用量を抑えます。

タイルの設定と、画像を潜在にする VAE Encode (Tiled) は、「ComfyUIのVAEデコードとエンコード|VAEの差し替え・タイル処理」の記事で解説しています。

キャッシュのノードで速くする

EasyCache は、公式ドキュメントによると、毎ステップ計算し直す代わりに、前のステップの結果を使い回して、サンプリングを速くするノードです。「チェックポイントを読み込む」の「モデル」と、「Kサンプラー」の「モデル」の間につなぎます。

チェックポイントを読み込むのモデルからEasyCache(reuse_threshold 0.20・start_percent 0.15・end_percent 0.95・verbose false)を通り、Kサンプラーのモデルにつないだワークフロー
EasyCache には [BETA] の札が付く(v0.37.0・フロントエンド 1.52.7)
値初めの値公式ドキュメントの説明
reuse_threshold0.2キャッシュしたステップを使い回すかを決めるしきい値
start_percent0.15使い始めるサンプリングの位置(割合)
end_percent0.95使い終わるサンプリングの位置(割合)
verbosefalse詳しい情報を記録に出すかどうか

編集部は、SD1.5(512×512・ステップ 20)で、EasyCache を付けて実行しました(reuse_threshold・start_percent・end_percent は初めの値、記録を見るため verbose だけ true)。ComfyUI の記録には「EasyCache - skipped 10/20 steps (2.00x speedup)」(20ステップのうち10ステップを飛ばした)と出ました。実行にかかった時間は、EasyCache なしが 2.05 秒、ありが 1.20 秒でした。できた画像は、EasyCache なしの画像と比べて、構図や細部が変わりました。

LazyCache は、公式ドキュメントでは、EasyCache の実験的な版で、ComfyUI のモデルと広く合うように作られています。ただし、ふつうは EasyCache より性能が低く、まれな場合にだけ役立つかもしれない、としています。値は EasyCache と同じ4つです。

VRAM の考え方は、「VRAM(ビデオメモリ)とは|GPUが使う専用のメモリと足りないときに起きること」の記事で解説します。モデルが見つからない・読み込めないときは、「ComfyUIのモデルのエラー|形式の違い・見つからないモデル」の記事で解説しています。

会員登録(無料)

記事やテーマのお気に入り・学習履歴・フォローが使えます。

この記事について

PERSC編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。

あわせて読みたい