Nodes/ComfyUI/SamplerSASolver
ComfyUI Node Runs on cloud

SamplerSASolver

The few-step solver ComfyUI now ships with (and the name clash that came along)

By Comfy-Org·Created 4 years ago·Updated 26 minutes ago· 129,909
SamplerSASolver
  • model
  • SAMPLER
eta1.00
sde_start_percent0.200
sde_end_percent0.800
s_noise1.00
predictor_order3
corrector_order4
use_pece
simple_order_2

Here's the thing nobody tells you about this node: you may already have it, no install required. SA-Solver, a NeurIPS 2023 stochastic Adams predictor-corrector sampler, got merged into ComfyUI core, and the SamplerSASolver in your stock node menu is that core node. This page is filed under the mira-6/comfyui-sasolver pack because the pack also defines a node with the exact same class name - but with different inputs - and on modern ComfyUI the core version wins the name. So before you install anything, check whether the node is already sitting in your sampler list.

What it actually is

SA-Solver (paper: arXiv 2309.05019) is a high-order solver built for low step counts. Instead of stepping forward blindly like Euler, it keeps a history of previous denoised latents, fits a polynomial through them (an Adams-Bashforth predictor), then refines with an implicit Adams-Moulton corrector. That memory is why it can get to good quality in 10-20 steps where Euler wants 30-50. The eta parameter adds controlled stochasticity on top - it's a dial between a deterministic ODE (eta 0, fully reproducible) and an ancestral sampler. Community usage skews toward flow-matching models: it's a common pick for Qwen-Image (roughly cfg 2.4 at 20 steps) and it's the sampler people reach for on distilled Wan 2.2 merges, often paired with the beta scheduler.

The inputs that matter

Wire a MODEL in, set a few things, get a SAMPLER out. That output feeds the sampler socket on a custom-sampling node like KSamplerCustom or SamplerCustomAdvanced.

  • eta - stochastic strength. 1.0 is the default and a fine start; drop toward 0 for more deterministic, reproducible output.
  • sde_start_percent / sde_end_percent (0.2 / 0.8) - the window across the denoise range where that stochasticity is active. If eta is 0 they do nothing.
  • s_noise - multiplier on the injected noise. 1.0 is the sane default; raise it for more variation.
  • predictor_order (3) / corrector_order (4) - how many history points the polynomial uses. Higher means more accurate but more compute and VRAM. The defaults are already well-chosen; leave them alone.
  • use_pece - off by default (plain PEC). Flipping it on adds the extra Evaluate pass (PECE), which usually buys a bit of quality per step at the cost of speed.
  • simple_order_2 - forces a simpler second-order scheme. Mostly useful when higher-order steps misbehave on very low step counts.

Install

On a recent ComfyUI this is built in - there is nothing to install. If you want the pack's extras (its SMEA/Dy modes and the experimental renoise node), grab it via ComfyUI Manager → search "comfyui-sasolver", or:

cd ComfyUI/custom_nodes
git clone https://github.com/mira-6/comfyui-sasolver

Then restart ComfyUI. No requirements.txt, no model downloads, no pip step - it's pure Python riding on libraries ComfyUI already ships. As installs go, this one is as painless as it gets.

Where people get burned

  • The name clash. On modern ComfyUI the core node wins the SamplerSASolver name, and the pack's own version (which had pc_mode, smea and dyn knobs) never registers. If a workflow you downloaded expects those extra inputs and they're missing, that's exactly why.
  • The pack monkeypatches the underlying sampler functions when it loads. Its version of sample_sa_solver doesn't accept the core node's use_pece / simple_order_2 / s_noise arguments, so with the pack installed, the core node can throw a TypeError at generation time. If that happens, disable the pack - the core node runs fine without it.
  • Duplicate sampler names. The pack appends sa_solver and sa_solver_pece to the sampler dropdown even though core already ships them, so you can see them listed twice.

If your goal is just "SA-Solver, fewer steps," you probably don't need this pack at all. If you want the experimental stuff - renoise, SMEA/Dy, latent inversion - that's the pack's other node, SamplerSASolverExperimental.

Categorymodel/sampling/samplers

Inputs (9)

NameTypeDefaultDescription
modelMODEL
etaFLOAT1.000–10
sde_start_percentFLOAT0.2000–1
sde_end_percentFLOAT0.8000–1
s_noiseFLOAT1.000–100
predictor_orderINT31–6
corrector_orderINT40–6
use_peceBOOLEAN
simple_order_2BOOLEAN

Outputs (1)

NameTypeDescription
SAMPLERSAMPLER