Nodes/ComfyUI_DeleteModelPassthrough/Controlled UNet Loader (GGUF)
ComfyUI Node

Controlled UNet Loader (GGUF)

Load a GGUF diffusion model on command — and skip it when you don't want it

By Isi-dev·Created about a year ago·Updated 8 months ago· 5
Controlled UNet Loader (GGUF)
  • trigger
  • MODEL

GGUF is how most people actually run Flux-class models on a normal GPU. It's llama.cpp's quantized weight format, brought to diffusion by city96's ComfyUI-GGUF pack two weeks after Flux shipped - because a 12B model at fp16 simply doesn't fit on a 12GB card. The Q ladder is the whole trick: Q8 is basically fp16 at half the size, Q4_K_M is the accepted compromise when VRAM is tight. The one thing those loaders don't give you is control over when the model gets pulled into memory. That's the gap this node fills.

Controlled UNet Loader (GGUF) is a wrapper around city96's UnetLoaderGGUF that bolts a single trigger input onto it. Feed the trigger a value and the node loads your quantized model and hands you a MODEL output, ready for the sampler. Leave the trigger disconnected (or feed it a None) and the node prints "loading paused" and returns a None instead - no load, no VRAM spent. Same idea as the pack's Controlled Load Diffusion Model, but for GGUF files.

The mechanism, and the honest caveats

In the source this is a thin shim: it grabs the original GGUF loader's input types, injects the trigger, and forwards the call straight to UnetLoaderGGUF.load_unet(). The catch is buried in the import at the top of the pack:

try:
    from custom_nodes.ComfyUI_GGUF.nodes import UnetLoaderGGUF
    GGUF_AVAILABLE = True
except ImportError:
    GGUF_AVAILABLE = False

If city96's ComfyUI-GGUF isn't installed, this node is a brick - it can't even show its normal file picker, and it prints a warning at startup. So the dependency chain is: install this pack and ComfyUI-GGUF. When the dependency is present, the node surfaces the usual GGUF loader options - the file dropdown for your .gguf checkpoint and the weight-dtype settings - plus the trigger. The only guaranteed output is MODEL, which wires into the same KSampler / model-patching inputs as any other model loader.

The other caveat is the None output. If your trigger isn't fired, this node outputs None, and most downstream nodes will not thank you for a None where a MODEL belongs. This is a "skip the load entirely" switch, not a "load it later" switch - use it in workflows where the GGUF model is optional (an alternative model path, an A/B setup), or where you explicitly don't want it resident. For actually deleting a loaded model afterwards, pair it with the pack's Delete Model nodes.

Install and notes

cd ComfyUI/custom_nodes
git clone https://github.com/Isi-dev/ComfyUI_DeleteModelPassthrough
git clone https://github.com/city96/ComfyUI-GGUF

Then restart ComfyUI. ComfyUI Manager can do both - search "DeleteModelPassthrough" and "ComfyUI-GGUF". The GGUF files themselves you get from HuggingFace (city96 and bullerwins host conversions of most popular models) into ComfyUI/models/unet (or diffusion_models on newer versions). One rule of thumb worth internalizing while you're here: pick the highest Q that fits. If Q8 fits in your VRAM, just use it - the speed behavior is counterintuitive, but Q8 often runs faster than the lower quants because 4/8-bit levels get hardware dot-product support while lower levels pay a dequantization penalty.

CategoryMemory Management

Inputs (1)

NameTypeDefaultDescription
trigger*

Outputs (1)

NameTypeDescription
MODELMODEL