Samplers e Schedulers no Stable Diffusion explicados
Escolha o sampler certo para SD1.5, SDXL e Flux — determinístico vs. estocástico, trade-offs de passos e configurações do scheduler.
On this page
- O que um sampler e um scheduler fazem de verdade
- Correção: o que LMS significa
- Determinístico vs. estocástico: o split fundamental
- A família DPM-Solver: o que cada nome significa
- Scheduler: Karras, Simple e a curva de ruído
- Recomendações por modelo
- Como a quantidade de passos interage com a escolha do sampler
- DDIM e PLMS: os originais
- Common Errors and Fixes
- FAQ
- Links internos
Samplers e Schedulers no Stable Diffusion explicados
TL;DR
- Cada sampler é determinístico (converge para uma imagem) ou estocástico (continua mudando com mais passos). Use determinístico para reprodutibilidade; use estocástico para variação criativa.
- O scheduler (schedule de ruído) controla quanta ruído o modelo remove em cada passo. A fórmula Karras concentra reduções menores no fim, melhorando detalhe — funciona com a maioria dos samplers modernos.
- Para SDXL, um bom ponto de partida é DPM++ 2M Karras com 20–30 passos e CFG 5–8. Para Flux, use Euler com scheduler Simple e CFG 1.0 (o guidance fica no nó FluxGuidance, ~3,5).
O que um sampler e um scheduler fazem de verdade
Em qualquer modelo de Stable Diffusion, a denoising começa com uma imagem latente aleatória. O ruído preditor estima o ruído em cada passo. O sampler subtrai ele — o algoritmo numérico que leva o latente da bagunça para uma imagem limpa. O scheduler especifica quanta ruído deveria restar em cada passo. Juntos eles formam a trajetória de denoising. (stable-diffusion-art.com)
Mais passos significam reduções de ruído menores entre passos, reduzindo o erro de truncamento. (stable-diffusion-art.com)
Correção: o que LMS significa
Uma referência popular expande LMS como Laplacian Pyramid Sampling. O nome real é Linear Multi-Step method — um solver de ODE padrão que usa o histórico de estimativas de derivada anteriores para melhorar a convergência. (stable-diffusion-art.com)
Determinístico vs. estocástico: o split fundamental
Samplers determinísticos
Euler é o sampler mais direto. Em cada passo ele subtrai o ruído multiplicado pelo schedule, seguindo uma trajetória ODE fixa. Com a mesma seed e quantidade de passos, Euler sempre gera a mesma imagem. (stable-diffusion-art.com) Esse comportamento determinístico também torna Heun (segundo ordem, duas vezes mais lento) e LMS (multi-step) previsíveis: eles convergem para uma saída estável à medida que aumenta a quantidade de passos. (stable-diffusion-art.com)
DPM++ 2M é uma variante multi-step da família DPM-Solver++. O "2M" significa two-step multi-step — usa a estimativa de denoising anterior para calcular o passo atual, convergindo mais rápido por avaliação de rede do que Euler puro. (Lu et al., 2022) A implementação k-diffusion confirma: sample_dpmpp_2m acompanha old_denoised ao longo dos passos e usa uma razão r para interpolar entre a previsão atual e a anterior.
Samplers estocásticos
Euler a (Euler ancestral) subtrai mais ruído do que o schedule exige, depois adiciona ruído aleatório para compensar. Cada passo depende de uma amostra aleatória específica, então o resultado muda a cada execução, mesmo com a mesma seed. (stable-diffusion-art.com) Os samplers ancestrais — aqueles com sufixo "a": Euler a, DPM2 a, DPM++ 2S a — nunca convergem: aumentar a quantidade de passos continua mudando a imagem em vez de estabilizá-la. (stable-diffusion-art.com)
DPM++ SDE e DPM++ 2M SDE pertencem à mesma classe estocástica, mas usam equações diferenciais estocásticas que injetam ruído de processo Wiener por um sampler de árvore Brownian. A implementação k-diffusion chama BrownianTreeNoiseSampler a cada passo e aplica um parâmetro eta que controla quanta SDE adicionar. Esses samplers não convergem e mostram resultados flutuantes conforme a quantidade de passos muda. (stable-diffusion-art.com)
Por que isso importa
Se você precisa de saída reprodutível — mesma seed, mesma imagem toda vez — use samplers determinísticos. Se quer variação criativa com um único prompt, samplers estocásticos entregam isso. O trade-off é convergência: samplers determinísticos se estabilizam com passos suficientes; os estocásticos não. (stable-diffusion-art.com)
A família DPM-Solver: o que cada nome significa
A linha DPM-Solver foi publicada por Lu et al. (2022) e melhorada em DPM-Solver++. As convenções de nome:
| Nome | Significado | Ordem | Velocidade vs Euler | Fonte |
|---|---|---|---|---|
| DPM2 | DPM-Solver ordem 2 | 2nd | ~2× mais lento (duas chamadas de rede por passo) | arXiv:2206.00927 |
| DPM2 a | DPM-Solver ordem 2, ancestral | 2nd | ~2× mais lento + estocástico | arXiv:2206.00927 |
| DPM Fast | DPM-Solver com tamanhos de passo uniformes | 1st | ~1× (uma chamada por passo) | arXiv:2206.00927 |
| DPM Adaptive | DPM-Solver com dimensionamento adaptativo de passo | 1st–3rd | Variável — ignora a contagem de passos | arXiv:2206.00927 |
| DPM++ 2M | DPM-Solver++ two-step multistep | 2nd | ~1× (reuso da avaliação anterior) | arXiv:2211.01095 |
| DPM++ 2M SDE | DPM++ 2M com ruído estocástico | 2nd | ~1× + estocástico | arXiv:2211.01095 |
| DPM++ 2S a | DPM-Solver++ two-step single-step ancestral | 2nd | ~2× + estocástico | arXiv:2211.01095 |
| DPM++ 3M SDE | DPM-Solver++ three-step multistep SDE | 3rd | ~1× + estocástico | arXiv:2211.01095 |
| DPM++ 2M SDE Heun | DPM++ 2M SDE usando Heun (midpoint) como substep | 2nd | ~1× + estocástico | arXiv:2211.01095 |
A biblioteca Hugging Face diffusers usa algorithm_type="dpmsolver++" por padrão e recomenda solver_order=2 para sampling guiado do Stable Diffusion. (diffusers source)
Scheduler: Karras, Simple e a curva de ruído
O scheduler determina a forma da curva de redução de ruído — quais níveis de ruído o modelo visita e em que ordem.
| Scheduler | O que faz | Quando usar | Fonte |
|---|---|---|---|
| Karras | Concentra passos no fim (baixo ruído), reduzindo erro de truncamento onde mais importa para o detalhe | A maioria dos samplers, a maioria dos modelos — o padrão seguro | arXiv:2206.00364 |
| Linear (padrão) | Níveis de ruído espaçados uniformemente do máximo a zero | Pipelines mais antigos; ainda funciona para muitos casos | — |
| Exponential | Tamanhos de passo decrescentes exponencialmente | Alguns workflows especializados; raramente o melhor padrão | — |
| Simple | Usado por modelos da família Flux | Sempre com Flux; não para SD1.5/SDXL | localaimaster.com |
| DDIM | Passos uniformes, usado especificamente pelo sampler DDIM | Apenas sampler DDIM | arXiv:2010.02502 |
| Beta | Schedule em forma de distribuição Beta | Nicho; ocasionalmente usado com DDIM | — |
Recomendações por modelo
SD 1.5
Para SD 1.5, a maioria dos samplers modernos funciona bem com 20–30 passos. A decisão principal é se você quer saída determinística ou estocástica.
| Caso de uso | Sampler | Passos | Scheduler | Notas | Fonte |
|---|---|---|---|---|---|
| Geral, reproduzível | DPM++ 2M Karras | 20–30 | Karras | Convergência rápida; amplamente usado | stable-diffusion-art.com |
| Geral, variado | DPM++ 2S a Karras | 20–30 | Karras | Estocástico; imagem diferente a cada execução | stable-diffusion-art.com |
| Pré-visualização rápida | Euler | 10–15 | Karras ou Linear | Simples, converge rapidamente | stable-diffusion-art.com |
| Qualidade a custo | Heun | 15–20 | Karras | 2× mais lento por passo devido à avaliação de segunda ordem | stable-diffusion-art.com |
| One-shot/mais rápido | UniPC | 5–15 | Karras | Alta qualidade em poucos passos | arXiv:2302.04867 |
SDXL
A arquitetura maior do SDXL se beneficia dos mesmos samplers, mas é mais sensível à quantidade de passos e às configurações CFG. O card do modelo Stable Diffusion XL da Stability AI recomenda a pipeline base+refiner com 40 passos e divisão de ruído 80/20. (SDXL model card)
Um ponto de partida prático para SDXL:
| Caso de uso | Sampler | Passos | CFG | Scheduler | Notas | Fonte |
|---|---|---|---|---|---|---|
| Qualidade equilibrada | DPM++ 2M Karras | 20–30 | 5–8 | Karras | Mais amplamente recomendado | stable-diffusion-art.com |
| Com refiner | DPM++ 2M Karras | 40 (80/20) | 5–7 | Karras | Corresponde ao exemplo da Stability AI | SDXL model card |
| Iteração rápida | Euler | 15–20 | 5–7 | Karras | Converge bem, ciclo de feedback rápido | stable-diffusion-art.com |
Flux
Flux usa rectified flow em vez do schedule de ruído de epsilon-prediction dos SD 1.5/SDXL. Isso muda completamente a escolha de sampler e scheduler. Como documentado no ComfyUI Flux workflow guide:
- Sampler: Euler
- Scheduler: Simple
- CFG: 1.0 (o guidance fica no nó FluxGuidance, padrão 3,5)
- Steps: 20 para Flux.1 dev
Definir CFG acima de 1.0 clareia a imagem porque Flux assa o guidance nos pesos do modelo, não no multiplicador CFG. (localaimaster.com) Múltiplos profissionais confirmam a configuração Euler/Simple/CFG-1.0 em Forge, ComfyUI e no guia sobre Flux em andreaskuhr.com.
Como a quantidade de passos interage com a escolha do sampler
Para samplers determinísticos, mais passos significam reduções de ruído menores entre passos, o que reduz o erro de truncamento e ajuda a imagem a convergir. (stable-diffusion-art.com) Para samplers estocásticos — qualquer um com sufixo "a" ou "SDE" no nome —, passos adicionais continuam introduzindo aleatoriedade. A imagem continua mudando. (stable-diffusion-art.com) O paper DPM-Solver mostra que DPM-Solver alcança 4,70 FID em CIFAR-10 em 10 avaliações de função, alcançando alta qualidade em 15–20 passos com DPM-Solver++ para amostragem guiada. (Lu et al., 2022)
DDIM e PLMS: os originais
DDIM (Song et al., 2020) foi um dos primeiros samplers práticos, alcançando aceleração de 10–50× sobre DDPM usando um processo reverso não-Markovian. PLMS (Pseudo Linear Multi-Step) saiu junto com ele na versão original do Stable Diffusion. Ambos são hoje considerados ultrapassados — o guia stable-diffusion-art.com os descreve como "generally seen as outdated and not widely used anymore". (stable-diffusion-art.com) Se você os usa por hábito, trocar para DPM++ 2M Karras entrega igual ou melhor qualidade com menos passos.
Common Errors and Fixes
| Sintoma | Causa provável | Correção |
|---|---|---|
| Image looks washed out with Flux | CFG set above 1.0 | Set KSampler CFG to 1.0; use FluxGuidance node for guidance |
| Image keeps changing with more steps | Using a stochastic sampler | Switch to a deterministic sampler (Euler, DPM++ 2M) |
| Artifacts or garbled output with Flux | DualCLIPLoader type set to SDXL | Change type to "flux" |
| Strange colors or high-contrast output | Wrong VAE selected | Use the model's native VAE (Flux: ae.safetensors) |
| Poor prompt adherence at low CFG with SDXL | CFG too low for the sampler | Raise CFG to 5–8, or switch to a sampler designed for lower CFG |
FAQ
What is the difference between deterministic and stochastic samplers?
Deterministic samplers (Euler, DPM++ 2M, Heun, LMS) follow a fixed ODE trajectory — given the same seed and settings, they always produce the same image. Stochastic samplers (Euler a, DPM2 a, DPM++ 2S a, DPM++ SDE variants) inject random noise at each step, so the output changes with every run. (stable-diffusion-art.com)
Why do samplers with an "a" suffix not converge?
The "a" stands for ancestral. These samplers subtract more noise than the schedule requires and add random noise back to compensate. This makes each step dependent on previous random samples, preventing the image from settling to a fixed point even at high step counts. (stable-diffusion-art.com)
How many steps should I use with DPM++ 2M Karras for SDXL?
The DPM-Solver++ paper demonstrates high-quality results in 15–20 steps. For SDXL, 20–30 steps is a practical range. More steps yield diminishing returns once the noise schedule reaches the low-noise region. (Lu et al., 2022)
Do higher steps always improve detail in latent diffusion?
For deterministic samplers, higher steps reduce truncation error, which generally improves fidelity — but the gains plateau. For stochastic samplers, additional steps do not converge; they keep changing the image. The scheduler shape (e.g., Karras) can matter more than raw step count. (stable-diffusion-art.com, Karras et al. (2022))
When should I use DDIM instead of DPM++?
In most cases, you should not. DDIM was one of the first practical diffusion samplers but is now outperformed by DPM-Solver++ variants in both speed and quality. (stable-diffusion-art.com) The main remaining use case is workflows that require the specific DDIM noise schedule (uniform steps).
What sampler and settings does Flux use?
Flux.1 dev uses Euler with the Simple scheduler at CFG 1.0. Guidance is set separately through the FluxGuidance node (default 3.5). Using CFG above 1.0 produces washed-out images because Flux bakes classifier-free guidance into the model. (localaimaster.com, andreaskuhr.com)