Krea2 SVDQuant Capture Start
Teach the quantizer where your Krea 2 actually spends its activations
- model
- model
- status
The short version
This is half of a two-node calibration rig. Krea2 SVDQuant Capture Start goes between your model loader and the KSampler; it installs hooks on all 224 quantized linears and records the RMS of each one's inputs while you sample. Krea2 SVDQuant Capture Save (downstream of the KSampler) writes those statistics to a file. Feed that file to the Krea2 SVDQuant Quantize node's act_stats input, and your low-rank branch gets fitted against measured per-channel activation energy instead of assuming every input channel is equally important.
Why bother? The default quantization objective treats all input channels as carrying the same activation energy. They don't - a channel the model drives hard deserves more of the branch's capacity than one that's usually near zero. The pack measured this as its largest single fidelity gain (LPIPS to BF16 drops from 0.3378 to 0.2825), and it costs nothing at inference: same shapes, same format, same kernels, only different values inside the branch.
The inputs that matter
- model - your Krea 2 model, BF16 ideally. Statistics taken from a quantized model describe the quantized model's activations, which is the thing being corrected - but for a calibration pass you want the clean BF16 signal. Wire this output to the KSampler.
- reset - default
true. Clears anything gathered so far. Leave it off to accumulate across several prompts, which is the entire point of calibrating - you want a handful of prompts in one file, not one.
Outputs: model (wire it to your KSampler) and status (a string reporting how many layers are being watched - expect 224 if it found the right model).
How to install
cd ComfyUI/custom_nodes && git clone https://github.com/alperktt/Krea-2-SVDQuant-ComfyUI krea-2-svdquant
No Python dependencies. Use workflows/krea2_quantize_calibrated.json if you want the capture and quantize wired together in one queue press - the wire from Capture Save's act_stats_path into the Quantize node is also what guarantees calibration runs first.
How to use it
- Put Capture Start between the loader and the KSampler,
reset=true. - Put Capture Save after the KSampler, wired to its
LATENToutput (that's what forces it to run after denoising). - Leave
keep_capturingon for every prompt but the last, so several prompts accumulate into one file underComfyUI/output/. - Use prompts that are not the ones you plan to judge the checkpoint with.
- Pass the file to the Quantize node's
act_stats(or--act-statsin the CLI).
One rule the README is emphatic about: you only need to capture your own statistics for weights the stock files don't describe - a finetune, a merge, anything that isn't the released checkpoint. The pack ships pre-made krea2_act_stats_turbo.safetensors / base calibration files (6.67 MB from the calibration/ folder on Hugging Face). Sharing an architecture isn't enough: Turbo's file loads into a base build without complaint and then describes the wrong model. If your weights are stock, just use the pre-made file. If they're not, this node is how you measure.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The BF16 model, ideally. Statistics taken from a quantized model describe the quantized model's activations, which is the thing being corrected. | |
| reset | BOOLEAN | true | Clear anything gathered so far. Leave it off to accumulate across several prompts, which is the point of calibrating. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Wire this to the KSampler. |
| status | STRING | How many layers are being watched. |