comfyUI_u5_VramFREE
Advanced memory management and VRAM optimization custom node for ComfyUI.
Paketprofil
- Status
- Überprüft
- Verleger
- @u5dev
- Quelle
- GitHub
README
u5_FreeVRAM - ComfyUI Memory Management Node
ComfyUI向けの高度なメモリ管理・VRAM最適化カスタムノードです。 既存のメモリ開放系のカスタムノードがどうにもうまく動かないので、改めて作りました。
English | 中文
📋 目次
概要
u5_FreeVRAMは、ComfyUIワークフローにおけるメモリ管理を最適化し、限られたVRAMで複雑なワークフローを実現するためのカスタムノードパッケージです。
要するに、ワークフローの途中で任意にVRAMを開放したり、読み替えたりできるようにします。
主な用途
- 複雑なワークフロー: 1ワークフロー内で複数種のモデルを順次実行(線画化→着色等)
- バッチ処理: メモリリークの防止
- SaaS環境: 共有GPU環境でのキャッシュクリア
機能
このcustom nodeには、主に2種類の機能があります。
1. FREE VRAM ノード
VRAMメモリのクリーンアップを提供します。
クリーンアップ処理:
- モデルアンロード: ロード済みモデルをメモリから解放
- GPUキャッシュクリア: CUDAキャッシュを空にしてVRAMを回復
- 実行キャッシュクリア: ComfyUIの実行キャッシュをクリア
- ガベージコレクション: Pythonの未使用オブジェクトを回収
スマート実行:
- 閾値スキップ: 指定した空きVRAMがある場合は処理をスキップ
- 非同期待機: 最適なメモリ解放タイミングを自動検出
2. Sequential Loaders
モデルの順次ロードを実現し、VRAM使用量を最適化します。
通常、モデル等のローダーは入力ソケットを持たず、ワークフローのど頭で並列実行されますが、 ワークフローの途中で差し込めるようにしました。
利用可能なローダー:
- Sequential Checkpoint Loader: チェックポイントファイルの順次ロード
- Sequential LoRA Loader: LoRAファイルの順次ロード
- Sequential CLIP Loader: CLIPモデルの順次ロード(safetensors、全CLIPタイプ対応)
- Sequential VAE Loader: VAEモデルの順次ロード(safetensors、TAESD対応) ※GGUF形式には対応していません(無理でした)
特徴:
- ComfyUI標準機能のみ使用(外部依存なし)
trigger入力による実行順序の制御
インストール
- gitを
custom_nodeフォルダにCloneしてください。
git clone "https://github.com/u5dev/comfyUI_u5_VramFREE.git"
- ComfyUIを再起動してください。
基本的な使い方
ノードメニューのu5カテゴリにノードが表示されます。
FREE VRAM ノード
ワークフローの任意の位置に挿入してメモリをクリアします。
使用方法: alt text
# 中継ノードとして
[任意のノード] → [FREE VRAM] → [次のノード]
パラメータ:
- Any (入力・オプション): 任意のデータ型を受け取るパススルー入力
- 未接続でも動作: ワークフローの開始ノードとして配置可能
- 接続時: 入力データをそのまま出力に中継
- MinFreeVRAMGB (オプション): この値以上の空きVRAMがある場合はスキップ(デフォルト: 0.0) ※メモリの開放状況は非同期のラグがあるため、厳密ではありません。
出力:
- Bypass(Relay): 入力データを中継(入力がない場合はNone)
Sequential Loaders
Sequential Loadersはtrigger入力を持ち、前のノードの完了を待ってからロードを開始します。
triggerに来たものは、そのままBypass(Relay)出力ソケットに渡されます。
使い方は、下記のワークフロー例を参考にしてください。
ベストプラクティス
1. SaaS環境でのキャッシュクリア
ユースケース: 共有GPU環境で、前のユーザーのキャッシュを確実にクリアする
alt text
[Start Workflow]
↓
[FREE VRAM (MinFreeVRAMGB=0.0)] ← 強制的にクリーンアップ
↓ trigger
[Sequential Checkpoint Loader] ← 解放後に読み込み
↓ (MODEL, CLIP, VAE)
[CLIP Text Encode (Prompt)]
↓ (CONDITIONING)
[KSampler]
↓ (LATENT)
[VAE Decode]
↓ (IMAGE)
[Save Image]
ポイント:
- ワークフロー開始直後にFreeVRAMを配置
MinFreeVRAMGB=0.0で常にクリーンアップを強制- Sequential Loaderを使用して順序を保証
2. 低VRAM環境での複数モデル実行(8GB以下)
ユースケース: image2imageを2PassのSDXLで実行
alt text
1st Pass は下絵(img2imgの下地)を軽設定で生成してプレビュー。
2nd Pass は FreeVRAM のゲートを通してメモリを確保してから、
Checkpoint → LoRA → VAE を順次読み込み、本番設定で生成・保存。
ポイント: 共通:positive/negativeテキスト→CLIPエンコードし、両パスのサンプラーへ。
1st Pass:i2i用画像→1024x1024化→VAEエンコード→Kサンプラー(下絵生成) ↓ 2nd Pass:latent(潜在)をFreeVRAM以降のトリガーに繋いで引き回す ↓ Sequential Checkpoint Loader(清書用) ↓ Sequential LoRA Loader(複数LoRA適用) ↓ Kサンプラー(※latentをバイパスしてきて、Kサンプラーまで引き込む) ↓ Sequential VAE Loader(清書用VAE) ↓ VAEデコード ↓ 画像を保存
※1stは当たり出し、2ndでLoRAと別VAEを順次ロードして仕上げ、メモリ圧をFree VRAMで制御します。
パラメータリファレンス
FREE VRAM ノード
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| Any | ANY | ✗ (オプション) | None | パススルー入力(任意のデータ型)、未接続でも動作 |
| MinFreeVRAMGB | FLOAT | ✗ (オプション) | 0.0 | この値以上の空きVRAMがある場合はスキップ(GB) |
出力:
- Bypass(Relay): 入力データをそのまま出力(入力なしの場合はNone)
v1.1での変更点:
- Any入力がオプションになり、開始ノードとして使用可能
Sequential Checkpoint Loader
| パラメータ | 型 | デフ
Knoten in diesem Paket
5 Knoten (Plural)
Knoten in diesem Paket
5 Knoten (Plural)- SequentialCheckpointLoader
- SequentialCLIPLoaderSimple
- SequentialLoRALoader
- SequentialVAELoaderSimple
- VRAMFree
Verwandte Ressourcen
1 Verbindung
Verwandte Ressourcen
1 VerbindungQuellen
3 Quellen
Quellen
3 QuellenVerifiziert 14. Okt.
Verifiziert 14. Okt.
Quellenauszüge
1 Auszug
Quellenauszüge
1 AuszugSource context: Repo u5dev/comfyUI_u5_VramFREE
