Nodes/Krea-2-SVDQuant-ComfyUI/Krea2 SVDQuant Quantize
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).

By alperktt·Created about a month ago·Updated 5 days ago· 11
Krea2 SVDQuant Quantize
    • summary
    source_model
    formatsvdq
    rank64
    rank_allocuniform
    refine_iters100
    groupsize256
    variantunknown
    output_name
    overwritefalse
    act_stats
    seed0
    CategoryKrea2/SVDQuant

    Inputs (11)

    NameTypeDefaultDescription
    source_modelCOMBOThe 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.
    formatCOMBOsvdqsvdq: 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.
    rankINT648–1024svdq 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_allocCOMBOuniformsvdq 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_itersINT1000–200svdq 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.
    groupsizeINT25632–1024convrot rotation group size. Unused for fp8.
    variantCOMBOunknownWhich 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_nameSTRINGFilename inside models/diffusion_models/. Leave empty to derive it from the variant and format.
    overwriteBOOLEANfalseOff means an existing file of the same name is an error rather than 8 GB written over your last run.
    act_statsoptSTRINGsvdq 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.
    seedoptINT0-1–4294967295svdq 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)

    NameTypeDescription
    summarySTRINGWhere the checkpoint was written, and what went into it.