Nodes/OmniNodes/GGUF VAE Loader πŸ—οΈ
ComfyUI Node

GGUF VAE Loader πŸ—οΈ

The niche-of-a-niche node (and when it's actually the answer)

By TensorVizionΒ·Created 3 months agoΒ·Updated about 8 hours agoΒ· 0
GGUF VAE Loader πŸ—οΈ
    • vae
    • summary
    β—„gguf_nameβ–Ύβ–Ί
    β—„weight_dtypefp32β–Ί
    β—„path_overrideβ–Ί

    Honest opening: you will probably almost never need this node, and its own author basically says so. VAE weights are small - a few hundred MB at most, versus the gigabytes a diffusion model or text encoder eats - so GGUF release packages almost always ship the VAE as plain safetensors and only bother quantizing the big components. That's why a typical "Flux GGUF" download is a quantized diffusion model, a quantized T5 text encoder, and a normal vae safetensors sitting next to them.

    GGUF VAEs in the wild are rare enough that this node exists mostly for two reasons: the occasional fully-GGUF-packaged model set where someone quantized everything including the VAE, and symmetry - so that a model distributed entirely in .gguf form doesn't need two different loading philosophies inside one pack. The README says as much, in so many words: "included for symmetry."

    So when would you actually reach for it? Exactly one scenario, really: you've got a .gguf VAE file on disk - maybe it came bundled inside a fully-quantized package, or you downloaded the only copy of a niche model someone published and the VAE happened to be GGUF - and you don't want to go hunting for a matching safetensors version. This node opens it and gives you a normal VAE output that plugs into VAEDecode/VAEEncode exactly like any other VAE in ComfyUI.

    How it works

    Same pattern as the other GGUF loaders in OmniNodes: the file is read with the gguf package's GGUFReader, every tensor is dequantized, and the resulting plain state dict is handed to comfy.sd.VAE to build a standard VAE object. One difference worth noting: the default weight_dtype here is fp32, not fp16. ComfyUI's VAE decode path is more precision-sensitive than UNet or CLIP inference, so the author keeps it at full precision unless you specifically choose fp16.

    Inputs and outputs

    • gguf_name - dropdown of .gguf files under vae, vae_gguf, and checkpoints. Empty? Use path_override with an absolute path to the file.
    • weight_dtype - fp32 (default) or fp16. Leave it on fp32 unless you're chasing every last bit of memory and accept the precision trade.

    Outputs: vae (wire into VAEDecode) and summary (file loaded, tensors dequantized, dtype).

    Installing

    It's one of six GGUF nodes inside OmniNodes, TensorVizion's all-purpose ComfyUI pack. The GGUF category is the newest part of the pack, and it's the only part needing an extra dependency:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/TensorVizion/OmniNodes
    cd OmniNodes && pip install -r requirements.txt   # adds gguf
    

    Restart ComfyUI, then find it under TensorVizion/GGUF in the search menu. Manager users can install the pack by searching "OmniNodes", but the pip install gguf step still applies - it's not bundled with ComfyUI, and every GGUF node returns a clear "install gguf" error rather than crashing if it's missing.

    Troubleshooting

    The one failure mode that actually bites: comfy.sd.VAE rejects the dequantized state dict, which the node reports as "tensor key names don't match a VAE architecture ComfyUI recognizes." That means the file probably isn't a VAE at all, or it's a VAE architecture your ComfyUI version doesn't know. Run GGUFFile Info on the file first to confirm what you're holding - it's read-only and free - before assuming the loader is broken. If everything checks out, remember the file dropdown only sees folders ComfyUI registers; path_override is the escape hatch for files living anywhere else.

    CategoryTensorVizion/GGUF

    Inputs (3)

    NameTypeDefaultDescription
    gguf_nameCOMBO1 options: <none found in model folders β€” use path_override>
    weight_dtypeCOMBOfp322 options: fp32, fp16
    path_overrideoptSTRINGβ€”

    Outputs (2)

    NameTypeDescription
    vaeVAEβ€”
    summarySTRINGβ€”