This article is a spinoff of Local image generation on Mac: 10 models compared, my top pick flipped. Per-model deep dive, v3.
TL;DR
- SDXL Turbo is Stability AI's 1-step distilled SDXL, compressing 30 steps into 1 via Adversarial Diffusion Distillation (ADD)
- On Mac M1 Max 64GB / Apple MPS, ~1 sec per image (after initial load) — the fastest among all 10 models in this series
- Image quality is deliberately blurred. High-frequency detail (fur, text, fingers) is uniformly soft
- License: Stability AI Non-Commercial — no commercial use
- Verdict: thumbnails / prototyping / on-device only, weak as a final deliverable
- Compared with Qwen-Image Lightning (8-step LoRA), the gap shows how seriously a distillation was designed
Why include this model
To benchmark "the speed limit." Distillation taken to its extreme:
- 1-step = 3000× faster than 50-step Qwen Full, 4× faster than 4-step Flux schnell
- Designed for on-device, real-time generation
- ADD (Adversarial Diffusion Distillation) was a hot topic in the SD community when the paper dropped
What I expected:
- Real-time generation: instant prompt-to-image during livestreams, UI mockups, on-the-fly game assets
- How far "SDXL that traded quality for speed" can practically go
What I didn't expect (these were known going in):
- 1-step inevitably loses detail — the priors said so
- Non-commercial license — can't use it for commercial article illustrations
Verdict: its position as "the speed extreme" is correct, but in a final-deliverable comparison like this one, it lands clearly last on quality. Looking at Turbo makes it obvious why Qwen Lightning's 8-step LoRA is "exceptional as a distillation."
Environment setup
pip install diffusers==0.37.1 torch==2.11.0 transformers
Load code:
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/sdxl-turbo",
torch_dtype=torch.float16,
).to("mps")
image = pipe(
prompt="...",
num_inference_steps=1, # ★ 1 is the design point
guidance_scale=0.0, # ★ Turbo doesn't need CFG
height=512, # ★ 512x512 recommended; 1024 breaks
width=512,
).images[0]
Hardware requirements:
| Item | Value |
|---|---|
| Mac | M1 Max / 64GB |
| Model | 7GB (fp16) |
| Resolution | 512x512 (1024 breaks) |
| Per image | ~1 sec (1 step / 512px / MPS) |
No need to bump iogpu.wired_limit_mb (7GB is trivial for default MPS).
All 8 prompts
| # | Prompt | Image | Time |
|---|---|---|---|
| 01 | a cute cat sitting on a wooden bench in a sunny park | ![]() |
4.0s (first) |
| 02 | a bowl of ramen with chashu and soft-boiled egg | ![]() |
1.0s |
| 03 | a wooden sign with "LOCAL AI" | ![]() |
1.1s |
| 04 | a developer's t-shirt with "M1 MAX 64GB" retro 80s style | ![]() |
1.0s |
| 05 | a woman developer working at a laptop | ![]() |
1.0s |
| 06 | a glowing AI brain made of circuits and neon | ![]() |
1.1s |
| 07 | three robots playing chess in a sunlit library | ![]() |
1.1s |
| 08 | a wooden izakaya sign with the kanji "居酒屋" | ![]() |
1.0s |
Total for 8 images: ~11 seconds (8.4 sec of pure generation after initial load). Roughly 5000× faster than Qwen Full's 12 hours.
Per-prompt evaluation
01 Cat — eyes are off, fur disappears
Cat on a bench, natural light, lens bokeh. Holds up as a thumbnail. At full resolution though:
- Left and right eyes differ in size and shape, eye outlines fuzzy
- Nose detail vague
- Fur texture vanishes (no fluffiness — fur reads as a smooth surface)
→ Uniformly weak at the high-frequency detail an animal face needs (eyes, nose, fur). At 1 step the model can place "two circles for eyes" but doesn't reach "symmetric, natural pupils."
| SDXL base (60s) | Flux dev (12m) | Qwen Lightning (10m) | SDXL Turbo (1s) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Fur detail, photorealistic | Drifts to anime style | Photorealistic, natural bench | Soft fur, thumbnail-grade |
→ 720× speed ratio, clear quality gap. Turbo is "use it shrunk" material.
02 Ramen — eggs and chashu look off
Element placement is fine; cilantro bias is muted. But on inspection:
- Eggs multiply to 3 (prompt was "soft-boiled egg," singular)
- Center chashu reads as raw meat, no braised feel — pink and white layers exposed
- The white side ingredient (hanpen? kamaboko?) is too vague to identify
- Overall soft, more "tidy meal illustration" than photo
→ At 1 step there isn't time to differentiate textures (translucent yolk, braised pork, springy noodles). Works for a food blog thumbnail, but at full size it becomes "a meal you wouldn't want to eat."
03 LOCAL AI — can't even read the text
The sign meant to say "LOCAL AI" comes out as smudged mystery English text. "L" is readable, but the rest is hard to parse. Better than SD 1.5's "OOLDD AIXNIA," nowhere near SDXL base / Flux dev quality.
→ Text rendering is Turbo's biggest weakness. At 1 step there isn't time to construct character edges.
04 M1 MAX 64GB t-shirt — t-shirt itself looks fine, text collapses
80s-style t-shirt, synthwave colors — OK. But "M1 MAX 64GB" is essentially illegible, processed as decorative graphics.
05 Woman developer — finger problems, eyes off
Woman, laptop, coffee, natural light. Looks stock-photo-ish at first, but:
- Eyes half-closed and fuzzy, eye contours vague (broken as photorealistic)
- Finger angles on the hand touching the face are unnatural — joint count and direction anatomically off
- Face detail (nose, mouth) is mushy
- Composition isn't broken, so shrunk thumbnails hide the issues
→ Turbo "breaks while drawing." It doesn't show SDXL base's vanished fingers or added elements, instead it breaks on detail precision. At 1 step there isn't time to construct finger joints or pupil contours.
06 AI brain — the neon prompt isn't reflected
The prompt explicitly says glowing AI brain made of circuits and neon, cyberpunk style, but what came out is a dark silhouette brain with gold circuit lines. Almost no glow, no cyberpunk neon (cyan / magenta / purple).
| Prompt token | Turbo's output |
|---|---|
| glowing | No glow, dark silhouette |
| neon | No coloring, metal-engraving feel |
| cyberpunk style | Absent, leans dark-art |
→ At 1 step there isn't time to reflect the prompt's adjectives (glowing / neon / cyberpunk). Only the nouns (brain / circuit / dark background) get reflected, the atmosphere modifiers are dropped. Limit of "blur to fudge" design.
07 Robots and chess — composition OK, expressions thin
Three robots, library, warm light. Element placement is fine, but robot expressions, hand detail, chess piece sharpness are all soft.
08 Izakaya — kanji collapses, even the sign is vague
Sign, paper lantern, night alley silhouette. The kanji "居酒屋" doesn't even reach fake-character level — it's not recognized as text. Slightly more "sign-shaped" than SD 1.5's Buddhist scripture scroll, but the gap is "vague rectangular blur" vs "wrong religion entirely."
→ Asian elements are Turbo's worst. Flux dev / SDXL base / Qwen produce fake kanji at least; Turbo doesn't reach "text" at all.
What worked
- 1-second generation: 1-step / 512px in 1 sec. Nothing local is faster
- Fast load too: 7GB fp16, 170 sec initial load (vs Qwen Full's 953 sec, Lightning's 170)
- No element-addition habit: doesn't add SDXL base's spurious mug, but breaks on eye / finger / food detail instead
- Runs on-device: practical speed even on M1
- Prompt fidelity: composition doesn't break despite 1 step (atmosphere is preserved)
What didn't
- Text rendering completely NG: can't even spell "LOCAL AI," equivalent to SD 1.5
- Kanji rendering out of the question: "居酒屋" not even recognized as text
- Fur, particles, sharpness uniformly soft: structural property of ADD
- Stability AI Non-Commercial: can't use for commercial article illustrations
- Locked to 512: 1024 breaks, full-resolution use is limited
Where this model still earns its keep
- ✅ Mass thumbnail generation: SNS thumbnails, blog hero image small variants
- ✅ Prototyping: UI mockups, storyboards, roughs
- ✅ On-device, real-time: live generation during streams
- ✅ Lightweight local exploration: fast preview while tuning prompts → finalize on Flux dev / Qwen Lightning
- ❌ Article illustrations (full size): detail softness is obvious at full size
- ❌ Designs containing text: text rendering NG
- ❌ Commercial use: license violation
- ❌ Asian elements: kanji / ramen / izakaya all break
Gotchas / tips
1. Don't forget num_inference_steps=1 / guidance_scale=0.0
# ❌ Running it like normal SDXL is pointless
image = pipe(prompt=p, num_inference_steps=30, guidance_scale=7.5, ...)
# ✅ Use Turbo for what Turbo is for
image = pipe(prompt=p, num_inference_steps=1, guidance_scale=0.0, ...)
Setting num_inference_steps=30 makes it 30× slower without quality gain (sometimes worse). Turbo is optimized for 1 step.
2. Lock to 512x512
1024x1024 noticeably degrades quality. SDXL base trained at 1024, but Turbo's distillation uses 512 as the primary axis. If you need 1024, use base or another model.
3. Keep prompts shorter
# ❌ Flux dev / Qwen Lightning instinct: long, detailed prompt
prompt = "a cute cat sitting on a wooden bench in a sunny park, photorealistic, highly detailed, 8k, sharp focus, lens flare, ..."
# ✅ Turbo is more stable on short prompts
prompt = "a cute cat on a bench, sunny park"
At 1 step there's no time to reflect every element of a long prompt. Short, core elements only.
4. License: Non-Commercial
stabilityai/sdxl-turbo is under Stability AI Non-Commercial License. No commercial use. This is a major reason it doesn't make this series' adoption plan. For commercial work use Flux schnell (Apache 2.0) / Qwen Lightning (Apache 2.0).
5. Understand "blur to fudge" design
Turbo doesn't have SDXL base's "element-addition habit," but instead eyes, fingers, and food detail break. At 1 step there's no time to construct detail, so the design "blurs to fudge." Fine for thumbnails, but at full size SDXL base is sometimes the better choice.
The three distillation siblings compared
This series includes three models that do distillation:
| Model | Steps | Speed | Quality loss | License |
|---|---|---|---|---|
| SDXL Turbo | 1 | 1s | Large (text and detail collapse) | NC |
| Flux schnell | 4 | 2m | Medium (clearly behind dev) | Apache 2.0 |
| Qwen-Image Lightning | 8 | 10m | Inverted (sidesteps the over-step trap) | Apache 2.0 |
→ Distillation seriousness isn't determined by step count. Turbo is the canonical "trade quality for speed"; Lightning is the rare "get speed and quality together." ADD (Turbo) and LoRA-distillation (Lightning) are different beasts.
Comparison article and next models
Related articles in this series:
- v2 SDXL base 1.0 — Mid-tier stability with a habit of adding elements you didn't ask for (Turbo's source model)
- v5 Flux.1 [schnell] — Apache 2.0 with 4-step distillation (the middle distillation)
- v8 Qwen-Image Lightning — Distilled to 8 steps, then it became the best local model (the upper bound of distillation)
Test environment: Mac M1 Max 64GB / macOS 25.4 / Python 3.14 / Diffusers 0.37.1 / PyTorch 2.11 (MPS) Run log: 2026-04-29, SDXL Turbo (stabilityai/sdxl-turbo, 1-step / guidance 0.0 / 512px)










