Eric Qwen-Image ControlNet Unload
The ControlNet cleanup node that takes no inputs at all
Eric Qwen-Image ControlNet Unload is the smallest node in this pack and possibly the easiest to misunderstand: it takes no inputs and returns no outputs. Drop it anywhere in the graph and run, and it clears the cached ControlNet model out of VRAM. That's the whole thing.
Why does a node with zero wires exist? Because the ControlNet Loader caches its model (keep_in_vram defaults True), and the cache is process-global - it lives in the pack's module state, not in any wire. The source confirms the mechanics: the unload node calls clear_controlnet_cache(), and if nothing was loaded it just prints "ControlNet was not loaded" to the console. There's no pipeline reference and no pass-through, because the ControlNet is a shared singleton, not a per-workflow object.
How you actually use it
ComfyUI's execution model means a node with no inputs will run every time you queue the graph (there's nothing to invalidate its cache). So the pattern is:
- Load ControlNet with Eric Qwen-Image ControlNet Loader.
- Run UltraGen CN / Harmonize (which consume it).
- This node fires on the next queue and evicts the model, so your VRAM goes back to the Qwen-Image pipeline alone.
The honest use case: you're switching between ControlNet-guided generation and regular generation in the same session, or bouncing between this pack and another model set. The 2.3 GB Union ControlNet sitting in VRAM is exactly the kind of resident weight that OOMs an unrelated run. Toss this node into the graph and forget about it.
The one real caveat
Because it's an output node that always runs and has no data dependencies, ordering is up to ComfyUI's queue - it evicts the ControlNet on the next queue, not "after the CN node in this same queue." If you queue a graph that uses the ControlNet again right after, the loader just reloads it (that's the cost, a re-download from disk/cache, not a re-download from the internet - first run aside). If you want it to run at a specific point, the ControlNet Loader's keep_in_vram toggle is the more precise tool: set it False and the model is freed between runs automatically, no unload node needed. The unload node is for the "I changed my mind, free it now" case.
This is also worth knowing for anyone who pokes around the pack's source: the loader's IS_CHANGED returns float("NaN") while the cache is empty, which forces it to (re)load on demand - so a ControlNet that "disappears" after an unload node runs is behaving as designed, not broken.
Install: ComfyUI Manager search "Eric Qwen Edit", or git clone https://github.com/EricRollei/Eric_Qwen_Edit_Experiments into custom_nodes/ and restart. Nothing to download - the node itself has no weights; it just says goodbye to the ones the loader brought in.
Inputs (0)
No inputs
Outputs (0)
No outputs