Nodes/ComfyUI-InstantTensorLoaders/Instant Load ControlNet Model
ComfyUI Node

Instant Load ControlNet Model

Same ControlNet node, one less copy in VRAM

By redstonewhite·Created 4 months ago·Updated 4 months ago· 0
Instant Load ControlNet Model
    • CONTROL_NET
    control_net_name

    ControlNet is how you tell the sampler where things go - edges, depth, pose, structure - and it's one of the most-used loaders in any serious workflow. Instant Load ControlNet Model is the pack's drop-in for ComfyUI's stock ControlNetLoader. One dropdown, one output, wires into your graph exactly where the built-in node does. The only difference is what happens in VRAM while the file loads.

    How it works

    ControlNet loaders in this pack take a slightly different path than the streaming checkpoint/CLIP/VAE nodes. Instead of the per-tensor streaming fast path, the node loads through a generic InstantTensor path: it reads the .safetensors via instanttensor.safe_open, clones each tensor once into CUDA, and forces an in-place load_state_dict(assign=True) while the model is constructed. The point is still the same - the ControlNet is built once, without a second full copy floating around while it loads. You're shaving peak memory, not reimagining what a ControlNet is.

    If you're new to ControlNet and wondering why you'd bother: on a full SDXL pipeline the ControlNet is a real chunk of VRAM that loads on top of an already-heavy graph. Anything that trims the load spike helps when you're near the edge. If you're not near the edge, this is a "nice, it's free" swap rather than a must-have.

    The one input, and the one output

    • control_net_name - dropdown of everything in ComfyUI/models/controlnet. Same list as the built-in node.
    • CONTROL_NET - feed it into a ControlNetApply node alongside your base conditioning. The two knobs that actually matter once it's in the graph are the control weight (0.0–2.0, usually 0.3–1.2 depending on how strictly you want the structure followed) and the start/end control steps, which let you release the condition after composition forms.

    Common issues

    The usual pack caveats apply, and they're worth repeating once: CUDA-only, so a CPU-torch ComfyUI errors out immediately; the instanttensor pip package must be in the environment or you get "The instanttensor package is required for CUDA instant loading"; and only .safetensors files benefit - anything else falls through to the normal ComfyUI loader. Also note that if your workflow's node is actually named "Load ControlNet Model (diff)" and has a MODEL wire into it, you want the other node in this pack - the diff variant, which needs your base model passed in. Plain and diff ControlNets are not interchangeable in that regard.

    And the pack-level truth: this is a brand-new, single-commit pack (May 2026) with no community track record. It works for the memory reason described above, but there's no forum lore if something odd happens. Treat it as a drop-in you can test against the stock node and keep whichever behaves.

    How to install

    ComfyUI Manager → search ComfyUI-InstantTensorLoaders → install, accepting the dependency install (that pulls in instanttensor). Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/redstonewhite/ComfyUI-InstantTensorLoaders
    

    Restart ComfyUI, and you'll find it under loaders/instanttensor. If the dependency didn't land, pip install instanttensor in the environment ComfyUI runs from and restart.

    Categoryloaders/instanttensor

    Inputs (1)

    NameTypeDefaultDescription
    control_net_nameCOMBO0 options:

    Outputs (1)

    NameTypeDescription
    CONTROL_NETCONTROL_NET