Samplers y schedulers de Stable Diffusion explicados
Elige el sampler correcto para SD1.5, SDXL y Flux: determinista vs. estocástico, trade-offs de pasos y ajustes del scheduler.
On this page
- Qué hacen realmente un sampler y un scheduler
- Corrección: qué significa LMS
- Determinista vs. estocástico: la división fundamental
- La familia DPM-Solver: qué significa cada nombre
- Scheduler: Karras, Simple y la curva de ruido
- Recomendaciones de sampler por modelo
- Cómo interactúa el número de pasos con la elección de sampler
- DDIM y PLMS: los originales
- Common Errors and Fixes
- FAQ
- Links internos
Samplers y schedulers de Stable Diffusion explicados
TL;DR
- Cada sampler es determinista (converge a una imagen) o estocástico (sigue cambiando con más pasos). Elige determinista para reproducibilidad; estocástico para variación creativa.
- El scheduler (schedule de ruido) controla cuánto ruido elimina el modelo en cada paso. El schedule Karras concentra reducciones más pequeñas al final y mejora el detalle: funciona con la mayoría de samplers modernos.
- Para SDXL, un buen punto de partida es DPM++ 2M Karras con 20–30 pasos y CFG 5–8. Para Flux, usa Euler con scheduler Simple y CFG 1.0 (el guidance vive en el nodo FluxGuidance, ~3.5).
Qué hacen realmente un sampler y un scheduler
En cualquier modelo Stable Diffusion, el denoising empieza con una imagen latente aleatoria. El predictor de ruido estima el ruido en cada paso. El sampler lo resta: es el algoritmo numérico que lleva el latente del caos a una imagen limpia. El scheduler especifica cuánto ruido debería quedar en cada paso. Juntos forman la trayectoria de denoising. (stable-diffusion-art.com)
Más pasos significan reducciones de ruido más pequeñas entre pasos, lo que reduce el error de truncamiento. (stable-diffusion-art.com)
Corrección: qué significa LMS
Una referencia popular expande LMS como Laplacian Pyramid Sampling. El nombre real es Linear Multi-Step method: un solver de ODE estándar que usa el historial de estimaciones de derivadas previas para mejorar la convergencia. (stable-diffusion-art.com)
Determinista vs. estocástico: la división fundamental
Samplers deterministas
Euler es el sampler más directo. En cada paso resta el ruido escalado por el schedule, siguiendo una trayectoria ODE fija. Con la misma seed y el mismo número de pasos, Euler siempre produce la misma imagen. (stable-diffusion-art.com) Ese comportamiento determinista también hace previsibles a Heun (segundo orden, el doble de lento) y LMS (multi-step): convergen a una salida estable a medida que aumenta el número de pasos. (stable-diffusion-art.com)
DPM++ 2M es una variante multistep de la familia DPM-Solver++. El "2M" significa two-step multistep: usa la estimación de denoising previa para calcular el paso actual y converge más rápido por evaluación de red que Euler puro. (Lu et al., 2022) La implementación de k-diffusion lo confirma: sample_dpmpp_2m sigue old_denoised a través de los pasos y usa una razón r para interpolar entre la predicción actual y la anterior.
Samplers estocásticos
Euler a (Euler ancestral) resta más ruido del que exige el schedule y después añade ruido aleatorio para igualarlo. Cada paso depende de una muestra aleatoria concreta, así que el resultado cambia en cada ejecución incluso con la misma seed. (stable-diffusion-art.com) Los samplers ancestrales —los que llevan sufijo "a": Euler a, DPM2 a, DPM++ 2S a— nunca convergen: aumentar el número de pasos sigue cambiando la imagen en vez de estabilizarla. (stable-diffusion-art.com)
DPM++ SDE y DPM++ 2M SDE pertenecen a la misma clase estocástica, pero usan ecuaciones diferenciales estocásticas que inyectan ruido de proceso Wiener mediante un sampler de ruido de árbol browniano. La implementación de k-diffusion llama a BrownianTreeNoiseSampler en cada paso y aplica un parámetro eta que controla cuánto ruido SDE se añade. Estos samplers no convergen y muestran resultados fluctuantes cuando cambia el número de pasos. (stable-diffusion-art.com)
Por qué importa
Si necesitas salida reproducible —la misma seed, la misma imagen siempre— quédate con samplers deterministas. Si quieres variación creativa con un solo prompt, los samplers estocásticos te la dan. El trade-off es la convergencia: los deterministas se estabilizan con suficientes pasos; los estocásticos no. (stable-diffusion-art.com)
La familia DPM-Solver: qué significa cada nombre
La línea DPM-Solver la publicó Lu et al. (2022) y se mejoró en DPM-Solver++. Las convenciones de nombres:
| Nombre | Significado | Orden | Velocidad vs Euler | Fonte |
|---|---|---|---|---|
| DPM2 | DPM-Solver orden 2 | 2º | ~2× más lento (dos llamadas de red por paso) | arXiv:2206.00927 |
| DPM2 a | DPM-Solver orden 2, ancestral | 2º | ~2× más lento + estocástico | arXiv:2206.00927 |
| DPM Fast | DPM-Solver con tamaños de paso uniformes | 1º | ~1× (una llamada por paso) | arXiv:2206.00927 |
| DPM Adaptive | DPM-Solver con tamaño de paso adaptativo | 1º–3º | Variable: ignora tu número de pasos | arXiv:2206.00927 |
| DPM++ 2M | DPM-Solver++ two-step multistep | 2º | ~1× (reutiliza la evaluación previa) | arXiv:2211.01095 |
| DPM++ 2M SDE | DPM++ 2M con ruido estocástico | 2º | ~1× + estocástico | arXiv:2211.01095 |
| DPM++ 2S a | DPM-Solver++ two-step single-step ancestral | 2º | ~2× + estocástico | arXiv:2211.01095 |
| DPM++ 3M SDE | DPM-Solver++ three-step multistep SDE | 3º | ~1× + estocástico | arXiv:2211.01095 |
| DPM++ 2M SDE Heun | DPM++ 2M SDE usando substep Heun (midpoint) | 2º | ~1× + estocástico | arXiv:2211.01095 |
La librería diffusers de Hugging Face usa algorithm_type="dpmsolver++" por defecto y recomienda solver_order=2 para el sampling guiado de Stable Diffusion. (fuente de diffusers)
Scheduler: Karras, Simple y la curva de ruido
El scheduler determina la forma de la curva de reducción de ruido: qué niveles de ruido visita el modelo y en qué orden.
| Scheduler | Qué hace | Cuándo usarlo | Fonte |
|---|---|---|---|
| Karras | Concentra pasos cerca del final (ruido bajo) y reduce el error de truncamiento donde más importa para el detalle | La mayoría de samplers y modelos: el valor por defecto seguro | arXiv:2206.00364 |
| Linear (por defecto) | Niveles de ruido espaciados de forma uniforme desde el máximo hasta cero | Pipelines antiguos; sigue sirviendo en muchos casos | — |
| Exponential | Tamaños de paso que decaen exponencialmente | Algunos workflows especializados; rara vez el mejor valor por defecto | — |
| Simple | Lo usan los modelos de la familia Flux | Siempre con Flux; no para SD1.5/SDXL | localaimaster.com |
| DDIM | Pasos uniformes, usado específicamente por el sampler DDIM | Solo sampler DDIM | arXiv:2010.02502 |
| Beta | Schedule con forma de distribución beta | Nicho; se usa a veces con DDIM | — |
Recomendaciones de sampler por modelo
SD 1.5
Para SD 1.5, la mayoría de samplers modernos funcionan bien con 20–30 pasos. La decisión principal es si quieres salida determinista o estocástica.
| Caso de uso | Sampler | Pasos | Scheduler | Notas | Fonte |
|---|---|---|---|---|---|
| Uso general, reproducible | DPM++ 2M Karras | 20–30 | Karras | Convergencia rápida; muy usado | stable-diffusion-art.com |
| Uso general, variado | DPM++ 2S a Karras | 20–30 | Karras | Estocástico; imagen distinta en cada ejecución | stable-diffusion-art.com |
| Vista previa rápida | Euler | 10–15 | Karras o Linear | Simple, converge rápido | stable-diffusion-art.com |
| Calidad a cambio de tiempo | Heun | 15–20 | Karras | 2× más lento por paso por la evaluación de segundo orden | stable-diffusion-art.com |
| One-shot / el más rápido | UniPC | 5–15 | Karras | Alta calidad en muy pocos pasos | arXiv:2302.04867 |
SDXL
La arquitectura más grande de SDXL se beneficia de los mismos samplers, pero es más sensible al número de pasos y a los ajustes de CFG. La model card de Stable Diffusion XL de Stability AI recomienda el pipeline base+refiner con 40 pasos y un reparto de ruido 80/20. (SDXL model card)
Un punto de partida práctico para SDXL:
| Caso de uso | Sampler | Pasos | CFG | Scheduler | Notas | Fonte |
|---|---|---|---|---|---|---|
| Calidad equilibrada | DPM++ 2M Karras | 20–30 | 5–8 | Karras | La opción más recomendada | stable-diffusion-art.com |
| Con refiner | DPM++ 2M Karras | 40 (80/20) | 5–7 | Karras | Coincide con el ejemplo de Stability AI | SDXL model card |
| Iteración rápida | Euler | 15–20 | 5–7 | Karras | Converge bien, ciclo de feedback rápido | stable-diffusion-art.com |
Flux
Flux usa rectified flow en lugar del schedule de ruido con epsilon-prediction de SD 1.5/SDXL. Eso cambia por completo la elección de sampler y scheduler. Como documenta la guía de workflow de ComfyUI para Flux:
- Sampler: Euler
- Scheduler: Simple
- CFG: 1.0 (el guidance vive en el nodo FluxGuidance, por defecto 3.5)
- Steps: 20 para Flux.1 dev
Poner el CFG por encima de 1.0 deja la imagen lavada porque Flux integra el guidance en el modelo, no en el multiplicador CFG. (localaimaster.com) Varios profesionales confirman la configuración Euler/Simple/CFG-1.0 en Forge, ComfyUI y la guía de Flux de andreaskuhr.com.
Cómo interactúa el número de pasos con la elección de sampler
Con samplers deterministas, más pasos significan reducciones de ruido más pequeñas entre pasos, lo que reduce el error de truncamiento y ayuda a que la imagen converja. (stable-diffusion-art.com) Con samplers estocásticos —cualquier nombre con sufijo "a" o "SDE"— los pasos extra siguen introduciendo aleatoriedad. La imagen sigue cambiando. (stable-diffusion-art.com) El paper de DPM-Solver muestra que DPM-Solver alcanza 4.70 FID en CIFAR-10 con 10 evaluaciones de función, y llega a alta calidad en 15–20 pasos con DPM-Solver++ para sampling guiado. (Lu et al., 2022)
DDIM y PLMS: los originales
DDIM (Song et al., 2020) fue uno de los primeros samplers prácticos: consiguió una aceleración de 10–50× sobre DDPM usando un proceso inverso no markoviano. PLMS (Pseudo Linear Multi-Step) se distribuyó junto a él en la versión original de Stable Diffusion. Hoy ambos se consideran obsoletos: la guía de stable-diffusion-art.com los describe como "generally seen as outdated and not widely used anymore". (stable-diffusion-art.com) Si los usas por costumbre, cambiar a DPM++ 2M Karras te da igual o mejor calidad con menos pasos.
Common Errors and Fixes
| Síntoma | Causa probable | Corrección |
|---|---|---|
| La imagen se ve lavada con Flux | CFG por encima de 1.0 | Pon el CFG del KSampler en 1.0; usa el nodo FluxGuidance para el guidance |
| La imagen sigue cambiando con más pasos | Estás usando un sampler estocástico | Cambia a un sampler determinista (Euler, DPM++ 2M) |
| Artefactos o salida corrupta con Flux | Tipo del DualCLIPLoader puesto en SDXL | Cambia el tipo a "flux" |
| Colores extraños o salida de alto contraste | VAE incorrecto seleccionado | Usa el VAE nativo del modelo (Flux: ae.safetensors) |
| Poca adherencia al prompt con CFG bajo en SDXL | CFG demasiado bajo para el sampler | Sube el CFG a 5–8 o cambia a un sampler pensado para CFG bajo |
FAQ
¿Cuál es la diferencia entre samplers deterministas y estocásticos?
Los samplers deterministas (Euler, DPM++ 2M, Heun, LMS) siguen una trayectoria ODE fija: con la misma seed y los mismos ajustes, producen siempre la misma imagen. Los estocásticos (Euler a, DPM2 a, DPM++ 2S a, variantes DPM++ SDE) inyectan ruido aleatorio en cada paso, así que la salida cambia en cada ejecución. (stable-diffusion-art.com)
¿Por qué los samplers con sufijo "a" no convergen?
La "a" significa ancestral. Estos samplers restan más ruido del que exige el schedule y añaden ruido aleatorio para compensar. Eso hace que cada paso dependa de muestras aleatorias previas e impide que la imagen se asiente en un punto fijo, incluso con muchos pasos. (stable-diffusion-art.com)
¿Cuántos pasos debo usar con DPM++ 2M Karras en SDXL?
El paper de DPM-Solver++ demuestra resultados de alta calidad en 15–20 pasos. Para SDXL, 20–30 pasos es un rango práctico. Más pasos dan rendimientos decrecientes cuando el schedule de ruido entra en la región de ruido bajo. (Lu et al., 2022)
¿Más pasos mejoran siempre el detalle en difusión latente?
Con samplers deterministas, más pasos reducen el error de truncamiento, lo que normalmente mejora la fidelidad, pero la ganancia se estanca. Con samplers estocásticos, los pasos extra no convergen: siguen cambiando la imagen. La forma del scheduler (por ejemplo, Karras) puede importar más que el número bruto de pasos. (stable-diffusion-art.com, Karras et al. (2022))
¿Cuándo debería usar DDIM en lugar de DPM++?
En la mayoría de casos, nunca. DDIM fue uno de los primeros samplers de difusión prácticos, pero hoy las variantes DPM-Solver++ lo superan en velocidad y calidad. (stable-diffusion-art.com) El único caso que queda es el de workflows que necesitan el schedule de ruido específico de DDIM (pasos uniformes).
¿Qué sampler y qué ajustes usa Flux?
Flux.1 dev usa Euler con el scheduler Simple y CFG 1.0. El guidance se ajusta aparte, en el nodo FluxGuidance (por defecto 3.5). Poner el CFG por encima de 1.0 produce imágenes lavadas porque Flux integra el classifier-free guidance en el modelo. (localaimaster.com, andreaskuhr.com)