Load Diffusion Model INT4 (W4A4)
The INT4 (W4A4) loader that makes it fit
- pre_lora
- MODEL
This is the node that got people on 6GB RTX 3060s running Krea 2 Turbo at 1024x1024, in about 17 seconds a generation. That's the pitch, and it's not marketing: the author demoed it on a 6GB card in the July 2026 launch thread. If a model you want is sitting in diffusion_models but refuses to fit, this loader is a real answer - not a GGUF Q3 fallback, but native 4-bit weight and 4-bit activation (W4A4) compute.
It's a drop-in replacement for the standard Load Diffusion Model node. Same job, one MODEL output you wire into your sampler exactly as usual. The difference is what happens on load: every layer gets squeezed to 4-bit, with a Hadamard rotation (ConvRot) applied first so the quantization error doesn't concentrate in the outliers that ruin output quality. The matmuls then run on GPU Tensor Cores at 4-bit speed. It's the INT4 cousin of the INT8-ConvRot support that went native in ComfyUI around June 2026, built on BobJohnson24's ComfyUI-INT8-Fast.
The part that actually matters: mixed precision
Quantizing everything to 4-bit produces ugly results, because some layers - patch projections, embedders, the first and last blocks - are hypersensitive. So model_type isn't decoration. It tells the loader which layer names to leave out of INT4, and those stay in INT8 on Triton execution paths instead. For krea2, for instance, that's the first/last/tmlp/tproj/txtfusion/txtmlp weights. Set it to your architecture or you'll get either dimension errors or noticeably worse output.
The inputs you'll actually touch
- unet_name - pick your
.safetensorsfromdiffusion_models. Pre-quantized files just work; the pack is verified againstkrea2_turbo_convrot_int4_fast.safetensorsfrom comfyanonymous'sint4_testsrepo. - on_the_fly_quantization - the author's tooltip is the rule: check it to quantize a higher precision model (BF16/FP16) to INT4 on load, and leave it unchecked if the model is already INT4. Feed it an FP8 checkpoint and you can get static noise - that's a fixed bug, not a feature.
- model_type - only used for on-the-fly quantization, to filter those sensitive layers. Set it to whatever architecture you loaded.
- lora_mode -
Nonebakes LoRA patches in with normal rounding,Stochasticbakes with stochastic rounding (nicer for quantized bases),Dynamicapplies LoRAs at inference time. Start atNone. - enable_convrot - the Hadamard rotation. Default
true. Leave it on. - weight_dtype - compute dtype;
defaultfollows the model. Only touch if you're chasing something specific.
Install
ComfyUI Manager (search "ComfyUI-INT4-Fast"), or:
cd ComfyUI/custom_nodes/
git clone https://github.com/viralvfx/ComfyUI-INT4-Fast.git
Then restart. Two hard requirements: ComfyUI updated to the latest version, and comfy-kitchen installed - it provides the QuantizedTensor execution layouts this whole pack runs on. No pip deps of its own, but kitchen is a hard one.
Where people get burned
- First generation is slow. The loader compiles custom Triton operators on first run; the author measured a long init on the very first generation, then fast subsequent ones. Don't panic and uninstall.
- Don't on-the-fly quantize an FP8 file. The pack's own commit log fixed a "static noise bug by dequantizing FP8 weights before INT4 quantization." Quantize from BF16/FP16.
- "Why not just native ComfyUI?" - a fair question in the launch thread. Native merged comfy-kitchen support, but it hides the settings. This node's case is the exposed controls (convrot, groupsize, LoRA modes) plus on-the-fly quantization and the Save Int4 Model node, if you want the full quantization toolkit rather than just a loader.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | 0 options: | |
| weight_dtype | COMBO | Compute dtype. Default follows the model dtype. | |
| model_type | COMBO | Only used for on the fly quantization, to filter sensitive layers. | |
| on_the_fly_quantization | BOOLEAN | false | Quantize a higher precision model to INT4. If the selected model is already INT4 keep unchecked. |
| enable_convrot | BOOLEAN | true | Enable ConvRot for better quantization. |
| lora_mode | COMBO | None | None bakes LoRA patches with normal rounding which is the default behavior. Stochastic bakes with stochastic rounding. Dynamic applies LoRA at inference time. |
| pre_loraopt | PRE_LORA | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |