SamplerDPMAdaptative_motorway_edition
The adaptive DPM sampler on the bus — let the solver pick the steps
- MOTORWAY 🚌💨
- MOTORWAY 🚌💨
Most samplers work by taking a fixed number of steps and spacing them out. SamplerDPMAdaptative is the odd one out: it's an adaptive differential-equation solver, the kind a numerical methods course would recognize, and it decides its own step count. Instead of "20 steps, do your thing," you give it error tolerances and it keeps taking steps until each one's local error is small enough. The output is a SAMPLER object you feed into a custom sampling chain.
That's the appeal and the trap in one. It can produce beautiful results because it spends steps where the solution actually needs them - but you can't control the total step count, and it's measurably slower than the fixed-step samplers. You use it when you care about quality per unit of error, not when you're timing a batch.
The widgets (there are a lot)
Every knob is a widget; none are read from the bus. The ones that matter:
order(2–3, default 3) - solver order. 3 is the default and usually the right answer.rtol/atol(defaults 0.05 / 0.0078) - the relative and absolute error tolerances. This is the whole game: tighter tolerances = more steps = better quality = slower. Loosen them and the solver gets lazy.h_init(default 0.05) - initial step size; the solver adapts from there.pcoeff/icoeff/dcoeff(defaults 0 / 1 / 0) - PID controller coefficients for step-size control. The defaults are the sane starting point; touch these only if you know what PID control is.accept_safety(default 0.81) - the acceptance threshold for a step. Lower it and the solver rejects more steps, effectively refining.eta(default 0) - stochasticity; 0 is deterministic, higher adds SDE noise.s_noise(default 1) - noise scale multiplier whenetais above 0.OUTPUT_SAMPLER_key(defaultSAMPLER) - where the sampler object is parked on the bus.
The MOTORWAY 🚌💨 input is optional, so the node can sit at the end of a bus chain or start one.
Install
No dependencies, no models:
cd ComfyUI/custom_nodes
git clone https://github.com/agilly1989/ComfyUI_agilly1989_motorway
or ComfyUI Manager → search ComfyUI_agilly1989_motorway → install → restart.
The fine print
The pack is a beta project - "IF THINGS BREAK ITS BECAUSE I BROKE IT" is the README's opening - and the _motorway_edition clones were auto-generated by a cloner that build 1.1.7 removed. Fresh installs may not include this node; the stock SamplerDPMAdaptative in core does the same job.
The bus error is the standard KeyError: 'hash_...' doesn't exist in motorway, and for a widget-only node that's almost always a downstream sampler chain looking for the wrong key name.
The real advice stands apart from the bus entirely: if you can't predict your runtime because the step count is decided for you, that's the adaptive sampler working as designed. If you're on a guidance-distilled model or just want consistent timing, a fixed-step sampler with a Karras or model schedule is the more predictable tool. Reach for this one when you want the solver to earn its keep on quality.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| order | INT | 32–3 | — |
| rtol | FLOAT | 0.050–100 | — |
| atol | FLOAT | 0.010–100 | — |
| h_init | FLOAT | 0.050–100 | — |
| pcoeff | FLOAT | 0.000–100 | — |
| icoeff | FLOAT | 1.000–100 | — |
| dcoeff | FLOAT | 0.000–100 | — |
| accept_safety | FLOAT | 0.810–100 | — |
| eta | FLOAT | 0.000–100 | — |
| s_noise | FLOAT | 1.000–100 | — |
| OUTPUT_SAMPLER_key | STRING | SAMPLER | — |
| MOTORWAY 🚌💨opt | MOTORWAY 🚌💨 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTORWAY 🚌💨 | MOTORWAY 🚌💨 | — |