Nodes/ComfyUI/SamplerDPMPP_SDE
ComfyUI Node Runs on cloud

SamplerDPMPP_SDE

The plain SDE — where DPM++ meets full stochastic sampling

By Comfy-Org·Created 4 years ago·Updated 6 minutes ago· 129,910
SamplerDPMPP_SDE
    • SAMPLER
    eta1.00
    s_noise1.00
    r0.50
    noise_device

    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.
    • SAMPLER output.

    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 eta to 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.

    Categorymodel/sampling/samplers

    Inputs (4)

    NameTypeDefaultDescription
    etaFLOAT1.000–100
    s_noiseFLOAT1.000–100
    rFLOAT0.500–100
    noise_deviceCOMBO2 options: gpu, cpu

    Outputs (1)

    NameTypeDescription
    SAMPLERSAMPLER