Skip to content

Practical TL;DR of Samplers

Iteration Speed (How Long 1 Step Takes)

Relative Speed Samplers
1x euler, dpmpp_2m (and everything with <number>m in the name), most others
2x heun, dpm_2, dpmpp_sde, seeds_2, dpmpp_2s_ancestral, sa_solver_pece (and everything with 2s in the name)
3x heunpp, seeds_3, dpm_adaptive, anything with 3s in the name

For example, this means that in the same time that you run euler for 20 steps, it takes about the same time to run dpm_2 for 10 steps.

dpm_fast is a bit special; This sampler switches between the DPM-3, DPM-2, and DPM-1 algorithm in a way that the total amount of time spent is the same as euler if you set the same amount of steps. Each step may take differing amounts of time.

Samplers That Change Composition As You Increase Step Count

  • ddpm
  • restart
  • seeds
  • sa_solver(_pece)
  • Any sampler with ancestral (a) in the name
  • Any sampler with sde in the name

Generally, these samplers beat their non-composition-changing counterparts if you use higher step counts.

SDXL - What Works at Various Step Counts

Steps Works Well Usually Breaks
1-5 Training-based methods like lcm, lightning, hyper Everything else
6-15 Many (realistically, 6-10 steps will also leave very visible artifacts, but may occasionally be ok.) ipndm(_v), dpmpp_3m_sde, seeds_3
16-30 Mostly everything dpmpp_3m_sde may still leave artifacts
30+ High-order methods like ipndm(_v) / Stochastic methods like dpmpp_3m_sde -

But X Worked/Broke For Me!

These were tested on Amanatsu, a very stable eps-pred SDXL, on a few samples. You should see these only as general rules of thumb on what works in low / high step environments.
For example, most SDXL v-pred models require a ton more steps with any sampler, 20+ for only decent results in my experience.