Downloads · 30 days
0
yunfengwang/Qwen-Image-2.1-MNN-int8
Qwen-Image-2.1-MNN-int8 is a text-to-image model from yunfengwang. Use it when you need an image from a text prompt. It is set up for mnn. The card lists the license as other.
Qwen-Image-2.1 converted to MNN with weight-only int8 quantization — 21.4 GB instead of the fp16 set's 30.7 GB, for on-device text-to-image inference with no torch, no diffusers and no 33 GB checkpoint. The text encod…
Downloads · 30 days
0
Access
Public
Updated Sep 23, 2026
Repo size
21.4 GB
Likes
0
Public
Click a slice to open those files.
.weight20.1 GB · 94%
From the Hugging Face model README
Qwen-Image-2.1 converted to MNN with weight-only int8 quantization — 21.4 GB instead of the fp16 set's 30.7 GB, for on-device text-to-image inference with no torch, no diffusers and no 33 GB checkpoint. The text encoder and the DiT are int8 (block 32, HQQ), the VAE stays fp32.
Run it with the qwen-image-mnn CLI (downloads into ~/.cache/qwen-image-mnn/int8 on first
use, then renders offline):
uvx qwen-image-mnn "a red panda riding a bicycle" --quant int8 --steps 40 --out panda.png
| file | size | precision |
|---|---|---|
dit.mnn + dit.mnn.weight | 8.90 GB | int8 |
text_encoder.mnn + text_encoder.mnn.weight | 11.18 GB | int8 |
vae_decoder.mnn | 1.0 GB | fp32 |
vae_encoder.mnn | 0.31 GB | fp32 |
tokenizer.json, vae_config.json | 11 MB | — |
manifest.json | — | per-file sha256 |
Quantized with mnnconvert --weightQuantBits 8 --weightQuantBlock 32 --hqq from the same fp32
ONNX graphs the fp16 set was converted from. The text encoder shrinks less than the DiT — 26% of
its bytes against 37% — so part of it stays in fp16.
Measured against the fp16 set and against the released pipeline, on the same inputs:
| check | int8 | fp16 (for scale) |
|---|---|---|
| DiT, one forward at T=1120, max rel | 2.5e-2 | — (baseline) |
| text encoder, mean abs drift / max abs value | 4.8e-4 | 8.5e-5 |
| pipeline, 8 steps @512 px, latent drift step 1 → step 8 | 1.4e-3 → 2.4e-2 | 4.9e-3 → 2.9e-2 |
| pipeline, image PSNR vs the reference render | 52.0 dB | 43.6 dB |
Both quantized and fp16 numbers sit inside the model's own dtype noise: the released model compared against itself (fp16 vs bf16, same seed and latents) drifts up to 2.0e-1, so a 2.4e-2 latent drift at int8 is not a distinguishable difference — the images are visually identical.
Weight-only quantization buys disk and RAM, not step time. The weights are dequantized as they are paged in, so both precisions run the same multiply-accumulates; measured warm on the same machine (minimum of repeated calls in one process), one DiT step at 512 px (T=1039) takes 10.4 s at int8 against 10.1 s at fp16, and the text encoder is flat too (0.38 s against 0.39 s for a 28-token prompt). All of it lands inside run-to-run noise, so this set is a size choice — 21.4 GB instead of 30.7 GB — and not a speed one. First-call figures, the 40-step render at 1024 px and the per-process shape-planning overhead are in the package README.
precision=high: the verified path.libMNN.dylib, so this needs an upstream release anyway.A format conversion of Qwen-Image-2.1 and carries its license: Qwen Research License — research use.