ComfyUI Node
Krea2 SVDQuant Quantize
Builds a quantized Krea 2 checkpoint from a BF16 one, without leaving ComfyUI. BLOCKS THE QUEUE while it runs (54s to ~6min), unloads any loaded model to free the GPU, and writes ~8 GB. Load the result with the Krea2 SVDQuant W4A4 Loader (svdq) or the stock UNETLoader (w4a4/int8/fp8).
Krea2 SVDQuant Quantize
- summary
◄source_model▾►
◄formatsvdq►
◄rank64►
◄rank_allocuniform►
◄refine_iters100►
◄groupsize256►
◄variantunknown►
◄output_name►
◄overwritefalse►
◄act_stats►
◄seed0►
CategoryKrea2/SVDQuant
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| source_model | COMBO | The BF16 Krea 2 checkpoint to quantize (~24 GB). An already-quantized file cannot be used as a source, except FP8, which is unpacked back to BF16 first. | |
| format | COMBO | svdq | svdq: 4-bit weights and activations plus a low-rank bf16 correction branch. w4a4: the same without the branch - smaller and ~9%% faster per step. int8: the most faithful option and still ~2x fp8 on Ampere. fp8: storage only. |
| rank | INT | 648–1024 | svdq only: size of the low-rank branch. Only pays off with refine_iters > 0. Without a LoRA, 64 / 128 / 256 measure the same, so 64 is enough. With a LoRA loaded, 256 wins clearly and 64 loses most of its advantage - so 256 if you use LoRAs. |
| rank_alloc | COMBO | uniform | svdq only: how the rank budget is spread across the eight projection types. Same file size either way. uniform gives every layer the same rank. gqa moves the budget to attn.wk / attn.wv, which absorb ~2x the quantization error at a third of the branch cost because Krea 2 has only 12 kv heads. Measured and it does not pay: LPIPS 0.3523 vs 0.3403 for uniform, 5 of 10 prompts better, no mean effect. It does halve the spread across prompts and improve the worst one. Leave on uniform unless you are re-testing that. |
| refine_iters | INT | 1000–200 | svdq only. 0 is a single-shot SVD split (~54s); 100 refines the branch against the quantization error and early-stops (~5.7min). Keep this on if rank > 16: refinement is what makes rank behave. Without it, raising rank costs file size and buys nothing measurable. |
| groupsize | INT | 25632–1024 | convrot rotation group size. Unused for fp8. |
| variant | COMBO | unknown | Which Krea 2 release this is. Affects only the output filename and the recorded metadata - quantization is identical; what differs is the sampler settings afterwards. |
| output_name | STRING | Filename inside models/diffusion_models/. Leave empty to derive it from the variant and format. | |
| overwrite | BOOLEAN | false | Off means an existing file of the same name is an error rather than 8 GB written over your last run. |
| act_statsopt | STRING | svdq only: an activation-statistics file from the Capture nodes (a bare filename is looked up in ComfyUI/output/). Fits the low-rank branch against measured per-channel activation energy instead of assuming it is uniform. Free at inference and the best-measured setting here - LPIPS to BF16 0.3378 to 0.2825 with no LoRA. Empty means the plain objective. | |
| seedopt | INT | 0-1–4294967295 | svdq only: seed for the randomized low-rank SVD. Quantizing twice with the same seed on the same GPU now gives identical files; -1 restores the old unseeded behaviour, where it did not. The same seed on a different device still differs (~1e-4 per weight) - CPU and CUDA do not draw the same numbers. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| summary | STRING | Where the checkpoint was written, and what went into it. |