SamplerTaylorFlow
The sampler that remembers its past steps
- SAMPLER
Most samplers treat every step as if it's the first time they've seen the latent: evaluate the model, take a step, forget everything. TaylorFlow is the exception - it keeps a rolling memory of previous (sigma, denoised) pairs and uses that history to reconstruct higher-order derivatives for free. One model evaluation per step, but the accuracy of a much fancier solver. If you're on Chroma, FLUX, or SD3 and want better detail at the same step count, this is the first sampler from this pack I'd actually reach for.
It's a direct implementation of "Leveraging Previous Steps: A Training-free Fast Solver for Flow Diffusion" (Nov 2024). Same trick the paper uses: instead of burning extra model calls to estimate a higher-order term, you re-use the denoised predictions you already computed. The pack registers it as taylor_flow both in this node and in the standard KSampler dropdown, so you can use it without the node if you prefer.
How it works
At each step the sampler does one model evaluation at the current state, then:
- Builds a Vandermonde matrix from the sigmas in your history buffer.
- Solves for Taylor coefficients that predict the latent at the next sigma.
- Applies a plain Euler step plus a correction term assembled from the cached predictions.
- Injects ancestral noise as usual.
The heavier math is handled in float64 for numerical stability (this is where hand-rolled samplers usually fall over - the author didn't), and the solver falls back to a least-squares solve if the regularized system goes singular. Flow-matching models are detected automatically and get the flow-style update, so you don't need a separate ModelSampling node to make it behave on Chroma.
The inputs that matter
There are four, and a beginner really only tunes two:
order(1–16, default 8) - how many previous steps the Taylor expansion reuses. Higher = more accurate in theory, more history and more math. Default 8 is a fine place to start; drop it to 4 if you're low on memory or want faster steps.eta(default 1.0) - ancestral stochasticity.0= fully deterministic, same seed gives the same image.1.0= the full noise injection the author tuned for.s_noise(default 1.0) - global scaling of that injected noise. Leave it.sigma_calc(defaultclyb) - how the ancestralsigma_down/sigma_uppair is computed. The defaultclybis the author's own logarithmic scheme;ancestralis the standard k-diffusionget_ancestral_step, which is useful if you want behavior directly comparable to stock Euler-a.adaptivewatches the variance of your denoised history and adds less noise when things are converging.
Wiring it in
The output is a SAMPLER object. Feed it into the sampler input of a KSampler (or any custom-sampling node that takes one):
SamplerTaylorFlow(order=8, eta=1.0, sigma_calc="clyb") → KSampler(sampler=…)
Installing
Same story as the rest of this pack - pure code, no dependencies:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/Clybius/ComfyUI-ClybsChromaNodes.git
# restart ComfyUI
Or install via ComfyUI Manager by searching "ComfyUI-ClybsChromaNodes". No model downloads; the pack is by Clybius, the Chroma-GGUF maintainer, and targets Lodestone Rock's Chroma plus FLUX/SD3-class flow models.
Common issues
The usual sampler debugging discipline applies: eta = 0 for A/B tests, keep every other variable fixed, and compare against Euler on the same seed before blaming the sampler. One genuine gotcha - if you pick adaptive as your sigma_calc, it needs at least two steps of history before it kicks in, so the first step or two fall back to the clyb scheme. Not a bug, just math you should know about.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| order | INT | 81–16 | Taylor expansion order (1-16). Higher = more accurate but uses more history |
| eta | FLOAT | 1.000–100 | Ancestral sampling stochasticity (0=deterministic, 1=full stochastic) |
| s_noise | FLOAT | 1.000–100 | Noise scaling factor |
| sigma_calc | COMBO | clyb | Ancestral sigma calculation method: clyb (original log-based), taylor-expansion (exponential+quadratic), ancestral (standard k-diffusion), adaptive (history-based convergence-aware) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |