--- license: other license_name: qwen-research base_model: - Qwen/Qwen-Image-2.1-Turbo base_model_relation: quantized pipeline_tag: text-to-image library_name: gguf tags: - gguf - qwen - image-generation - comfyui - comfyui-gguf - mlx - fp8 - nvfp4 --- # Qwen-Image-2.1 Turbo Quantized
[![Model Requests](https://img.shields.io/badge/Model_Requests-Submit-f59e0b?logo=huggingface&logoColor=white)](https://abenzerps.com/request-a-model/) [![GitHub](https://img.shields.io/badge/GitHub-Follow-181717?logo=github&logoColor=white)](https://github.com/abenzerps)

Qwen-Image-2.1 benchmark comparison

**The base model, [Qwen-Image-2.1-Turbo](https://huggingface.co/Qwen/Qwen-Image-2.1-Turbo), natively supports uncensored image generation.** No built-in safety checker or content filter is applied, and no special settings are needed. **1024 × 1024 generation takes approximately 10–20 seconds on GPU after warm-up, depending on hardware.** - **Base Model:** [Qwen/Qwen-Image-2.1-Turbo](https://huggingface.co/Qwen/Qwen-Image-2.1-Turbo) · **7B** visual generation architecture - **Turbo Generation:** **8 denoising steps** · upstream default **CFG = 1** - **Available Formats:** **GGUF** · **FP8 / INT8 ConvRot / NVFP4 Safetensors** · **MLX 4-bit / 6-bit / 8-bit** ## Turbo Quantized Files | **Quantization** | **File** | **Size** | | --- | --- | ---: | | FP8 | [**qwen-image-2.1-turbo-fp8.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-fp8.safetensors) | 7.13 GB | | INT8 ConvRot | [**qwen-image-2.1-turbo-int8_convrot.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-int8_convrot.safetensors) | 7.26 GB | | NVFP4 | [**qwen-image-2.1-turbo-NVFP4.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-NVFP4.safetensors) | 4.20 GB | | MLX 4-bit | [**qwen-image-2.1-turbo-MLX-4bit.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-MLX-4bit.safetensors) | 4.00 GB | | MLX 6-bit | [**qwen-image-2.1-turbo-MLX-6bit.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-MLX-6bit.safetensors) | 5.78 GB | | MLX 8-bit | [**qwen-image-2.1-turbo-MLX-8bit.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-MLX-8bit.safetensors) | 7.56 GB | | Q8_0 | [**qwen-image-2.1-turbo-Q8_0.gguf**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-Q8_0.gguf) | 7.59 GB | | Q6_K | [**qwen-image-2.1-turbo-Q6_K.gguf**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-Q6_K.gguf) | 5.88 GB | | Q5_K_M | [**qwen-image-2.1-turbo-Q5_K_M.gguf**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-Q5_K_M.gguf) | 4.94 GB | | Q4_K_M | [**qwen-image-2.1-turbo-Q4_K_M.gguf**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-Q4_K_M.gguf) | 4.05 GB | | Q4_0 | [**qwen-image-2.1-turbo-Q4_0.gguf**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/qwen-image-2.1-turbo-Q4_0.gguf) | 4.05 GB | **Choosing a format:** Start with **Q4_K_M** for GGUF or **INT8 ConvRot** for ComfyUI Safetensors. See **Usage** for runtime instructions and model setup. ## Text Encoders & VAE Companion model files packaged for ComfyUI: | **Type** | **File** | **Precision** | **Size** | | --- | --- | --- | ---: | | Text Encoder | [**text_encoders/qwen3vl_8b_bf16.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/text_encoders/qwen3vl_8b_bf16.safetensors) | BF16 | 17.53 GB | | Text Encoder | [**text_encoders/qwen3vl_8b_int8_convrot.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) | Int8 | 9.35 GB | | VAE | [**vae/qwen_image_2.1_vae_bf16.safetensors**](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) | BF16 | 0.68 GB | ## Usage | I want to use… | Choose… | | :--- | :--- | | **ComfyUI** | **GGUF** or **FP8 / INT8 ConvRot / NVFP4 Safetensors** | | **A command-line runtime** | **GGUF** or supported **Safetensors** with **stable-diffusion.cpp** | | **MLX / MFLUX** | **MLX 4/6/8-bit**; follow the setup below | **Recommended Turbo baseline:** **Euler · CFG 1.0 · 8 steps with the official sigma schedule · 1024 × 1024 · batch 1**. Keep the seed fixed when comparing results. Start with **Q4_K_M** for GGUF or **INT8 ConvRot** for Safetensors.
ComfyUI — GGUF & Safetensors Update [ComfyUI](https://github.com/Comfy-Org/ComfyUI) and open **Qwen Image 2.1 Turbo — Text to Image** in the Template Library ([official workflow JSON](https://github.com/Comfy-Org/workflow_templates/blob/main/templates/image_qwen_image_2_1_turbo_t2i.json)). Use the **Turbo** template to keep its correct sampling schedule. Download **one diffusion model**, the **text encoder**, and the **VAE** from the tables above: | Component | File | Folder inside ComfyUI | | :--- | :--- | :--- | | Diffusion — choose one | `qwen-image-2.1-turbo-Q4_K_M.gguf` **or** `qwen-image-2.1-turbo-int8_convrot.safetensors` | `models/diffusion_models/` | | Text encoder | `qwen3vl_8b_int8_convrot.safetensors` | `models/text_encoders/` | | VAE | `qwen_image_2.1_vae_bf16.safetensors` | `models/vae/` | Restart ComfyUI after adding the files. Open the template's subgraph to access its internal loaders if needed. **Safetensors** 1. In **Load Diffusion Model** (`UNETLoader`), select your Turbo `.safetensors` file and leave `weight_dtype` at **default**. 2. In **Load CLIP**, select the text encoder and set `type: qwen_image`. Select the VAE in **Load VAE**. 3. Enter your prompt and run. Leave optional prompt enhancement off for the initial setup. **GGUF** Install [leejet/ComfyUI-GGUF](https://github.com/leejet/ComfyUI-GGUF) using ComfyUI's Python environment, then restart: ```bash git clone https://github.com/leejet/ComfyUI-GGUF custom_nodes/ComfyUI-GGUF python -m pip install -r custom_nodes/ComfyUI-GGUF/requirements.txt ``` 1. Replace **Load Diffusion Model** with **Unet Loader (GGUF)** and select your `.gguf` file. 2. Reconnect its **MODEL** output to the same downstream input, keeping the template's **Qwen Image 2.1 Cache** and sampler chain. 3. Select the same text encoder and VAE as above, then run. The text encoder still uses the regular **Load CLIP** node with `type: qwen_image`. Keep the cache at **auto / default**. Try **2048 × 2048** for more detail once the initial setup works. It needs more memory and time; model file size is not total VRAM use. If memory is insufficient, reduce resolution or use a smaller GGUF; `--lowvram` is another option. **FP8:** The included file has corrected scaling keys and was tested with the standard ComfyUI loader and stable-diffusion.cpp. Keep `weight_dtype` at **default** in ComfyUI.
Turbo sampling — the exact eight-step schedule Keep **ManualSigmas → SamplerCustomAdvanced** from the official template: ```text 1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0 ``` Nine sigma values define **eight steps**. Setting a regular KSampler to eight steps with `simple` does not reproduce this schedule. At **CFG 1**, negative prompts have no effect. The full Turbo checkpoint needs no additional Turbo or Lightning LoRA.
Command-line usage — GGUF & Safetensors **1. Install the runtime** Use a current [stable-diffusion.cpp release](https://github.com/leejet/stable-diffusion.cpp/releases) for your operating system, or build it from source. The Bash commands below build the NVIDIA CUDA version; install Git, CMake, a C++ compiler, and the CUDA Toolkit first: ```bash git clone --recursive https://github.com/leejet/stable-diffusion.cpp cd stable-diffusion.cpp cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DSD_CUDA=ON cmake --build build --config Release -j ``` On Apple Silicon, replace `-DSD_CUDA=ON` with `-DSD_METAL=ON`. For a CPU-only build, omit that option. **2. Download the three required files** Choose **one Turbo diffusion model**, the text encoder, and the VAE from the tables above. Put them inside the runtime directory: ```text stable-diffusion.cpp/ ├── build/bin/sd-cli └── models/ ├── qwen-image-2.1-turbo-Q4_K_M.gguf ├── qwen3vl_8b_int8_convrot.safetensors └── qwen_image_2.1_vae_bf16.safetensors ``` **3. Generate an image** Run from `stable-diffusion.cpp/`: ```bash ./build/bin/sd-cli \ --diffusion-model models/qwen-image-2.1-turbo-Q4_K_M.gguf \ --llm models/qwen3vl_8b_int8_convrot.safetensors \ --vae models/qwen_image_2.1_vae_bf16.safetensors \ --sigmas qwen-image-2.1-turbo \ --steps 8 --cfg-scale 1.0 --sampling-method euler \ --width 1024 --height 1024 --seed 42 \ --offload-to-cpu \ -p "A natural light portrait photograph" -o output.png ``` The result is saved as **`output.png` in the current directory**. Replace the prompt with your description. On Windows, the built executable is typically `build\bin\Release\sd-cli.exe`; it accepts the same arguments. **4. Switch to Safetensors** Download `qwen-image-2.1-turbo-int8_convrot.safetensors` into `models/` and change only the `--diffusion-model` filename. Keep the text encoder, VAE, and Turbo sampling settings unchanged.
MLX — MFLUX (4 / 6 / 8-bit) Use **MFLUX** with these MLX weights. This is a separate workflow from ComfyUI. The preparation below uses **this repository's selected quantized transformer** and downloads the text encoder, VAE, and configuration files from the official Turbo checkpoint. **1. Install MFLUX** Use Python **3.11 or newer** in a supported MLX environment: **Apple Silicon / macOS 14+**, or **Linux with CUDA 13 support**. Create an environment: ```bash python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install mflux==0.24.0 ``` **2. Prepare the local model once** Set `bits` to **4**, **6**, or **8** below. The first run also downloads the companion components; the MLX file size in the table covers the transformer only. This step arranges the files and adds loader metadata without re-quantizing the weights. ```bash python - <<'PY' import json, shutil from pathlib import Path from huggingface_hub import hf_hub_download, snapshot_download bits = 4 assert bits in (4, 6, 8) root = Path("qwen-turbo-mlx") snapshot_download( "Qwen/Qwen-Image-2.1-Turbo", local_dir=root, allow_patterns=["model_index.json", "processor/**", "scheduler/*.json", "transformer/config.json", "text_encoder/**", "vae/**"], ) source = hf_hub_download( "abenzerps/Qwen-Image-2.1-Turbo-Quantized", f"qwen-image-2.1-turbo-MLX-{bits}bit.safetensors", ) with open(source, "rb") as src: header = json.loads(src.read(int.from_bytes(src.read(8), "little"))) header["__metadata__"] = {**header.get("__metadata__", {}), "quantization_level": str(bits)} raw = json.dumps(header, separators=(",", ":")).encode() raw += b" " * (-len(raw) % 8) target = root / "transformer/model.safetensors" temporary = target.with_suffix(".tmp") with temporary.open("wb") as dst: dst.write(len(raw).to_bytes(8, "little")) dst.write(raw) shutil.copyfileobj(src, dst, 16 * 1024 * 1024) temporary.replace(target) print(f"Ready: {root}") PY ``` **3. Generate an image** ```bash mflux-generate-qwen-2.1 \ --model ./qwen-turbo-mlx \ --base-model qwen-image-2.1-turbo \ --prompt "A natural light photograph of a red ceramic cup" \ --width 1024 --height 1024 --steps 8 --seed 42 \ --low-ram --output output.png ``` The image is saved as **`output.png` in the current directory**. Allow extra time for model loading and compilation before sampling starts. Later runs need only the generation command with the environment activated. Keep the Turbo defaults of **8 steps and guidance 1**. To change precision, repeat preparation with another `bits` value; the generation command stays the same.
## Credits & License - **Original model — [Qwen](https://huggingface.co/Qwen/Qwen-Image-2.1-Turbo):** Developed Qwen-Image-2.1-Turbo and released the original model weights. - **Companion models — [Comfy-Org](https://huggingface.co/Comfy-Org/Qwen-Image-2.1):** Provided the ComfyUI-ready text encoder and VAE files. - **ComfyUI workflow — [ComfyUI](https://github.com/Comfy-Org/ComfyUI) & [ComfyUI-GGUF](https://github.com/leejet/ComfyUI-GGUF):** The node-based generation interface and GGUF model loader used in this guide. - **Command-line generation & GGUF tools — [stable-diffusion.cpp](https://github.com/leejet/stable-diffusion.cpp):** Tools for model conversion, GGUF quantization, and standalone image generation. - **MLX generation — [MFLUX](https://github.com/mflux-community/mflux):** The MLX inference implementation used to load and run the 4/6/8-bit files in this guide. - **Quantization support — [comfy-kitchen](https://github.com/Comfy-Org/comfy-kitchen):** Quantization tools and ComfyUI’s FP8/NVFP4 backend. - **Model license — [Qwen Research License](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/LICENSE)** **File integrity:** [SHA256SUMS](https://huggingface.co/abenzerps/Qwen-Image-2.1-Turbo-Quantized/blob/main/SHA256SUMS)