Nodes/DARASK Nodes/DARASK Anima Step Cache (Spectrum)
ComfyUI Node

DARASK Anima Step Cache (Spectrum)

The ~1.5x speedup Anima users keep quiet about

By daraskme·Created 4 months ago·Updated 3 months ago· 1
DARASK Anima Step Cache (Spectrum)
  • model
  • MODEL
  • info
total_steps30
prediction_weight0.25
polynomial_degree6
regularization0.50
window_size2
flex_window0.00
warmup_steps6
stop_caching_at0.90

Anima is a 2B model that somehow still takes over a minute on a 4060 - the community accepts this as the price of prompt adherence (see the Anima ecosystem guide). So the fastest real speedup most Anima users never configure is step caching: don't run the UNet every step, and predict the skipped steps from the ones you did run. That's exactly what this node does, and it's a port of the "Spectrum" algorithm from Forge Classic Neo and comfyui-spectrum-sdxl. Same math, no Forge required, drop it in your ComfyUI graph.

How it works

At its core it's a set_model_unet_function_wrapper that wraps UNet calls. It keeps a rolling buffer of the last K (timestep, output) pairs and, on the steps it decides to skip, extrapolates the next output by fitting a Chebyshev polynomial with ridge regression - blended with a plain Taylor (linear) extrapolation by default. window_size of 2 means one real model call every two steps, so you roughly halve the UNet work; the 30–50% speedup the README claims is in that ballpark.

The quality guard is the schedule. The first warmup_steps run for real (so the polynomial has data), and the last (1 − stop_caching_at) of the schedule runs for real too (so the final denoise is clean). total_steps only exists to place those cutoffs proportionally - it doesn't change your sampler's actual step count.

Inputs that matter

  • model - wire your MODEL through this, then out to the sampler.
  • window_size (default 2) - how aggressively to skip. 2 is the sane starting point; cranking it costs visible quality.
  • prediction_weight (default 0.25) - 0 is pure Taylor, 1 is pure polynomial. If you see artifacts, the fastest diagnostic is dropping this to 0.
  • polynomial_degree (6) - higher captures more curvature, slower.
  • warmup_steps (6) - keep it ≥ degree+1, so 7+ at the default degree, or the node falls back to Taylor and logs a warning.

Outputs: the patched MODEL and an info readout.

Install and pairing

Same DARASK pack install as the rest - Manager, search DARASK, restart. No models to download. The recommended chain from the README:

Loader → DARASK Anima Sampling Tuner (shift=5, TSR on)
       → DARASK Anima Step Cache (window=2, warmup=6)
       → KSampler

Gotchas

Two real ones. First, set_model_unet_function_wrapper is a single slot - this node won't coexist with another wrapper like TeaCache. Bypass one or the other. Second, the sandstorm checklist: if you get mosaic output, check the Sampling Tuner's shift_multiplier is 0 (auto) before blaming the cache, then try prediction_weight = 0. Bypass the cache entirely to confirm the node is even the problem - it's designed to be easy to A/B.

The one workflow detail that bites people: this node (and the tuner) throw a clear error if the model input is None, which happens when your Lora Loader upsteam silently passes through an unconnected model socket. Make sure the wire from your loader actually lands on the model input.

CategoryDARASK

Inputs (9)

NameTypeDefaultDescription
modelMODEL
total_stepsINT301–1000Total sampler steps — used only to schedule warmup/stop cutoffs proportionally.
prediction_weightFLOAT0.250–10 = pure Taylor (linear) extrapolation. 0.25 = blend 25% Chebyshev polynomial (Forge Spectrum default). 1 = pure polynomial.
polynomial_degreeINT61–8Chebyshev poly order. Higher = captures more curvature, slower.
regularizationFLOAT0.500–5Ridge λ. Higher = smoother / more stable, less responsive.
window_sizeINT21–10Run the real model on every Nth step. 2 → skip every other step.
flex_windowFLOAT0.000–2Window growth per real-model run — accelerates further into the schedule.
warmup_stepsINT60–50Run the model for real this many steps before caching kicks in.
stop_caching_atFLOAT0.900–1Run real model for the last (1 − x) of the schedule for clean denoising.

Outputs (2)

NameTypeDescription
MODELMODEL
infoSTRING