見出し画像

【ComfyUI 中級】 VRAM を制御して最高の性能を引き出す設定!

はじめに

こんにちは、きまま / Easygoing です。

今回は ComfyUI 中級編で、ComfyUI のベストなセッティングを考えます。

初級編

ComfyUI は速い!

私が Stable Diffusion webUI Forge から ComfyUI に移行したとき、最初に驚いたのは 動作の速さ でした。

それまで使っていた Stable Diffusion webUI Forge も軽快に動作していましたが、ComfyUI は工程がリアルタイムで表示されて 常に VRAM と RAM の使用量を確認 できるので、さらに最適化を行うことができます。

Two-frame anime illustration depicting an ice mage

ComfyUI は、最適なセッティングを行えば、Flux.1 / SD 3.5 / AuraFlow は VRAM 12GB、SDXL は VRAM 6 GB で動作します!

VRAM が大事

画像生成を行うときに一番重要なのが VRAM の制御 です。

画像生成の処理中に VRAM 使用量が実際の容量を超過すると、処理が大幅に遅くなり所要時間が 数倍以上 になってしまいます。

Anime Illustration of  A woman with long white hair and blue eyes in a dark blue dress

ComfyUI では、VRAM の使用量を確認しながら、使用量が実際の容量を超えないようにセッティングを調整していきます。

windows talc manager performance display screen with comment
windows を右クリック →  タスクマネージャー → パフォーマンス

2つの GPU を使う!

GPU の本来の用途はモニターへの映像の出力です。

モニターへの出力は 300 MB ~ 1GB 程度の VRAM を使用しますが、これを 別の GPU を搭載して任せる ことでその分の VRAM を解放することができます。

モニターへの出力に使う 2番目の GPU は、メーカーを問わずエントリークラスの GPU で十分です。

エントリークラスの GPU

Table of VRAM capacities and used prices for Geforce gt 1030 and Radeon RX 550
ハードオフなど中古パーツ店では、さらに捨て値で販売されることもある

GPU 出力を切り替えるのは簡単で、モニターのケーブルを差し替える だけで OK です。

CPU 内蔵 の GPU を使う

小型PC や ノートPC など、複数 GPU の使用が困難な場合でも、モニターの出力に CPU 内臓 の GPU を使える場合があります。

NVIDIA の GPU の場合、タスクトレイの中のアイコンを右クリックして NVIDIAコントロールパネル を開くと、モニターの出力に利用している GPU を確認することができます。

Screenshot of the Nvidia icon in the task tray with comment
Screenshot of the PsyX configuration screen in the Nvidia Control Panel with comment

もし、モニターへの出力を CPU 内臓 GPU が担当している場合は、専用 GPU は VRAM の全てを ComfyUI に割り当てる ことができます。

なお、CPU の型番やマザーボードの設定によっては、CPU 内臓 GPU の出力が使えない場合もあるので、動作しない場合は型番で検索するなどして調べてみて下さい。

Stability Matrix でメイン GPU を指定

GPU を複数利用するときは、Stability Matrix でメインの GPU を指定します。

GPU selection screen in the system settings of the Stability matrix with comment

Stability Matrix の左下の設定メニューから、システム設定の Defalt GPU で、ComfyUI で利用する一番性能の良い GPU を選びます。

こうしてメインの GPU を指定すると、パッケージをインストールするときに  その GPU に対応したビルド が自動でインストールされるようになります。

ComfyUI のメモリ管理のロジック

それでは、これから ComfyUI のメモリ管理のロジックを見ていきます。

設定の詳細は、StabilityMatrix/Packages/ComfyUI/comfy にある model_management.py というファイルに書かれています。

起動時:GPU の検出

ComfyUI は、起動時に GPU を自動で検出します。

ComfyUI's GPU detection algorithm diagram

検出された GPU と VRAM の容量は、ComfyUI の起動時のログに表示されます。

Screenshot of the ComfyUI startup log screen of the Stability matrix with comment

VRAM State の設定

ComfyUI には、VRAM の使い方を決めるプリセットがあります。

ComfyUI's VRAM state algorithm diagram
  • --highvram:最大性能、一度ロードしたモデルをアンロードしない

  • --normalvram もしくは未設定:通常動作

  • --lowvram:省VRAM、速度は低下

  • --novram:VRAM をほぼ使わない

Table of time required to generate an image in FP16 format with ComfyUI
VRAMが十分ある場合の所要時間

--highvram は高速ですが、一度ロードしたモデルをアンロードしないため、Out Of Memory (OOM)エラー が頻発してしまいます。

OOM error with comment
OOM エラー

通常は、何も入力しない --normalvram 設定で問題ありません。

--lowvram に設定すると 200 ~300 MB の VRAM の節約になりますが、処理速度が遅くなる割に VRAM 節約量が少ないので、使用するケースはあまりないと思います。

--novram は、極限まで VRAM 節約する設定で、所要時間はもとの1.5〜2倍になりますが、それでも VRAM 使用量が超過するよりずっと早く 処理を行うことができます。

FP32、FP16 形式の決定

コンピューターは、演算を行うとき浮動小数点計算(FP: Floating Point)を行います。

浮動小数点計算には、次の種類があります。

Table of floating-point arithmetic operations list
  • FP32:高精度・高負荷

  • FP16・BF16:高速・省メモリ

  • FP8:さらに高速、精度が低下

  • FP4:精度が低く、実用性はあまりない

各形式に対応している GPU の一覧は次の通りです。

各浮動小数点形式に対応している GPU の一覧表

GPU ごとの演算形式の決定

ComfyUI では、GPU の型番によって演算の形式は次のように決まります。

ComfyUI's algorithm for determining the GPU's inference format is shown in the following figure

Nvidia の GTX 1000 シリーズ以降は FP16 形式に対応していますが、GTX 1600 シリーズ は FP16 形式の処理が不安定のため FP32 形式で動作します。

AMD Radeon シリーズは ROCm 環境下では FP16 形式で動作しますが、windows での対応は限定的です。

追加確保メモリ(extra_reserved_memory)の設定

ComfyUI では、一定の容量の VRAM を ComfyUI 以外のタスク を行うために確保しています。

その主な用途はモニターへの画像の出力ですが、冒頭で紹介した通りこれを他の GPU に任せている場合は、その分の VRAM を解放することができます。

Algorithm diagram for determining the minimum inference memory for ComfyUI
Screenshot of Reserve VRAM in comfyui startup settings with comment

Stability Matrix では、extra_reserved_memory はデフォルトで 900 MB に設定されていますが、これを --reserve-vram 0 に設定することで全て開放することができます。

Cross Attention Method

Cross Attention Method は、メモリ管理を含めた演算の方法を指定します。

Screenshot of Cross Attention Method in comfyui startup settings with comment
  • --use-quad-cross-attention:データを必ず 4 分割、最も遅い

  • --use-split-cross-attention:データを分割して VRAM を節約、低速

  • --use-pytorch-cross-attention:最も高速

Cross Attention Method で何も選ばない場合、対応する GPU は自動で --use-pytorch-cross-attention が適用されます。

Cross Attention Method は、まずは --use-pytorch-cross-attention を試してみて、Out Of Memory(OOM)エラー が発生した場合は別の方式に切り替えるのが良いでしょう。

ComfyUI のモデルのロードとアンロード

ComfyUI では、次のロジックでモデルのロードとアンロードを行います。

  • 一度ロードしたモデルは VRAM にキープ

  • VRAM が不足する場合、スコアリング に従ってモデルをアンロード

Diagram of ComfyUI's model loading and unloading algorithm

モデルをアンロードする時のスコアリング

  1. モデルの容量

  2. 他の工程で使われるか

  3. 最後にロードされたモデル

ComfyUI は、一度ロードしたモデルは可能な限り VRAM にキープします。

VRAM の容量が不足する場合、スコアリングに応じてモデルをアンロードしますが、その際 いつも最適なモデルがアンロードされるとは限りません

Flux.1 や SD 3.5 などの大容量のモデルを使う場合、ComfyUI-MultiGPU カスタムノードなどを使って明示的にモデルのロード先を指定することで、モデルの移動がスムーズになる場合があります。

テキストエンコーダー、UNET / Transformer、VAE の演算の形式

続いて、テキストエンコーダー・UNET / transformer・VAE の演算の形式を確認します。

ComfuUIでは、それぞれの演算の形式は次のようになっています。

テキストエンコーダ

ComfyUI Text Encoder Inference Format Algorithm Diagram

FP16 形式以外のテキストエンコーダーを使う時は、実際のモデルの形式にあったものを選びます。

RTX 4000 シリーズ以降 を利用している場合、FP8 形式 は処理が高速ですが、その分精度は低下します。

FP8e4m3 形式 は FP8e5m2 形式 と比べて精度が優れています。

以前に何度か紹介ている FP32 形式 のテキストエンコーダー を使用する場合、起動設定の一番下の入力欄に --fp32-text-enc を入力します。

Screenshot of the free input screen of comfyui's startup configuration with comment

UNET / Transformer

Algorithm diagram of ComfyUI's unet transformer inference format

UNET / Transformer は、FP16 / BF16 形式のモデルを自動で判別します。

FP8 形式のモデルを使うときは、起動時の設定もしくはモデルをロードするノードで該当の形式を選びます。

モデルの圧縮形式の違いは、主にイラストの構図力に差に現れます。

VAE

Algorithm diagram of ComfyUI's VAE inference format

VAE は、 BF16 形式に対応している RTX 3000 以降もしくは Apple Silicon で BF16 形式が選択され、それ以外は FP32 形式が選択されます。

FP32 形式と BF16 形式に 画質の違いはほぼ無い ので、基本的にオートの設定で問題ありません。

モデルごとの最小分割容量

最後に、AI モデル ごとの最小分割容量を確認します。

モデルの中で分割できない最も大きいファイルは UNET / Transformer で、私の環境で測定した最小分割容量は次のとおりです。

測定環境

  • RTX 4060 Ti 16GB

  • --normalvram

  • --use-pytorch-cross-attention

測定結果

Chart showing VRAM usage for image generation AI in ComfyUI
  • HiDream(BF16):10.1 GB

  • Flux.1(BF16):10.1 GB

  • SD 3.5 large(FP16 + BF16):10.1 GB

  • AuraFlow(FP16):10.1 GB 

  • SDXL(FP16):4.3 GB

以上から、ComfyUI で適切な起動設定を行うと、HiDream / Flux.1 / SD 3.5 / AuraFlow は VRAM 12GB、SDXL は VRAM 6GB あれば FP16 / BF16 形式で動作することが分かります!

その他の起動オプション

今回ご紹介した以外の起動オプションは、次のページにまとまっています。

まとめ:ComfyUI のベストプラクティス

  • 複数 GPU もしくは 内臓 GPU を使う

  • --reserve-vram を 0 にする

  • --use-pytorch-cross-attention を使う

Stability Matrix を使って ComfyUI をインストールすると、デフォルトでは VRAM を節約する低速なセッティング になっています。

これは、多くのユーザーがトラブルなく使えるようにするために必要な仕様ですが、自分の環境に合わせて再設定することで速度が向上します。

a female animated character with silver hair and blue eyes stands in a grand room with intricate designs surrounded by floating blue crystals wearing a dark blue dress with gold accents

最適な設定を探すときは、一旦すべての VRAM 節約機能を Off にして、Out Of Memoryエラーが発生したら元に戻す 方法が良いと思います。

今回ご紹介した起動設定だけでも、ComfyUI はかなり高速化するので、皆さんもぜひ試してみて下さい。

最後までお読みいただきありがとうございます!


更新履歴

2026.5.25

浮動小数点計算の種類と対応GPUの比較表を更新しました

2025.8.25

内容を一部アップデートしました

2025.5.6

VRAM 使用量の一覧のグラフに HiDream を追加しました

2025.3.27

内容を一部修正しました


English Article


いいなと思ったら応援しよう!

この記事が参加している募集