ComfyUI Node

SamplerTaylorFlow

The sampler that remembers its past steps

By Clybius·Created about a year ago·Updated about a month ago· 13
SamplerTaylorFlow
    • SAMPLER
    order8
    eta1.00
    s_noise1.00
    sigma_calcclyb

    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:

    1. Builds a Vandermonde matrix from the sigmas in your history buffer.
    2. Solves for Taylor coefficients that predict the latent at the next sigma.
    3. Applies a plain Euler step plus a correction term assembled from the cached predictions.
    4. 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 (default clyb) - how the ancestral sigma_down/sigma_up pair is computed. The default clyb is the author's own logarithmic scheme; ancestral is the standard k-diffusion get_ancestral_step, which is useful if you want behavior directly comparable to stock Euler-a. adaptive watches 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.

    Categorysampling/custom_sampling/samplers

    Inputs (4)

    NameTypeDefaultDescription
    orderINT81–16Taylor expansion order (1-16). Higher = more accurate but uses more history
    etaFLOAT1.000–100Ancestral sampling stochasticity (0=deterministic, 1=full stochastic)
    s_noiseFLOAT1.000–100Noise scaling factor
    sigma_calcCOMBOclybAncestral sigma calculation method: clyb (original log-based), taylor-expansion (exponential+quadratic), ancestral (standard k-diffusion), adaptive (history-based convergence-aware)

    Outputs (1)

    NameTypeDescription
    SAMPLERSAMPLER