Qwen3 4B ZIT - INT8 ConvRot
INT8 ConvRot quantization of Qwen3 4B tailored for Z-Image/Z-Image Turbo text conditioning in ComfyUI. The 8.04 GB BF16 checkpoint is reduced to approximately 4.62 GB.
Conversion
- Tool: silveroxides/convert_to_quant
- Format: INT8 row-wise with embedded ConvRot metadata
- ConvRot group size: 256
- Method: learned rounding (AdaRound) with low-memory streaming conversion
- Quantized: 238 matrices across 34 transformer blocks (~3.43B parameters, or 85.3% of matrix parameters)
The token embedding and transformer blocks 0 and 34 remain BF16. Norms and biases also remain at their original precision.
Why this is Z-Image-specific
ComfyUI configures the Z-Image Qwen3 4B encoder with layer_idx=-2. For its 36-block transformer, this selects the hidden state produced immediately after block 34 rather than the final output from block 35.
Block 34 therefore remains BF16 because it directly produces Z-Image's conditioning representation. Block 0 is retained as a conservative input-boundary precaution. Block 35 is quantized because its output is not consumed by the Z-Image conditioning path.
This selection is tailored to Z-Image/Z-Image Turbo and is not intended as a general-purpose Qwen3 language-model quantization recipe.
Command
ctq -i <input-model>.safetensors -o qwen_3_4b_zit_int8_convrot.safetensors `
--int8 --scaling_mode row `
--convrot --convrot-group-size 256 `
--comfy_quant --save-quant-metadata `
--low-memory --device cuda `
--exclude-layers '(^model\.embed_tokens\.weight$|^model\.layers\.(0|34)\.)' `
--verbose NORMAL
Quantization is lossy, so outputs are not bit-identical to the original BF16 checkpoint.