Extensions/ComfyUI Force Cleanup
ComfyUI Extension

ComfyUI Force Cleanup

Schedule native ComfyUI model and execution-cache cleanup after a prompt.

By 3289004205·Created 20 days ago·Updated 20 days ago· 1
3289004205/ComfyUI-Force-Cleanup
Nodes
On cloudLocal install
Stars1
Updated20 days ago
Readme

ComfyUI Force Cleanup

一个无第三方依赖的 ComfyUI 内存清理节点。它不会在工作流尚未结束时贸然清理,而是通知 ComfyUI 在当前 prompt 完成后调用其原生清理流程。

安装

  1. 解压后得到 ComfyUI-Force-Cleanup 文件夹。
  2. 把整个文件夹放到:
    • Windows 便携版:ComfyUI_windows_portable\ComfyUI\custom_nodes\
    • 手动安装版:ComfyUI\custom_nodes\
  3. 完全重启 ComfyUI。
  4. 在节点菜单中搜索 Force Cleanup After Prompt,分类为 utils/memory

无需运行 pip install

使用

把节点放进工作流即可,不需要连线。它是 Output Node,因此每次排队都会执行;清理动作会等整条工作流结束后再发生。

  • full: models + execution cache + allocator
    • 卸载 ComfyUI 已加载模型。
    • 清空当前执行器的工作流/节点输出缓存。
    • 运行 Python 垃圾回收。
    • 清理 CUDA、XPU、MPS 等设备的 PyTorch allocator 缓存。
    • 释放最彻底;下一次运行需要重新加载模型和重新计算。
  • models: unload models + allocator
    • 卸载模型并清 allocator。
    • 保留可复用的执行缓存,速度较好,但主内存下降可能不如完整模式明显。

推荐先使用 full

为什么普通 empty_cache() 经常没效果

torch.cuda.empty_cache() 只能把 PyTorch allocator 中“已经没有对象引用”的保留块交还给驱动。只要 ComfyUI 的模型列表、节点输出缓存或第三方节点仍持有 Tensor/模型,显存就不会真正释放。本插件的完整模式还会让 ComfyUI 重置 executor cache,因此比单独调用 empty_cache() 更完整。

Windows 任务管理器显示的 GPU 数字可能包含驱动上下文、共享 GPU 内存和不可回收的 CUDA context;进程存活时一般不会归零。判断是否清理成功,应比较清理前后稳定值,而不是要求显示为 0。

仍然过高时

  1. 更新 ComfyUI 和所有自定义节点。
  2. 暂时禁用其他 custom_nodes,逐个恢复,以定位持有全局模型/Tensor 引用的扩展。
  3. 启动参数尝试 --lowvram;显存特别小时尝试 --novram,代价是速度下降。
  4. 如果主要涨的是系统 RAM,检查超大图片/视频节点、预览帧、批量大小以及第三方节点自己的缓存目录或内存缓存。
  5. 只有关闭 ComfyUI 进程才能释放 CUDA context 及进程仍持有的全部内存;插件无法安全地让一个仍运行的 Python 进程“绝对归零”。

兼容性

节点使用 ComfyUI 的公开运行时队列行为,不直接操作内部缓存容器。已按 2026-07-29 的 ComfyUI master 接口检查。