ArtificialGuyBR

Home / Blog / Prompting and control

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.

11 sources cited Prompting and control

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:

NombreSignificadoOrdenVelocidad vs EulerFonte
DPM2DPM-Solver orden 22º~2× más lento (dos llamadas de red por paso)arXiv:2206.00927
DPM2 aDPM-Solver orden 2, ancestral2º~2× más lento + estocásticoarXiv:2206.00927
DPM FastDPM-Solver con tamaños de paso uniformes1º~1× (una llamada por paso)arXiv:2206.00927
DPM AdaptiveDPM-Solver con tamaño de paso adaptativo1º–3ºVariable: ignora tu número de pasosarXiv:2206.00927
DPM++ 2MDPM-Solver++ two-step multistep2º~1× (reutiliza la evaluación previa)arXiv:2211.01095
DPM++ 2M SDEDPM++ 2M con ruido estocástico2º~1× + estocásticoarXiv:2211.01095
DPM++ 2S aDPM-Solver++ two-step single-step ancestral2º~2× + estocásticoarXiv:2211.01095
DPM++ 3M SDEDPM-Solver++ three-step multistep SDE3º~1× + estocásticoarXiv:2211.01095
DPM++ 2M SDE HeunDPM++ 2M SDE usando substep Heun (midpoint)2º~1× + estocásticoarXiv: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.

SchedulerQué haceCuándo usarloFonte
KarrasConcentra pasos cerca del final (ruido bajo) y reduce el error de truncamiento donde más importa para el detalleLa mayoría de samplers y modelos: el valor por defecto seguroarXiv:2206.00364
Linear (por defecto)Niveles de ruido espaciados de forma uniforme desde el máximo hasta ceroPipelines antiguos; sigue sirviendo en muchos casos—
ExponentialTamaños de paso que decaen exponencialmenteAlgunos workflows especializados; rara vez el mejor valor por defecto—
SimpleLo usan los modelos de la familia FluxSiempre con Flux; no para SD1.5/SDXLlocalaimaster.com
DDIMPasos uniformes, usado específicamente por el sampler DDIMSolo sampler DDIMarXiv:2010.02502
BetaSchedule con forma de distribución betaNicho; 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 usoSamplerPasosSchedulerNotasFonte
Uso general, reproducibleDPM++ 2M Karras20–30KarrasConvergencia rápida; muy usadostable-diffusion-art.com
Uso general, variadoDPM++ 2S a Karras20–30KarrasEstocástico; imagen distinta en cada ejecuciónstable-diffusion-art.com
Vista previa rápidaEuler10–15Karras o LinearSimple, converge rápidostable-diffusion-art.com
Calidad a cambio de tiempoHeun15–20Karras2× más lento por paso por la evaluación de segundo ordenstable-diffusion-art.com
One-shot / el más rápidoUniPC5–15KarrasAlta calidad en muy pocos pasosarXiv: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 usoSamplerPasosCFGSchedulerNotasFonte
Calidad equilibradaDPM++ 2M Karras20–305–8KarrasLa opción más recomendadastable-diffusion-art.com
Con refinerDPM++ 2M Karras40 (80/20)5–7KarrasCoincide con el ejemplo de Stability AISDXL model card
Iteración rápidaEuler15–205–7KarrasConverge bien, ciclo de feedback rápidostable-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íntomaCausa probableCorrección
La imagen se ve lavada con FluxCFG por encima de 1.0Pon el CFG del KSampler en 1.0; usa el nodo FluxGuidance para el guidance
La imagen sigue cambiando con más pasosEstás usando un sampler estocásticoCambia a un sampler determinista (Euler, DPM++ 2M)
Artefactos o salida corrupta con FluxTipo del DualCLIPLoader puesto en SDXLCambia el tipo a "flux"
Colores extraños o salida de alto contrasteVAE incorrecto seleccionadoUsa el VAE nativo del modelo (Flux: ae.safetensors)
Poca adherencia al prompt con CFG bajo en SDXLCFG demasiado bajo para el samplerSube 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)