Nodes/ComfyUI-TkNodes/Multi-Model Loader
ComfyUI Node

Multi-Model Loader

UNET, dual CLIP, VAE and an optional LoRA from one node

By TensorKaze·Created about a year ago·Updated about a year ago· 0
Multi-Model Loader
    • MODEL
    • CLIP
    • VAE
    unet_name
    weight_dtype
    clip_name1
    clip_name2
    clip_type
    clip_device
    vae_name
    lora_name
    strength_model1.00
    strength_clip1.00
    bypass_lorafalse

    Loading a model like Flux the "correct" way in ComfyUI usually means four separate nodes: a UNET loader, a dual-CLIP loader, a VAE loader, and a LoRA loader chained after all three. Multi-Model Loader is that whole chain collapsed into one node - set the four model names, the weight dtype, the CLIP type, and optionally a LoRA with its own strengths, and you get a ready-to-sample model, CLIP, and VAE out. It's the same instinct behind ComfyUI's well-known "Efficiency Nodes" pack: fewer boxes, less wire spaghetti, especially in workflows you rebuild often.

    One thing worth knowing up front, because the README frames this pack around Flux: this loader isn't Flux-only. The clip_type dropdown covers SDXL, SD3, Flux, Hunyuan Video and HiDream, so it's a general dual-CLIP-architecture loader that happens to live in a Flux-heavy node pack, not a Flux-specific tool.

    What matters

    The required list is long because it's doing the job of four nodes, but only a handful of these you'll actually think about each time:

    • unet_name, clip_name1, clip_name2, vae_name - your model files, pulled from whatever's installed. clip_type needs to match what the model architecture actually expects (Flux wants CLIP-L + T5-XXL, for instance) - set it wrong and loading either fails outright or produces garbage.
    • weight_dtype - default, fp8_e4m3fn, fp8_e4m3fn_fast, or fp8_e5m2. This is the precision the diffusion weights load at. fp8 roughly halves VRAM against full precision with very little visible quality loss, and native fp8 compute on 40-series cards (the _fast variant) keeps speed consistent even with a LoRA loaded - unlike GGUF quantization, which can slow down noticeably once you stack a LoRA on top.
    • lora_name - pick none to skip loading a LoRA entirely (fastest, no extra VRAM). Pick an actual file and it loads and applies automatically.
    • strength_model / strength_clip (default 1, range −100 to 100) - how hard the LoRA pulls. There's no universal safe number here; what counts as "normal" strength varies a lot by base architecture (older SDXL-era advice hovers around 0.5–0.8, while some newer architectures run LoRAs at 1.0 or higher without issue), so check what the LoRA's own page recommends rather than assuming a default is right.
    • bypass_lora - turns LoRA application off without unloading it. This is the one to reach for when A/B-testing with and without a LoRA: flipping lora_name to none and back forces a reload every time, while bypass_lora just toggles application on an already-loaded LoRA, which is much faster to flip back and forth.
    • clip_device - default or cpu, for offloading CLIP off the GPU if you're VRAM-constrained.

    Three outputs: MODEL, CLIP, VAE - wire straight into your conditioning and sampler as usual.

    Installing it

    Search ComfyUI-TkNodes in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/TensorKaze/ComfyUI-TkNodes
    cd ComfyUI-TkNodes
    pip install -r requirements.txt
    

    Restart ComfyUI. No dependencies specific to this node, but obviously you need the actual model files - UNET, both CLIP encoders, VAE, and any LoRA you want - already downloaded into their usual ComfyUI model folders. This node doesn't fetch anything; it only loads what's already on disk.

    Common issues

    Dropdowns are empty. Same story as any ComfyUI loader - the enum lists are populated from your local model folders. If unet_name or a CLIP dropdown is empty, you haven't got a file in the right directory yet.

    Wrong output, or a load error. Almost always a clip_type mismatch. If you loaded a Flux UNET but left clip_type on sdxl, you'll get an error or nonsense output - match the type to the architecture you're actually loading.

    LoRA seems to do nothing. Check bypass_lora isn't accidentally left on, and that lora_name isn't set to none. Also worth remembering GGUF-quantized checkpoints (not what weight_dtype here covers, but relevant if you're chaining a GGUF loader elsewhere) apply LoRAs slower because each layer has to be dequantized, patched, and requantized - that's a general Flux/GGUF quirk, not something this node introduces.

    No real community footprint on this pack - it's a small personal toolkit, not something with a following. But this particular node is a solid, honest labor-saver: it's four loaders' worth of setup you'd otherwise rebuild in every workflow, in one place.

    Categoryloaders

    Inputs (11)

    NameTypeDefaultDescription
    unet_nameCOMBOThe name of the diffusion model (UNET) to load.
    weight_dtypeCOMBOThe weight dtype for the diffusion model.
    clip_name1COMBOThe name of the first CLIP text encoder to load.
    clip_name2COMBOThe name of the second CLIP text encoder to load.
    clip_typeCOMBOThe type of CLIP configuration (e.g., flux: clip-l, t5).
    clip_deviceCOMBODevice for loading CLIP models.
    vae_nameCOMBOThe name of the VAE model to load.
    lora_nameCOMBOThe name of the LoRA to load (select 'none' to skip loading).
    strength_modelFLOAT1.00-100–100Strength of the LoRA applied to the diffusion model.
    strength_clipFLOAT1.00-100–100Strength of the LoRA applied to the CLIP model.
    bypass_loraBOOLEANfalseBypass LoRA application to MODEL and CLIP if yes, but keep it loaded.

    Outputs (3)

    NameTypeDescription
    MODELMODELThe diffusion model (modified by LoRA if loaded and not bypassed).
    CLIPCLIPThe CLIP model (modified by LoRA if loaded and not bypassed).
    VAEVAEThe VAE model used for encoding/decoding latents.