Nodes/ComfyUI-SA-ODE_Sampler/SA-ODE LowStep Sampler
ComfyUI Node

SA-ODE LowStep Sampler

Six steps and one toggle

By WangDianhui·Created 11 months ago·Updated 11 months ago· 1
SA-ODE LowStep Sampler
    • SAMPLER
    use_taylor_restorationfalse

    This is the SA-ODE pack's headline act: the "ultra-efficient flow matching sampler" the README brags about, wrapped as a SAMPLER node. It's built for the low-step world - think 4-8 steps on a flow-matching model like Wan 2.2 or Flux - and it's the sampler in the author's own example workflow, which is a Wan 2.2 video graph. If you're sampling a flow-matching model cheaply and want a plain, converging, no-surprises sampler, this is the one to start with in this pack.

    It's also a refreshingly honest product: one input, one toggle, done. No solver order, no thresholds, no smoothing. That's the whole appeal.

    How it works

    The mechanism, straight from the source, is Euler integration over the velocity field. A flow-matching model doesn't predict noise - it predicts a velocity along a near-straight path from noise to image. At each step the sampler computes velocity = (x - x0) / sigma and advances x += velocity * dt. That's it. Because the trajectory is nearly straight, a handful of these large jumps gets you to a clean image.

    The one toggle, use_taylor_restoration (default off), changes only the final step. When the last sigma hits zero, the default behavior just snaps to the model's clean prediction x0. With the toggle on, the sampler instead runs a third-order Taylor restoration using the last three buffered velocities:

    x = x0 + v0*dt + v1*dt^2/2 + v2*dt^3/6
    

    In plain terms: it extrapolates the motion of the last few steps forward into the final jump, which tends to sharpen the last bit of detail. Off is the safe, slightly softer look; on is where you flip if six-step output comes out too smooth or a touch blurry. Expect the two settings not to match seed-for-seed - they genuinely compute different final steps, so that's not a bug.

    Inputs and outputs

    Just the one input:

    • use_taylor_restoration (BOOLEAN, default false) - final-step sharpening, as above.

    The output is SAMPLER, which plugs into the sampler input of CustomSampler or SamplerCustom. For the sigmas, pair it with this pack's LowStepSigmaScheduler, or any schedule that suits your model. Note the pack also registers sa_ode_lowstep as a sampler name in the stock KSampler dropdown - same algorithm, no node required.

    Because it's a converging (non-ancestral) sampler, it behaves like Euler: same seed, same steps, same result, and extra steps refine rather than shuffle. That makes it a decent tool for seed-farming experiments - cheap, deterministic, comparable.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/WangDianhui/ComfyUI-SA-ODE_Sampler
    

    Then restart ComfyUI, or search "SA-ODE" in ComfyUI Manager. There are no extra dependencies - no requirements.txt, no model downloads. The pack is two small Python files that lean on torch and ComfyUI internals only.

    Where people get burned

    Straight talk: this pack has one GitHub star and hasn't been updated since October 2025. It works, but it's a two-day project that nobody maintains, and it monkey-patches into ComfyUI's sampler internals to register its names, so a ComfyUI update could break it with no one around to fix it.

    A couple of practical notes. First, the 6-step default is a floor for experimentation, not a guarantee - on some models you'll want 8-10, and it's cheap either way. Second, this is a flow-matching sampler; on a DDPM-style checkpoint (SDXL and its finetunes) the low-step approach won't behave the way it does on Wan or Flux. And if you crank it below 4 steps and the result falls apart, that's not a bug in the sampler - that's asking a straight-line walker to teleport.

    Categorysampling/custom

    Inputs (1)

    NameTypeDefaultDescription
    use_taylor_restorationBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    SAMPLERSAMPLER