SamplerDPMPP_SDE
The plain SDE — where DPM++ meets full stochastic sampling
- SAMPLER
DPM++ SDE is the original stochastic member of the DPM++ family - no "2M," no "3M," no "2S," just the plain SDE solver with noise injected at every step. Where the M variants bolt stochastic noise onto a multistep predictor, this one is the straightforward SDE formulation of DPM++: it treats the denoising trajectory as a stochastic differential equation and integrates it with fresh noise throughout, giving you the ancestral-style character (texture, grain, never-quite-reproducible) without any of the multistep machinery.
If the family tree reads as confusing, here's the short version: 2M/3M are the multistep workhorses, 2S is the single-step speedster, and this one is the pure stochastic option - the one that leans hardest into the "extra texture" promise of SDE sampling. For a long stretch of the SDXL era, "DPM++ SDE" (or its Karras-scheduled form) was a common recommendation for photoreal and organic subjects where the extra grain reads as detail.
How it works
The node exposes the stochastic side plus one parameter the others don't have:
eta(FLOAT, 0–100, default 1.0) - stochastic strength; 0 = deterministic ODE.s_noise(FLOAT, 0–100, default 1.0) - noise multiplier.r(FLOAT, 0–100, default 0.5) - an internal step-ratio parameter that shapes how the SDE step is composed. The default 0.5 is what the reference implementation uses; you almost never need to touch it.noise_device(COMBO:gpu/cpu) - offload the noise tensor to system RAM when VRAM is tight. The one-click OOM relief.SAMPLERoutput.
When to reach for it
On SD 1.5/SDXL at 20–35 steps it's a solid "texture-first" choice, often alongside Euler a in the ancestral corner of the sampler picker. The honest note for current work: on flow-matching models the community lands on Euler-family with conservative schedules, and the SDE members are tolerated-but-not-default there - the schedule (Karras/exponential) is what actually breaks. If you want reproducibility, this is the wrong node; every run re-rolls noise.
Common issues
- Same seed, different image - always. It's an SDE sampler; that's the contract. Drop
etato 0 if you need determinism. - "Why is mine grainier than the screenshot?" That's the SDE texture. If you wanted the clean converged look, pick 2M or 3M instead - this is the option for grain.
- Touching
r. It's a real parameter, but it's tuned for the reference implementation; wandering it without a model card telling you otherwise is a fast way to get odd results.
It's the most "pure stochastic" of the DPM++ family - great for texture, wrong for reproducibility, and a nice complement to the multistep samplers when you want the same family's grainier side.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| eta | FLOAT | 1.000–100 | — |
| s_noise | FLOAT | 1.000–100 | — |
| r | FLOAT | 0.500–100 | — |
| noise_device | COMBO | 2 options: gpu, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |