Load FP4 or NF4 Quantized Diffusion or UNET Model
Run a bitsandbytes-quantized Flux UNET on its own
- MODEL
This is the modular sibling of CheckpointLoaderNF4. Instead of a bundled checkpoint with CLIP and VAE baked in, it loads just the UNET - an NF4 or FP4 bitsandbytes-quantized diffusion model, on its own. You bring your own CLIP and VAE separately, which sounds like more setup but is actually the whole point: it lets you mix and match, quantizing each piece to whatever fits your card instead of accepting one fixed bundle.
Why you'd reach for it over the checkpoint version
If CheckpointLoaderNF4 is the convenient all-in-one, this node is for when you want control. The pack's own README calls out the move explicitly: some people get a real speedup loading the UNET as NF4 through this node while loading the T5-XXL text encoder separately as GGUF, via city96's ComfyUI-GGUF pack. That combination - small quantized UNET, independently quantized encoder - is a pattern that shows up across the whole quantization landscape (fp8 and GGUF loaders split the same way), and this node is what lets an NF4 UNET participate in it instead of being locked into whatever CLIP a bundled checkpoint shipped with.
Worth saying plainly, because the pack's own maintainer says it first: the README opens with a struck-through note calling this approach "very likely deprecated in favor of GGUF which seems to give better results." NF4 is the roughest of the mainstream Flux quantization options on quality - rougher than fp8, rougher than GGUF's mid-to-high tiers. What it still has going for it is size and simplicity: it's a proven, Forge-lineage format that runs on genuinely low VRAM, reportedly down to a GTX 970 at a few minutes per 512x768 image. If you're VRAM-constrained enough that GGUF's smaller quants don't help either, NF4 is a real option, just not the first one to reach for anymore.
How it works
Same underlying mechanism as the checkpoint loader: bitsandbytes NF4 packs each weight into 4 bits using a distribution shaped for how model weights are actually distributed, rather than a flat linear scale. This node reads that packed UNET file back out into a working MODEL. The implementation is adapted from lllyasviel's Forge code, so behavior should match what NF4 users already know from that ecosystem.
The inputs and output that matter
Two required inputs:
unet_name- a dropdown of the UNET-only files in yourmodels/unetfolder (ormodels/diffusion_models, depending on your ComfyUI version). This should be an NF4- or FP4-quantized Flux UNET, not a full checkpoint.bnb_dtype-default,nf4, orfp4. No tooltip spells out the internals, butdefaultis the safe choice for anything downloaded pre-quantized, which is everything linked from this pack's own README.
The single output is MODEL - nothing else. You'll still need a DualCLIPLoader (or GGUF/quantized equivalent) for your text encoders and a separate VAE loader; this node doesn't provide either.
Installing it
Same install as its sibling node, because they live in the same pack. It's on ComfyUI Manager, but you need to switch the Manager channel to dev first or the search won't surface it. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI_bnb_nf4_fp4_Loaders
Restart ComfyUI, and make sure bitsandbytes is installed (pip install bitsandbytes) in the same environment. Keep ComfyUI itself reasonably up to date - the README calls this out directly. For a model file, the README points to silveroxides' flux1-nf4-unet on HuggingFace, or you can search CivitAI's Flux base models filtered for "NF4." Drop it in models/unet.
Common issues
The one that catches people most: loading an NF4-quantized UNET through the regular UNETLoader node instead of this one. You'll get a cascade of size mismatch errors, one per layer, because the packed 4-bit weights don't match the shapes the stock loader expects - that error is a strong signal you need this node specifically, not a sign anything's actually broken. Past that, remember this node hands back a bare MODEL with no CLIP or VAE riding along - if your graph errors out looking for a text encoder or VAE that "should have been there," that's the checkpoint-loader habit talking; wire them in separately here.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| bnb_dtype | COMBO | default | 3 options: default, nf4, fp4 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |