Nodes/ComfyUI_DeleteModelPassthrough/Controlled Load Diffusion Model
ComfyUI Node

Controlled Load Diffusion Model

Load your diffusion model on command, and pick fp8 while you're at it

By Isi-dev·Created about a year ago·Updated 8 months ago· 5
Controlled Load Diffusion Model
  • trigger
  • MODEL
unet_name
weight_dtype

"Controlled Load Diffusion Model" is the stock UNET loader wearing a leash. It wraps ComfyUI's built-in UNETLoader and adds a trigger input: connect the trigger and the model loads, outputting a MODEL; leave it empty and the load is skipped, returning None. Same gate as the pack's other Controlled nodes, but pointed at the thing that eats the most VRAM in your whole workflow.

The diffusion model is usually the last heavy object into memory and the one that tips you over the edge. If your text encoder and VAE are already resident and the UNet is what makes it OOM, gating when the load happens - or skipping it entirely in a branch you don't need - is a genuinely useful lever. The wrapper delegates straight to UNETLoader.load_unet(), so what you get out is a normal MODEL output for the sampler, nothing exotic.

The inputs that matter

  • unet_name - the model file picker, listing your diffusion models from models/unet (or diffusion_models).
  • weight_dtype - how the weights are held in memory. The options are default, fp8_e4m3fn, fp8_e4m3fn_fast, and fp8_e5m2. This is the interesting part: on a compatible GPU, fp8 roughly halves the model's memory footprint versus fp16 with barely any visible quality cost - that's often the difference between fitting on 12GB and not. e4m3fn is the standard fp8; e4m3fn_fast trades a bit of safety for speed; e5m2 is the older, slightly less precise variant.
  • trigger - the gate. Any type, checked only for None.

The honest read

Two things to know before you adopt it. First, the None output: if the trigger isn't fired, whatever you connected to the MODEL output will choke on a None. Treat it as a skip switch, not a scheduler. Second, this node only defers or skips the load - it does nothing to reclaim memory after the model is done. For that you pair it with the pack's Delete Model (Passthrough Any) node, which is the actual memory-management half of the equation. In practice, a decent chunk of the value here is just the fp8 weight_dtype choices, which you can get from ComfyUI's own UNETLoader on recent versions - the trigger is the differentiator.

Install is the usual: ComfyUI Manager, search "DeleteModelPassthrough", or clone it into custom_nodes, pip install -r requirements.txt (just torch and psutil), restart. No model downloads - this is all plumbing, and the pack itself is a self-described WIP from a small author, so check the console output when things misbehave. If the real problem is a card that's simply too small, remember GGUF quantized UNets (via city96's ComfyUI-GGUF) move the needle far more than gating the fp16 loader.

CategoryMemory Management

Inputs (3)

NameTypeDefaultDescription
unet_nameCOMBO0 options:
weight_dtypeCOMBO4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2
trigger*

Outputs (1)

NameTypeDescription
MODELMODEL