Nodes/PG Nodes/Unified Loader
ComfyUI Node

Unified Loader

Every model in one node, with a VRAM escape hatch

By GizmoR13·Created 11 months ago·Updated 11 months ago· 16
Unified Loader
    • MODEL
    • CLIP
    • VAE
    • CLIP_VISION
    • CONTROLNET
    • IPADAPTER
    • UPSCALE_MODEL
    device_cpufalse
    checkpointnone
    diffusionnone
    vaenone
    clip_1none
    clip_2none
    clip_3none
    clip_4none
    clip_visionnone
    controlnetnone
    ipadapternone
    upscalenone
    _
    diffusion_typedefault
    clip_typeauto

    ComfyUI's stock loaders are one-model-per-node: a checkpoint loader here, a CLIP loader there, a separate ControlNet loader, an IPAdapter loader, an upscale model loader... A busy workflow ends up with five or six loading nodes sprawled across the canvas before you've drawn a single image. PgUnifiedLoader collapses that into one node that loads everything - checkpoint, diffusion UNet, VAE, up to four CLIP files, CLIP-Vision, ControlNet, IP-Adapter, and an upscale model - and hands you a single output bundle.

    The headline feature is the device_cpu toggle. Flip it and the loader attempts to offload the non-sampling parts of the stack (the CLIP encoders, the VAE, ControlNet, the upscale model - the pieces that aren't the denoising engine) onto CPU, freeing VRAM for the actual sampler. The README is honest about this being best-effort: not everything can be moved off-GPU on every setup, but when it works, it's the difference between OOM-ing and squeezing out a bigger resolution or a higher-res upscale pass on a 6GB card.

    How it works

    Every selector defaults to none, and the node only loads what you actually set - this is a build-your-own-stack loader, not a "load all four clip slots" machine. Internally it uses ComfyUI's standard loading paths (load_checkpoint, load_unet with your chosen diffusion_type, load_vae with TAESD shortcuts like taesd/taef1, load_clip, load_clip_vision, load_controlnet, load_ipadapter, load_upscale_model), so files are read from the same model folders you already populate. Each sub-load is wrapped in its own try/except - one bad file prints an error and the rest of your stack still loads.

    The two type dropdowns matter more than they look: diffusion_type picks the weight dtype for UNet loads (default, or the fp8_e4m3fn/fp8_e4m3fn_fast/fp8_e5m2 quantized variants - FP8 is the usual "fits at lower VRAM" choice for new models), and clip_type defaults to auto, which picks the right CLIP architecture per family (SD 1.x, SDXL, SD3, Flux, Qwen, and the rest). Leave both alone until you hit a real constraint.

    Inputs and outputs

    • device_cpu - the offload toggle. Start with it off; switch on when the sampler is OOMing.
    • checkpointMODEL/CLIP/VAE; diffusionMODEL; vaeVAE; clip_1clip_4CLIP (for dual/triple text encoders); clip_visionCLIP_VISION; controlnetCONTROLNET; ipadapterIPADAPTER; upscaleUPSCALE_MODEL.
    • The _ dropdown is a UI divider, marked inactive - ignore it.

    The seven outputs (MODEL, CLIP, VAE, CLIP_VISION, CONTROLNET, IPADAPTER, UPSCALE_MODEL) are what make this one node replace a row of loaders.

    Install

    Part of PG Nodes: ComfyUI Manager → "PG Nodes" → install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/GizmoR13/PG-Nodes
    

    No model downloads - it reads your existing model folders.

    Common issues

    The dropdowns are populated at startup, so a freshly downloaded model won't appear until you restart ComfyUI. If device_cpu seems to change nothing, that's the best-effort reality - check which piece is actually eating VRAM with a monitor rather than assuming the toggle worked. And the classic: picking both a checkpoint and a diffusion in one graph means whichever loads second overwrites MODEL; pick one path per graph.

    CategoryPG

    Inputs (15)

    NameTypeDefaultDescription
    device_cpuBOOLEANfalse
    checkpointCOMBOnone1 options: none
    diffusionCOMBOnone1 options: none
    vaeCOMBOnone1 options: none
    clip_1COMBOnone1 options: none
    clip_2COMBOnone1 options: none
    clip_3COMBOnone1 options: none
    clip_4COMBOnone1 options: none
    clip_visionCOMBOnone1 options: none
    controlnetCOMBOnone1 options: none
    ipadapterCOMBOnone1 options: none
    upscaleCOMBOnone1 options: none
    _COMBOUI divider — inactive
    diffusion_typeCOMBOdefault4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2
    clip_typeCOMBOauto16 options: auto, SD 1.x/2.x, SDXL, SD3, Stable Cascade, FLUX, +10

    Outputs (7)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE
    CLIP_VISIONCLIP_VISION
    CONTROLNETCONTROL_NET
    IPADAPTERIPADAPTER
    UPSCALE_MODELUPSCALE_MODEL