Qwen Image 2.1 Official Turbo Sampler
Qwen Image 2.1's Official Turbo Sampler
- model
- positive
- latent_image
- samples
You drop this node in where a KSampler would go, and then you notice what it doesn't have: no steps, no CFG, no sampler, no scheduler, no negative. That's not a missing feature, that's the entire product. Qwen Image 2.1's Turbo checkpoint was distilled for one exact eight-step recipe, and this node hard-codes it so your sampling can't drift off it.
What it is and why it exists
Distilled checkpoints aren't normal models with a turbo switch. The step count, CFG, sampler and noise schedule are part of what was trained, and using the wrong ones is the classic way to get mush from a Lightning/Turbo/LCM model - the distillation guide makes the point across half a decade of releases: SDXL-Lightning wants CFG 0 with sgm_uniform, LCM wants 4–8 steps at CFG 1–2, and each Lightning variant is trained for its own step count. Turbo models are the same story with higher stakes, because a 20B model at 25 steps is a coffee break.
Qwen Image 2.1 is Alibaba's follow-up to the family covered in the Qwen family guide, and the Turbo variant is the few-step distillation everyone in that family's threads was waiting for long before the weights landed (the r/StableDiffusion reaction to the Qwen-Image-2 technical report was mostly speculation about exactly this, and scepticism about whether it would ever be released). Comfy-Org now ships it as qwen_image_2.1_turbo_int8_convrot.safetensors, and Prompt Studio's sampler is built to its published schedule.
How it works
The node takes four inputs - model, seed, positive, latent_image - and produces one samples output. Under the hood (backend/qwen_turbo.py) it builds a fixed sigma list straight from the model's own model_index.json sampling config: 1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0.0. Nine sigmas, eight steps, Euler, and no resolution-dependent shift - that last part matters, because the older Qwen Turbo v0.3 route recomputes sigmas from the latent geometry and this one deliberately doesn't. CFG is passed as 1.0 with the positive conditioning used for both sides of the guidance, and at CFG 1 ComfyUI doesn't compute an unconditional pass at all - comfy/samplers.py skips it outright - which is why there is no negative input to wire.
There's one guard worth knowing about. If the model already carries the Viggle v0.3 Turbo adapter (which the pack's other, legacy Turbo nodes apply), this sampler raises Official Qwen Turbo uses the full Turbo model without the Viggle adapter. The two Turbo eras are mutually exclusive by design, not by accident.
Wiring it
Follow the bundled [PS] - QwenImage21 Create turbo8.json:
positive← theTextEncodeQwenImage21conditioning outputlatent_image←EmptyLatentImage(or your reference workflow's latent)model← the model chain, which in the official workflows runs Model Loader →QwenImage21Cache→ LoRA loader → Apply Qwen Structure → this nodesamples→VAEDecode
Seed gets randomize in the shipped workflow, and the widget is a normal seed, so seed-axis XY(Z) plots still work in the Studio. That's your only knob. If you want steps, CFG or sampler control, you want the 25-step or 40-step base workflows instead - the README's older prose still describes the six-step v0.3 Turbo path, but the shipped catalog and this node's own code are the official eight-step route, and the legacy KCPP_QwenImage21TurboSampler + KCPP_QwenImage21TurboLora pair is kept only so old generations still replay.
It's still a heavy 20B model either way - Turbo is what makes iterating on it tolerable.
Install
The node ships with the pack, so it's the same one-time setup: ComfyUI Manager → search ComfyUI_PromptStudio, or
cd ComfyUI/custom_nodes
git clone https://github.com/tiko13/ComfyUI_PromptStudio
then restart ComfyUI. The pack adds no runtime pip requirements of its own. What you do need is the model side, and the in-app setup wizard (Settings → Setup wizard → Run setup) handles it:
models/diffusion_models/QwenImage21/qwen_image_2.1_turbo_int8_convrot.safetensors(~7.3 GB)- a Qwen3-VL 8B encoder in
text_encoders qwen_image_2.1_vae_bf16.safetensorsinvae
Qwen workflows start unchecked and ask you to accept the Qwen Research License - a strict non-commercial research/evaluation licence, and the wizard means it.
Common issues
- "Official Qwen Turbo uses the full Turbo model without the Viggle adapter." You pointed this sampler at a base model with the v0.3 LoRA loaded. Pick one Turbo route, not both.
- "Qwen Turbo sampling requires the v0.3 unmerged adapter." The mirror-image mistake: that's the legacy sampler complaining. Use
KCPP_QwenImage21OfficialTurboSamplerfor the full Turbo INT8 model. - Blurry or over-soft output. Usually the second mistake wearing a disguise - base weights in a Turbo graph, or Turbo weights in a base25/base40 graph with the wrong step count.
- The node won't accept your negative prompt. There's no socket for it. At CFG 1 it would do nothing anyway; move exclusions into the positive text.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| seed | INT | 00–18446744073709550000 | — |
| positive | CONDITIONING | — | |
| latent_image | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |