Qwen-Image-2.1-Turbo MLX

MLX builds of Qwen-Image-2.1-Turbo, made by Moonbox for Apple Silicon Macs. Each precision is a folder; keep a folder's files together. Only the parts listed below are converted: the rest of the pipeline comes from the original repository unless the section below says otherwise.

Files

The last column is how far each build is from the original PyTorch model on the same inputs (see the section below for what was measured).

Precision File Size sha256 Checked against the original
bf16 bf16/mflux_model.json 0.4 kB bab8116c0c46 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/model_index.json 0.6 kB 97e2febeb19d below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/processor/chat_template.jinja 5.3 kB 3636d0f0bd6b below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/processor/preprocessor_config.json 0.5 kB f64372eb108d below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/processor/tokenizer.json 11.4 MB be75606093db below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/processor/tokenizer_config.json 0.7 kB 15d9c5ecb9cf below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/scheduler/scheduler_config.json 0.5 kB 16c948c71f91 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/0.safetensors 2.10 GB d6b2e39d67e9 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/1.safetensors 2.13 GB 566bb0c5c791 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/2.safetensors 2.11 GB 2c023804b78c below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/3.safetensors 2.13 GB cf0d08f00b5a below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/4.safetensors 2.11 GB d081b0258f6f below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/5.safetensors 2.13 GB 864e19b55d0c below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/6.safetensors 2.11 GB fcdee6f773eb below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/7.safetensors 1.45 GB b8442e3a7f3c below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/8.safetensors 1.24 GB 0f1f3ae3241d below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/config.json 1.5 kB b45aff957d1f below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/text_encoder/model.safetensors.index.json 49.2 kB 8b96c9c9fbbe below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/0.safetensors 2.12 GB 1c5670ca2851 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/1.safetensors 2.11 GB 2a5647eb050d below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/2.safetensors 2.11 GB a667914417b2 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/3.safetensors 2.08 GB bc786014cdb6 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/4.safetensors 2.08 GB 85872a17f73d below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/5.safetensors 2.08 GB 4c1513f88363 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/6.safetensors 1.64 GB c73401580ae3 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/config.json 0.4 kB da2c2a64d6c1 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/transformer/model.safetensors.index.json 19.3 kB e0202c476232 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/vae/0.safetensors 675.5 MB a5cffa4306cd below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/vae/config.json 2.2 kB c6ca6522d779 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
bf16 bf16/vae/model.safetensors.index.json 15.9 kB 5a8cc6c685e4 below threshold (experimental, one prompt): PSNR 24.0 dB mean, LPIPS 0.084 mean / 0.159 worst
8bit 8bit/mflux_model.json 0.4 kB 766535ca93a0 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/model_index.json 0.6 kB 97e2febeb19d below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/processor/chat_template.jinja 5.3 kB 3636d0f0bd6b below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/processor/preprocessor_config.json 0.5 kB f64372eb108d below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/processor/tokenizer.json 11.4 MB be75606093db below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/processor/tokenizer_config.json 0.7 kB 15d9c5ecb9cf below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/scheduler/scheduler_config.json 0.5 kB 16c948c71f91 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/0.safetensors 2.14 GB e2ad0a77c0f8 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/1.safetensors 2.10 GB 79d974ad19d3 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/2.safetensors 2.10 GB ca17c8b1bb4a below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/3.safetensors 2.14 GB 5ec126e46561 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/4.safetensors 951.3 MB 64d3ea6683e7 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/config.json 1.5 kB b45aff957d1f below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/text_encoder/model.safetensors.index.json 96.0 kB c2fea0e128a5 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/0.safetensors 2.13 GB a1c6924b8e99 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/1.safetensors 2.14 GB d93c405051fb below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/2.safetensors 2.14 GB 9dbd56d9389f below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/3.safetensors 1.25 GB b2907f73d4c8 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/config.json 0.4 kB da2c2a64d6c1 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/transformer/model.safetensors.index.json 48.9 kB df9044b1b4f1 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/vae/0.safetensors 675.5 MB 7863895fcf53 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/vae/config.json 2.2 kB c6ca6522d779 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
8bit 8bit/vae/model.safetensors.index.json 15.9 kB 296e37704a97 below threshold (experimental, one prompt): PSNR 23.9 dB, LPIPS 0.085 mean / 0.161 worst
6bit 6bit/mflux_model.json 0.4 kB 966b5aff6d12 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/model_index.json 0.6 kB 97e2febeb19d below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/processor/chat_template.jinja 5.3 kB 3636d0f0bd6b below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/processor/preprocessor_config.json 0.5 kB f64372eb108d below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/processor/tokenizer.json 11.4 MB be75606093db below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/processor/tokenizer_config.json 0.7 kB 15d9c5ecb9cf below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/scheduler/scheduler_config.json 0.5 kB 16c948c71f91 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/0.safetensors 2.15 GB f16b91fc769c below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/1.safetensors 2.14 GB caa221684ea3 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/2.safetensors 2.15 GB 8771485c2a06 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/3.safetensors 851.3 MB 91eeed6ddaa9 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/config.json 1.5 kB b45aff957d1f below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/text_encoder/model.safetensors.index.json 96.0 kB 4dbbad6c0cd4 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/transformer/0.safetensors 2.15 GB 39d10d67f9f3 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/transformer/1.safetensors 2.14 GB aabd270c9c62 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/transformer/2.safetensors 1.62 GB 3b76c6e1ca74 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/transformer/config.json 0.4 kB da2c2a64d6c1 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/transformer/model.safetensors.index.json 48.9 kB 129ed2d4564c below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/vae/0.safetensors 675.5 MB 0b7feba81782 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/vae/config.json 2.2 kB c6ca6522d779 below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
6bit 6bit/vae/model.safetensors.index.json 15.9 kB 6489fa32fb0a below threshold (experimental, one prompt): PSNR 23.4 dB, LPIPS 0.087 mean / 0.155 worst
4bit 4bit/mflux_model.json 0.4 kB 285ffb0081de PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/model_index.json 0.6 kB 97e2febeb19d PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/processor/chat_template.jinja 5.3 kB 3636d0f0bd6b PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/processor/preprocessor_config.json 0.5 kB f64372eb108d PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/processor/tokenizer.json 11.4 MB be75606093db PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/processor/tokenizer_config.json 0.7 kB 15d9c5ecb9cf PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/scheduler/scheduler_config.json 0.5 kB 16c948c71f91 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/text_encoder/0.safetensors 2.14 GB 15fa5a9063e7 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/text_encoder/1.safetensors 2.15 GB da35da005ae1 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/text_encoder/2.safetensors 843.4 MB 51ff8f90a854 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/text_encoder/config.json 1.5 kB b45aff957d1f PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/text_encoder/model.safetensors.index.json 96.0 kB f964f350beba PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/transformer/0.safetensors 2.12 GB adc97e89f0b9 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/transformer/1.safetensors 2.02 GB 43d400681cfa PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/transformer/config.json 0.4 kB da2c2a64d6c1 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/transformer/model.safetensors.index.json 48.9 kB 0dd12543fbeb PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/vae/0.safetensors 675.5 MB 09a1f13f593f PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/vae/config.json 2.2 kB c6ca6522d779 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst
4bit 4bit/vae/model.safetensors.index.json 15.9 kB fdba991257d9 PSNR 22.8 dB mean, LPIPS 0.112 mean / 0.133 worst

How to run

Each folder is the whole pipeline (Qwen3-VL text encoder, transformer, VAE, processor) saved by mflux 0.24.0 from the original weights at the revision below. Run it with mflux:

pip install mflux==0.24.0
hf download moonbox-ai/Qwen-Image-2.1-Turbo-MLX --include "8bit/*" --local-dir qwen
mflux-generate-qwen-2.1 --model qwen/8bit --base-model qwen-image-2.1-turbo --steps 8 --guidance 1.0 \
  --prompt "A red fox in fresh snow at sunrise, photo" --width 1024 --height 1024 --seed 7 --output fox.png

8bit/, 6bit/ and 4bit/ quantize the transformer's and the text encoder's linear layers (MLX affine, group size 64); the VAE stays bf16. No fp16 folder: mflux computes in bf16 whatever the weights are.

How they were checked. The pipeline in mflux against diffusers' QwenImage21Pipeline in PyTorch (bf16), started from the same initial noise, 3 prompts at 512x512, 8 steps. Pass: LPIPS <= 0.15 on every prompt. Two seeds of the PyTorch pipeline are 13.3 dB / LPIPS 0.53 apart. One prompt lands just over the threshold for bf16, 8bit and 6bit: that difference is mflux's pipeline against diffusers', since quantizing changes the pictures by LPIPS 0.002 (8bit) and 0.011 (6bit) against the MLX bf16 build.

Precision Size PSNR vs PyTorch (mean) LPIPS (mean / worst) Status
bf16/ 32.5 GB 24.0 dB 0.084 / 0.159 marginally below threshold (one prompt), experimental
8bit/ 17.8 GB 23.9 dB 0.085 / 0.161 marginally below threshold (one prompt), experimental
6bit/ 13.9 GB 23.4 dB 0.087 / 0.155 marginally below threshold (one prompt), experimental
4bit/ 10.0 GB 22.8 dB 0.112 / 0.133 passes

How these were made

From Qwen-Image-2.1-Turbo at revision fc13ba1986: the original weights loaded in MLX and stored as bf16 or fp16, or quantized with MLX's affine quantization (8bit, 6bit, 4bit, group size 64; layers MLX can't quantize, such as convolutions and norms, stay bf16). Every build was checked against the original before upload; the sha256 column above is what the files must hash to.

License

qwen-research (other) - verify commercial terms. These files are a derivative of the original model and carry its license: it is copied in this repository, and it governs your use of these files. The original model card follows unchanged.


Original model card

πŸ€– ModelScope  |   πŸ€— HuggingFace  |   πŸ’» GitHub  |   πŸ“‘ Qwen-Image-2.1 Blog  |   πŸ«¨ Discord  |   πŸ’¬ WeChat

Introduction

Qwen-Image-2.1-Turbo is an accelerated checkpoint of Qwen-Image-2.1 for text-to-image generation and image editing with 8 denoising steps. It uses the same 7B visual generation architecture and loads directly with QwenImage21Pipeline in Diffusers.

The checkpoint includes its recommended sampling schedule, so it is ready to use without manually configuring the scheduler. Generation uses CFG=1 by default, and prefix KV caching reuses the text and reference-image context across denoising steps.

For more details, see the GitHub repo and Qwen-Image-2.1 blog.

Quick Start

Installation

Install a CUDA-compatible PyTorch build, then install the latest Diffusers source and the following dependencies:

pip install git+https://github.com/huggingface/diffusers.git
pip install "transformers>=5.17.0" accelerate pillow

This checkpoint requires Diffusers with support for pipeline-configured sampling sigmas, added in PR #14950.

Text-to-Image

Load the checkpoint from Hugging Face:

import torch
from diffusers import QwenImage21Pipeline

pipe = QwenImage21Pipeline.from_pretrained(
    "Qwen/Qwen-Image-2.1-Turbo",
    dtype=torch.bfloat16,
).to("cuda")

prompt = "A vertically oriented educational chemistry study poster fills the frame, designed like a hand-drawn classroom notes page with a clean white background, thick dark navy-blue outer border, and thin inner navy rectangular border lines. The overall aesthetic is colorful, high-contrast, and hand-lettered in a signature Topper style using marker and watercolor effects. At the top left, a small header in black handwriting reads \"Topper’s Notes\", accented by short decorative navy strokes radiating from it. Centered across the top is the main lesson heading in large stylized black-and-yellow bold lettering: \"Science – Chapter 1:\" followed below by the much larger title \"Chemical Reactions and Equations\". The title has energetic yellow highlighter strokes underneath and small sparkle doodles nearby. At the top right, inside a small outlined page-number box, the label reads \"Page X\". Below the header, a wide rounded rectangle framed in dark navy contains a pink brush-stroke highlight banner with the subheading \"IMPORTANT CHEMICAL EQUATION:\" in black. Inside the same equation panel, the reaction is written very large as \"Fe + CuSOβ‚„ β†’ FeSOβ‚„ + Cu\". The symbol \"Fe\" is highlighted in bright orange with an underline, \"CuSOβ‚„\" is vivid blue and underlined, \"FeSOβ‚„\" is bright green and underlined, and \"Cu\" is metallic bronze and underlined. Beneath the left side of the equation is a lavender rounded label connected by a leader line to the iron component; it says \"Reactants\" and below it \"(before the reaction)\", with \"Reactants\" colored purple and underlined. Beneath the right side is a matching pale-green rounded label connected by a leader line to the products; it says \"Products\" and below it \"(after the reaction)\", with \"Products\" colored green and underlined. Along the lower part of this equation box are stylized ball-and-stick molecule models and atomic orbital drawings: a silver-gray sphere labeled \"Fe\" sits left of center, another cluster shows gray, red, and white spheres representing sulfate groups around blue and green atoms, and a copper-colored sphere appears near the right. Small atom-and-orbit icons sit along the bottom edge of the panel in blue, green, and brown outline styles. The middle portion is enclosed by a large dashed green rounded rectangle titled \"REACTIVITY CONCEPT\" in green uppercase letters with decorative rays. On the left side of this section, a stepped vertical reactivity-series ladder is drawn with alternating colored horizontal blocks. From top to bottom it lists \"K\", \"Na\", \"Ca\", \"Mg\", \"Al\", \"Zn\", \"Fe\" with a green oval callout reading \"(More reactive)\", then continues downward with \"Cu\", \"Ag\", \"Hg\", \"Pt\", \"Au\" with an orange oval callout reading \"(Less reactive)\". Each step is marked by a dark upward-pointing triangular arrow, showing decreasing reactivity downward. In the central-right area, full body text as follows: \"Iron (Fe) is higher in the reactivity series than Copper (Cu). This makes Iron more reactive.\" Below this definition is a visual arrow sequence of overlapping circles: orange \"Fe\" overlaps blue \"Cu\", followed by a red arrow pointing toward the phrase \"β†’ More displacement ↓ less reactivity\". Under it, a prominent statement in dark handwriting reads \"More reactive element displaces less reactive element\", emphasized with a bright pink marker underline. On the right, a shield-like badge with a navy outline and light interior contains the bold contrasting font label \"DISPLACEMENT REACTION\". Below the badge, full body text as follows: \"A more reactive element displaces a less reactive element from its compound.\" The badge includes an internal miniature illustration of circular electron shells and colored particles, reinforcing the chemistry theme. Directly below the reactivity concept box, a smaller rounded rectangular table titled \"PROPERTY COMPARISON\" compares Iron and Copper. The table has three columns: \"IRON (Fe)\", \"COPPER (Cu)\", and a central property column. Row one reads \"Reactivity series position\" with Iron shown as \"Higher (more reactive)\" and Copper shown as \"Lower (less reactive)\". Row two reads \"Displaces hydrogen from acids\" with Iron marked \"Yes\" and Copper marked \"No\". Row three reads \"Displaced by other metals\" with Iron shown as \"Displaced by Zn, Mg, Al, etc.\" and Copper shown as \"Displaced by Fe, Zn, Mg, etc.\". Row four reads \"Oxidation tendency\" with Iron shown as \"Gets oxidized easily\" and Copper shown as \"Does not get oxidized easily\". Row five reads \"Useful property\" with Iron described as \"Used where strength & corrosion resistance needed\" and Copper described as \"Used where conductivity & corrosion resistance needed\". The table uses thin navy grid lines, orange tinting for the iron column, pale blue tinting for the copper column, black condensed handwriting, and green checkmarks next to positive traits and red crosses next to limitations. The lower half introduces a large illustrated experiment section with a cream highlight behind the title \"BEFORE/AFTER IRON NAIL EXPERIMENT\" in bold dark navy uppercase letters. The section is split visually into a left \"Before\" state and a right \"After\" state. On the left, a beaker filled with bright blue solution contains a shiny silver iron nail standing diagonally. The beaker label reads \"CuSOβ‚„(aq)\" in blue, and the bottom label near the nail reads \"Fe(s)\". A rounded annotation box beside the beaker says \"Initial State: Blue Solution & Silver Nail\". Two glass test tubes stand to the right of this beaker: the upper test tube is filled with blue solution and labeled \"CuSOβ‚„(aq)\", while the lower one contains a pale green liquid. Red and blue directional arrows connect these visual elements to explanations: one red arrow points toward the nail with the text \"Copper gets deposited\", and one blue arrow points toward the liquid with the text \"Solution turns pale green\". On the right side of the experiment section, another beaker shows the after state with the iron nail now coated in brown copper deposits. Its solution is faded to a pale greenish-blue, and the beaker label reads \"FeSOβ‚„(aq)\" in green. A nearby rounded annotation box says \"Final State: Pale Green Solution & Brown Coated Nail\". To the far right are additional test tubes and ion symbols: a test tube containing blue liquid labeled \"CuSOβ‚„(aq)\" with the note \"Blue colour due to Cu²⁺ ions\", and a lower test tube containing pale green liquid labeled \"FeSOβ‚„(aq)\" with the note \"Pale green due to Fe²⁺ ions\". Beside them are ion diagrams labeled \"Cu²⁺(aq)\" and \"Fe²⁺(aq)\", shown as colored charged particles encircled by simple electron-shell rings; the copper ion uses blue particles and the iron ion uses green particles. Small sparkles, arrows, and dashed guide lines emphasize the transformation from blue copper sulfate solution to pale green iron sulfate solution. Near the bottom, a horizontal summary strip has a blue star icon followed by the heading \"SUMMARY\". Full body text as follows: \"In this reaction, Iron (Fe) displaces Copper (Cu) from Copper Sulphate (CuSOβ‚„) solution to form Iron(II) Sulphate (FeSOβ‚„) solution and Copper (Cu).\" To the lower left, a bordered key-points box titled \"KEY POINTS\" lists three starred bullet statements: \"Iron is above copper in the reactivity series.\", \"Fe displaces Cu from CuSOβ‚„ solution.\", and \"Result: Blue solution turns pale green; copper metal deposits on iron nail.\" At the very bottom, inside the footer border, spaced text reads \"CHEMISTRY β€’ CHANGE IS EVERYWHERE β€’ TOPPER’S NOTES\", flanked by small leaf-like ornaments and thin horizontal divider lines. The entire page uses dark navy borders and headings, bright highlighter strokes, watercolor shading, realistic glassware illustrations, and playful scientific doodles to present a chemistry lesson clearly and attractively."

image = pipe(
    prompt=prompt,
    width=1696,
    height=2528,
    use_kv_cache=True,
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]

image.save("t2i.png")

The pipeline automatically uses the checkpoint's saved 8-step schedule. The text-to-image example uses 1696 Γ— 2528 portrait resolution; the editing example uses 2048 Γ— 2048.

Image Editing

Reuse the pipeline above to turn a yacht sketch into a photorealistic image:

from diffusers.utils import load_image

input_image = load_image(
    'https://huggingface.co/Qwen/Qwen-Image-2.1-Turbo/resolve/main/assets/turbo-boat-input.png'
).convert("RGBA")

edit_prompt = "Create a photorealistic photograph of the motor yacht from the input sketch, sailing on open sea, captured in full side profile with the camera at water level. Build the vessel with the structure shown in the input sketch: a long low hull; one tall mast stepped forward with a small cross-tree platform near its top; a wheelhouse superstructure with an open bridge wing just behind the mast; a midships deckhouse carrying a row of four rectangular windows with a lifeboat stowed on its roof; a rectangular funnel behind that deckhouse; an aft deckhouse with a row of three rectangular windows and a second lifeboat above it; thin railings along every deck edge; the hull side pierced by one small square window at the bow, an upper line of five round portholes on the raised forward section, and a lower line of nine round portholes along the main hull. Paint the hull black, the superstructures and the mast white, and the funnel yellow. Set the yacht broadside on a calm deep-blue sea with a low gentle swell and a thin white wake trailing from the bow, the straight horizon crossing behind the funnel top, under a clear sky with soft scattered clouds; sunlight from the front left lights the white superstructures and leaves a bright reflection path on the water beside the hull with a soft contact shadow along the waterline; the entire vessel fits inside the frame with open water in the foreground and sky above."

image = pipe(
    prompt=edit_prompt,
    image=input_image,
    width=2048,
    height=2048,
    use_kv_cache=True,
    generator=torch.Generator("cpu").manual_seed(20261009),
).images[0]

image.save("edit.png")

Sampling

The recommended 8-step sampling schedule is saved with the checkpoint and loaded automatically. Setting num_inference_steps alone does not override it. For experiments, an explicit call-time sigmas argument overrides the saved schedule; other schedules have not been evaluated for this checkpoint.

Supported Aspect Ratios

Use the same resolution presets as Qwen-Image-2.1:

aspect_ratios = {
    "1:1":  (2048, 2048),
    "4:3":  (2400, 1792),
    "3:4":  (1792, 2400),
    "3:2":  (2528, 1696),
    "2:3":  (1696, 2528),
    "16:9": (2752, 1536),
    "9:16": (1536, 2752),
}

Showcase

Examples from the 8-step outputs in our Turbo showcase. Each category features one example.

Portrait Photography

Human Poses and Motion

Transparent Image Generation

Typography and Poster Design

UI and Information Layout

Single-Image Transformation

Input

Output

Multi-Reference Composition

Input

Output

Four-Image Interior Composition

Input

Output

License

This model is licensed under the Qwen Research License Agreement.

Feedback

Having issues with Qwen-Image-2.1-Turbo? Our official feedback form connects you directly with the Qwen Image research team. Share your prompts, images, or workflows to help us investigate and improve.

Submit Feedback β†’

Downloads last month

-

Downloads are not tracked for this model. How to track
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for moonbox-dev/Qwen-Image-2.1-Turbo-MLX

Quantized
(56)
this model