Downloads · 30 days
0
JoaoZaokk/Qwen3-VL-4B-W4A8-ConvRot
Qwen3-VL-4B-W4A8-ConvRot is a machine learning model from JoaoZaokk. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for comfyui. The card lists the license as apache-2.0.
The text encoder of the Krea 2 pipeline in ComfyUI (qwen3vl4b, Comfy-Org's single-file repack of Qwen3-VL-4B-Instruct), re-encoded into ComfyUI's native per-layer quantization formats. After the Krea 2 DiT drops to 7.…
Downloads · 30 days
0
Access
Public
Updated Sep 14, 2026
Repo size
7.1 GB
Likes
2
Public
Click a slice to open those files.
.safetensors7.1 GB · 100%
From the Hugging Face model README
The text encoder of the Krea 2 pipeline in ComfyUI (qwen3vl_4b, Comfy-Org's single-file
repack of Qwen3-VL-4B-Instruct), re-encoded into ComfyUI's native per-layer quantization formats.
After the Krea 2 DiT drops to 7.5 GiB, this 8.27 GiB encoder is the largest file in the chain —
which is why it was the next thing measured.
| file | GiB | layers | format | verdict |
|---|---|---|---|---|
qwen3vl_4b_w4a8.safetensors | 3.41 | 252 × asym_w4a8_int8 (group 16, convrot_groupsize 256) | take this one | |
qwen3vl_4b_w4a4_convrot.safetensors | 3.19 | 252 × convrot_w4a4 (convrot_groupsize 256) | measured, 2.5x less faithful, published as the comparison |
Source: qwen3vl_4b_bf16.safetensors, 8,875,719,384 B. The 252 layers are exactly 36 decoder
blocks × 7 Linears (model.language_model.layers.N.{q,k,v,o}_proj, {gate,up,down}_proj); the
vision tower, embeddings, norms and lm_head are preserved byte-for-byte. Backend recorded in the
sidecars: comfy_kitchen.backends.cuda. Method, tools and the full log:
https://github.com/JoaoZaokk/comfy-quant-bench (bench/krea2_suite.md, section 8).
Conditioning error (relative RMSE of the encoder's output against the BF16 encoder on the same prompt) and encode time, median of 5 encodes per cell, each arm in its own process, RTX 3090. Two prompt lengths, because the answer depends on it.
| encoder | GiB | 76 tokens: rel-RMSE / ms | 1220 tokens: rel-RMSE / ms |
|---|---|---|---|
qwen3vl_4b_bf16 (reference) | 8.27 | — / 96.4 | — / ~702 |
qwen3vl_4b_w4a8, quantized math | 3.41 | 0.1438 / 87.2 | 0.5839 / 258.0 |
qwen3vl_4b_w4a8, dequantized math (stock ComfyUI) | 3.41 | 0.1438 / 182.3 | 0.5848 / 787.2 |
qwen3vl_4b_w4a4_convrot, quantized math | 3.19 | 0.5016 / 77.2 | 0.7393 / 215.5 |
qwen3vl_4b_w4a4_convrot, dequantized math | 3.19 | 0.3637 / 97.2 | 0.7017 / 712.2 |
comfy/sd.py forces float32 compute on every CLIP object and
comfy/sd1_clip.py hardcodes full_precision_mm=True), so on stock ComfyUI these files save
memory and not time — the "dequantized math" rows above are what you get. The method repo
carries the patch that releases both locks only for checkpoints that really carry quantized
layers (patches/comfyui_text_encoder_quantized_math.patch, opt-out flag
--disable-quantized-text-encoder); a non-quantized encoder is untouched by it (control arm:
0 quantized layers, force_cast_weights True in both arms).CLIPLoader (or the Krea 2 template's loader) with clip_type for Krea 2, pointing at the file in
ComfyUI/models/text_encoders/. Needs the converter's qwen3vl profile lineage only at conversion
time; at load time ComfyUI reads the per-layer metadata itself. Krea 2 chain measured end to end
with this encoder in bench/krea2_suite.md.