Krea2 SVDQuant Quantize All-in-One
Bake DiT + text encoder + VAE into one 12 GB Krea 2 checkpoint
- summary
The short version
The modular Krea 2 setup is three files scattered across three folders: the DiT in diffusion_models/, the Qwen3-VL text encoder in text_encoders/, and the VAE in vae/ - about 15.5 GB in total. This node bakes all three into one combined checkpoint (~12 GB) in models/checkpoints/, and it quantizes the text encoder while it's at it. Result: one file, one loader, one-click generation. If you've used the Krea2 SVDQuant Quantize node, this is the sequel that also handles the other two components.
Run workflows/krea2_quantize_all_in_one.json in ComfyUI to do it in the graph, or tools/build_all_in_one.py from a terminal - same underlying logic. The output loads with the Krea2 SVDQuant Checkpoint Loader, which hands you model, clip, and VAE from one node.
The inputs that matter
- source_dit - the Krea 2 DiT. Either a BF16 source (~24 GB, which gets quantized first) or an already-quantized SVDQuant/W4A4/INT8 file. The low-rank branch inputs (
rank,refine_iters,act_stats,seed) only apply if you feed it BF16. - text_encoder - the Qwen3-VL 4B BF16 safetensors (~8.88 GB). Its 252 linear projections get quantized to
te_format, shrinking it to ~3.2 GB while the vision tower and embeddings stay untouched. - vae - the Krea 2 VAE (~0.51 GB, kept unquantized).
- format - the diffusion model format, same choices as the plain Quantize node:
svdq(default, 4-bit + low-rank branch),w4a4,int8,fp8. - te_format - text encoder format:
w4a4(convrot_w4a4, ~3.2 GB) orint8(~5.2 GB).
The rest - variant (turbo/base/unknown, mostly affects the output filename), output_name, overwrite - behave the same as the plain Quantize node. output_name defaults to something derived from variant and format, so you can usually leave it empty.
Output is a single summary string: size, tensor counts, and loader instructions for the baked file.
How to install
cd ComfyUI/custom_nodes && git clone https://github.com/alperktt/Krea-2-SVDQuant-ComfyUI krea-2-svdquant
No Python dependencies - the tooling in this pack is pure Python and builds on ComfyUI's own comfy_kitchen backend. From the terminal, the equivalent is:
cd ComfyUI/custom_nodes/krea-2-svdquant
python tools/build_all_in_one.py \
--dit models/diffusion_models/Krea2-Turbo-SVDQuant-W4A4-rank64.safetensors \
--text-encoder models/text_encoders/qwen3vl_4b_bf16.safetensors \
--vae models/vae/Krea2-HD-vae.safetensors \
--te-format w4a4 --variant turbo
The writer streams, so it never holds the combined 12+ GB in memory at once.
Gotchas
- Budget the time. Quantizing the DiT from BF16 means the same 54s–6min conversion the plain Quantize node takes, and the text encoder pass on top. This node blocks the queue and takes the GPU while it runs.
- The cu130 gate applies to everything here. If your torch was built against CUDA < 13, ComfyUI disables the
comfy_kitchenCUDA backend and the baked checkpoint will run on a slow fallback. Checkpython -c "import torch; print(torch.version.cuda)"before you burn a build on it. - Re-saving a baked checkpoint logs "left over keys in diffusion model" in the stock loader. Expected: the
svdq_l1/svdq_l2keys are what let the file round-trip into this pack's loader, and stockUNETLoaderjust doesn't know them. Harmless.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| source_dit | COMBO | The Krea 2 DiT model: either a BF16 source (~24 GB, will be quantized first) or an already-quantized SVDQuant/W4A4/INT8 file. | |
| text_encoder | COMBO | The Qwen3-VL 4B BF16 text encoder safetensors (~8.88 GB). Its 252 linear projections will be quantized to te_format, reducing it to ~3.2 GB without losing the vision tower. | |
| vae | COMBO | The Krea 2 VAE (~0.51 GB, kept unquantized). | |
| format | COMBO | svdq | Diffusion model format. svdq: 4-bit weights and activations plus a low-rank bf16 correction branch. |
| te_format | COMBO | w4a4 | Text encoder format: w4a4 (convrot_w4a4, ~3.2 GB) or int8 (int8_tensorwise, ~5.2 GB). |
| rank | INT | 648–1024 | svdq only: size of the low-rank branch on the diffusion model. |
| refine_iters | INT | 1000–200 | svdq only (if source_dit is BF16). Refines the branch against quantization error. Ignored if source_dit is already quantized. |
| groupsize | INT | 25632–1024 | convrot rotation group size. |
| variant | COMBO | turbo | Which Krea 2 release this is. |
| output_name | STRING | Filename in models/checkpoints/. Leave empty to derive automatically. | |
| overwrite | BOOLEAN | false | Allow overwriting existing output checkpoint. |
| act_statsopt | STRING | svdq only (if source_dit is BF16): activation statistics file. | |
| seedopt | INT | 0-1–4294967295 | Random seed for reproducible SVD. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| summary | STRING | Size, tensor counts and loader instructions for the baked checkpoint. |