Files
2025-10-02 10:13:00 +09:00
..
2025-10-02 10:13:00 +09:00

u5_FreeVRAM - ComfyUI 内存管理节点

这是一个面向 ComfyUI 的高级内存管理与 VRAM 优化自定义节点。 市面上的释放内存节点总是无法稳定工作,所以重新做了一个。

日本語 | English

📋 目录


概览

u5_FreeVRAM 用于优化 ComfyUI 工作流中的内存管理,帮助你在有限 VRAM 下运行复杂流程。

简单来说,可以在流程任意位置释放或重新加载 VRAM。


主要场景

  • 复杂工作流:在单个工作流中依次运行多种模型(例如 线稿 → 上色)
  • 批处理:阻止长时间运行时的内存泄漏
  • SaaS 环境:在共享 GPU 中清理缓存

功能

这个自定义节点提供两大功能模块。

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 输入控制执行顺序

安装

  1. 将仓库 clone 到 custom_nodes 目录中即可。 git clone "https://github.com/u5dev/comfyUI_u5_VramFREE.git"

  2. 重启 ComfyUI。


基本用法

所有节点会出现在节点菜单的 u5 分类下。

FREE VRAM 节点

把节点插入到工作流的任意位置即可清理内存。

使用方法: alt text

# 作为中继节点
[任意节点] → [FREE VRAM] → [下一个节点]

参数:

  • Any(输入,选填):任意类型透传输入
    • 未连接也能工作:可放在流程起点
    • 连接时:将输入原样传给输出
  • MinFreeVRAMGB(选填):当空闲 VRAM 高于该值时跳过(默认 0.0)
    ※VRAM 释放是异步的,数值仅供参考。

输出:

  • Bypass(Relay):透传输入(无输入时返回 None)

Sequential Loaders

Sequential Loader 节点包含 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]

要点:

  • 在流程开始后立即放置 FREE VRAM
  • 将 MinFreeVRAMGB 设为 0.0 强制清理
  • 利用 Sequential Loader 保证执行顺序

2. 低 VRAM(≤8 GB)运行多模型

使用场景:两段式 SDXL image2image

alt text

第一段用较轻参数生成草图(img2img 预览)。
第二段先通过 FreeVRAM 释放内存,再按顺序加载 Checkpoint → LoRA → VAE 生成成品。

要点: 共用:正/负面提示词各自编码一次,供两个采样器复用。

第一段:输入图像 → 调整为 1024x1024 → VAE Encode → KSampler(草稿)   ↓ 第二段:将 latent 作为 FreeVRAM 之后的 trigger 继续传递   ↓ Sequential Checkpoint Loader(成品模型)   ↓ Sequential LoRA Loader(叠加多个 LoRA)   ↓ KSampler(※通过 Bypass 将 latent 引入采样器)   ↓ Sequential VAE Loader(成品 VAE)   ↓ VAE Decode   ↓ 保存图片

※第一段用于试种子,第二段依次加载 LoRA 与不同 VAE,并借助 Free VRAM 控制内存压力。


参数参考

FREE VRAM 节点

参数 类型 必填 默认值 说明
Any ANY ✗(选填) None 任意类型透传输入,未连接时也可运行
MinFreeVRAMGB FLOAT ✗(选填) 0.0 当空闲 VRAM 高于该阈值时跳过(单位:GB)

输出:

  • Bypass(Relay):原样返回输入(无输入时为 None)

Sequential Checkpoint Loader

参数 类型 默认值 说明
ckpt_name COMBO - 检查点文件名
trigger ANY None 控制执行顺序的可选触发输入

输出:

  • MODEL, CLIP, VAE, Bypass(Relay)

Sequential CLIP Loader

参数 类型 默认值 说明
clip_name COMBO - CLIP 文件名(.safetensors)
type COMBO stable_diffusion CLIP 类型(stable_diffusion、qwen_image 等)
trigger ANY None 控制执行顺序的可选触发输入

输出:

  • CLIP, Bypass(Relay)

支持的 CLIP 类型:

  • stable_diffusion (SD 1.x/2.x)
  • stable_cascade (Stable Cascade)
  • sdxl (SDXL)
  • sd3 (SD3)
  • flux (Flux)
  • qwen_image (Qwen2-VL)
  • 等等

Sequential VAE Loader

参数 类型 默认值 说明
vae_name COMBO - VAE 文件名(.safetensors/.pt)或 TAESD 变体
trigger ANY None 控制执行顺序的可选触发输入

输出:

  • VAE, Bypass(Relay)

支持的 VAE:

  • 常规 safetensors VAE
  • TAESD 变体:taesd、taesdxl、taesd3、taef1

Sequential LoRA Loader

参数 类型 默认值 说明
model MODEL - 输入 MODEL
clip CLIP - 输入 CLIP
lora_name COMBO - LoRA 文件名
strength_model FLOAT 1.0 对模型的应用强度
strength_clip FLOAT 1.0 对 CLIP 的应用强度
trigger ANY None 控制执行顺序的可选触发输入

输出:

  • MODEL, CLIP, Bypass(Relay)

运行环境

必须

  • ComfyUI:建议使用最新版
  • Python:3.8 及以上
  • PyTorch:ComfyUI 随附版本
  • GPU:推荐使用支持 CUDA 的 GPU(CPU 模式亦可)

可选

  • psutil 5.8.0+:提供更详细的系统内存信息
    pip install psutil
    

推荐

  • VRAM:至少能够在 ComfyUI 中运行一个 KSampler
  • RAM:同上
  • OS:任何可运行 ComfyUI 的操作系统

故障排查

无法释放内存

原因与对策:

  1. MinFreeVRAMGB 设置过高

    • 使用 nvidia-smi 查看当前空闲 VRAM
    • 试着将 MinFreeVRAMGB=0.0 强制清理
  2. 其他进程占用 GPU

    • 检查是否有其它 ComfyUI 实例
    • 关闭浏览器硬件加速
    • 结束占用 GPU 的程序
  3. ComfyUI 执行缓存残留

    • 在 ComfyUI Manager 中使用 "Free model and cache"
    • 重启 ComfyUI

Sequential Loaders 无法运行

原因与对策:

  1. 忘记连接 trigger

    • 确认所有 trigger 输入/输出均已连接
    • 任意一个缺口都会破坏执行顺序
  2. import 错误

    • 查看控制台日志
    • 重启 ComfyUI
    • 重新安装自定义节点
  3. 找不到模型文件

    • 确认模型文件已放在正确目录

重要日志信息(ComfyUI 控制台):

  • [FreeVRAM] Sequential Loaders loaded successfully - 加载成功
  • VRAM FREE (u5): Cleared: Models, Cache, GC | Freed: X.XX GB - 清理成功

许可证

详见 LICENSE。


致谢

本项目使用了以下技术:


版本:1.0.0
最后更新:2025-09-30
作者:u5dev