Nodes/ComfyUI-AccelDiff/AccelDiff Unified
ComfyUI Node

AccelDiff Unified

One node, ten acceleration tricks — AccelDiff Unified cuts sampling without retraining

By jiajianxie·Created 3 months ago·Updated 2 months ago· 3
AccelDiff Unified
  • model
  • sampler
  • model
◄sampler_methodNone►
◄model_methodNone►
◄sampler_name▾►
◄max_skip_steps4►
◄threshold0.010►
◄ec_threshold0.025►
◄ret_steps5►
◄lagrange_term3►
◄lagrange_int4►
◄lagrange_step20►
◄max_interval4►
◄acc_start10►
◄acc_end47►
◄teacache_model_typewan2.1_t2v_1.3B_ret_mode►
◄rel_l1_thresh0.40►
◄start_percent0.00►
◄end_percent1.00►
◄cache_devicecuda►
◄magcache_model_typewan2.1_t2v_1.3B►
◄magcache_thresh0.06►
◄retention_ratio0.20►
◄magcache_K2►
◄start_step0►
◄end_step-1►
◄taylorseer_model_typeflux►
◄max_order1►
◄fresh_threshold6►
◄first_enhance3►
◄hicache_model_typeflux►
◄hicache_prediction_modehicache►
◄hicache_max_order1►
◄hicache_fresh_threshold6►
◄hicache_first_enhance3►
◄hicache_scale_factor0.70►
◄seacache_model_typeflux►
◄seacache_thresh0.30►
◄seacache_power_exp2.0►
◄seacache_ret_steps1►
◄tcpade_model_typewan2.1►
◄tcpade_start_step4►
◄tcpade_end_step-1►
◄tcpade_interval8►
◄tcpade_n_threshold1.4►
◄tcpade_predictor_order3►
◄tcpade_history_size6►
◄tcpade_cache_devicecuda►
◄zeus_denominator3►
◄zeus_modular0,1►
◄zeus_acc_start10►
◄zeus_acc_end45►
◄zeus_interp_modepsi►
◄zeus_caching_modereuse_interp►
◄zeus_max_interval4►
◄zeus_lagrange_term3►
◄zeus_lagrange_int6►
◄zeus_lagrange_step24►

AccelDiff Unified is the kind of node that makes you do a double take: one node, ten published diffusion-acceleration methods, and none of them require you to retrain, fine-tune, or download a single new weight. It's the flagship of the jiajianxie/ComfyUI-AccelDiff pack, released in June 2025 and expanded the same month from four methods to ten. If you've been staring at Wan or Flux renders crawl by, this is aimed at you.

The idea behind it

Diffusion sampling is wasteful. Neighboring timesteps compute nearly identical things, and a whole family of "training-free" methods exploits that redundancy without touching the model weights. That's a different bet than distillation (LCM, Lightning LoRAs), which bakes fewer steps into the model itself and costs you a separate LoRA plus real quality. Training-free acceleration keeps your exact model and just skips or cheapens redundant computation. The tradeoff is still there - you're buying speed with approximation - but you can dial it per render.

The pack splits those methods into two families, and the node lets you use either one or stack both:

  • Sampler-level (AdaptiveDiff, EasyCache, SADA, ZEUS): reuse or approximate the predicted noise across timesteps, so whole steps get skipped. These produce a SAMPLER.
  • Model-level (TeaCache, MagCache, TaylorSeer, HiCache, SeaCache, TC-Pade): wrap the model and cache intermediate features - attention maps, transformer block outputs - inside it, so each remaining step costs less.

TeaCache is the one you've probably already met; it's a staple of Wan video workflows, where it's good for a solid chunk of runtime on longer clips. MagCache and the rest are newer papers that made it in during that June 2025 update.

How the node actually works

Under the hood it's a dispatcher, not a magic engine. Two dropdowns - sampler_method and model_method, both defaulting to None - pick your method, and the node imports the matching implementation and wraps it for you. The genuinely clever part is the frontend. The pack ships js/mine.js, which redraws the node live: it hides every parameter widget that doesn't apply to your selection, shows the model input slot only when you've picked a model method, and reveals sampler_name only when you've picked a sampler method. Without that you'd be staring at roughly fifty widgets, most of them irrelevant.

The inputs and outputs that matter

You really only touch a handful of fields, depending on which side you enable:

  • sampler_method / model_method - the two dropdowns. Set one, the other, or both.
  • sampler_name - the base sampler (euler, dpmpp_2m, …) your chosen sampler wrapper drives. Only appears for sampler methods. Note that ddim isn't supported and silently maps to euler.
  • The threshold knobs - TeaCache's rel_l1_thresh, EasyCache's ec_threshold, MagCache's magcache_thresh. This is your quality/speed dial: lower is conservative, higher is faster but risks artifacts.
  • The *_model_type dropdowns (e.g. teacache_model_type, magcache_model_type) - these must match your actual model architecture (flux, wan2.1_t2v_1.3B, hunyuan_video, …). Get this wrong and the caching heuristics behave badly.

Two outputs: sampler and model. Wire the SAMPLER into a KSampler's sampler input, and/or pass the MODEL between your checkpoint loader and the KSampler. Combined acceleration looks like:

[Loader] --model--> [AccelDiff Unified] --model--> [KSampler]
                                     \--sampler-------> [KSampler]

Installing it

Two ways, both standard. ComfyUI Manager, searching for ComfyUI-AccelDiff, is the easy route. Or manually:

cd ComfyUI/custom_nodes/
git clone https://github.com/jiajianxie/ComfyUI-AccelDiff
cd ComfyUI-AccelDiff
pip install -r requirements.txt

Then restart ComfyUI. The dependency list is blessedly light - torch>=2.1.0, scipy, einops, numpy, tqdm - and there are no model files to download. Everything is pure Python over whatever model you already have. Python >= 3.10 is required.

Where people get burned

  • Wrong model type. The *_model_type dropdowns have defaults tuned for specific models, and the defaults differ per method (TeaCache defaults to a Wan ret-mode, MagCache to plain Wan, the newer methods to flux). If your render looks off or the speedup never shows, this is the first thing to check.
  • Pushing thresholds too far. Every method's docs give you a range; past the aggressive end you get blur, ghosting, or temporal flicker - especially on video. Start conservative, then creep up.
  • Mixing up the output pins. sampler goes to KSampler's sampler input; model goes inline between loader and KSampler. They're not interchangeable, and a sampler method does not need a model hooked into this node at all.
  • Expecting magic on image models. These methods shine on video, where redundancy between steps is huge. On a 20-step SDXL render you might save seconds; on an 81-frame Wan clip you save minutes.

One honest caveat: this pack is new and genuinely obscure - essentially zero community chatter, so you're working from the README and the per-method docs (which are surprisingly thorough, each with tuning guides and the paper reference). That's fine for a tool this focused, but don't expect a fleet of YouTube tutorials to bail you out.

CategoryAccelDiff

Inputs (57)

NameTypeDefaultDescription
sampler_methodCOMBONone5 options: None, AdaptiveDiff, EasyCache, SADA, ZEUS
model_methodCOMBONone7 options: None, TeaCache, MagCache, TaylorSeer, HiCache, SeaCache, +1
sampler_nameoptCOMBO16 options: euler, heun, heunpp2, dpm_2, lms, dpm_fast, +10
modeloptMODEL—
max_skip_stepsoptINT40–10—
thresholdoptFLOAT0.0100–1—
ec_thresholdoptFLOAT0.0250–1—
ret_stepsoptINT50–100—
lagrange_termoptINT30–5—
lagrange_intoptINT41–20—
lagrange_stepoptINT205–100—
max_intervaloptINT41–20—
acc_startoptINT100–100—
acc_endoptINT47-100–200—
teacache_model_typeoptCOMBOwan2.1_t2v_1.3B_ret_mode16 options: flux, flux-kontext, ltxv, lumina_2, hunyuan_video, hidream_i1_full, +10
rel_l1_threshoptFLOAT0.400–10—
start_percentoptFLOAT0.000–1—
end_percentoptFLOAT1.000–1—
cache_deviceoptCOMBOcuda2 options: cuda, cpu
magcache_model_typeoptCOMBOwan2.1_t2v_1.3B12 options: flux, flux_kontext, chroma, qwen_image, hunyuan_video, hunyuan_video1.5, +6
magcache_threshoptFLOAT0.060–0.3—
retention_ratiooptFLOAT0.200.1–0.3—
magcache_KoptINT20–6—
start_stepoptINT00–100—
end_stepoptINT-1-100–100—
taylorseer_model_typeoptCOMBOflux4 options: flux, hunyuan_video, wan2.1, hidream
max_orderoptINT10–4—
fresh_thresholdoptINT62–20—
first_enhanceoptINT31–10—
hicache_model_typeoptCOMBOflux4 options: flux, hunyuan_video, wan2.1, hidream
hicache_prediction_modeoptCOMBOhicache2 options: hicache, taylor_scaled
hicache_max_orderoptINT10–4—
hicache_fresh_thresholdoptINT62–20—
hicache_first_enhanceoptINT31–10—
hicache_scale_factoroptFLOAT0.700.01–2—
seacache_model_typeoptCOMBOflux3 options: flux, hunyuan_video, wan2.1
seacache_threshoptFLOAT0.300–2—
seacache_power_expoptFLOAT2.01–5—
seacache_ret_stepsoptINT10–10—
tcpade_model_typeoptCOMBOwan2.12 options: flux, wan2.1
tcpade_start_stepoptINT40–100—
tcpade_end_stepoptINT-1-1–200—
tcpade_intervaloptINT81–100—
tcpade_n_thresholdoptFLOAT1.40–5—
tcpade_predictor_orderoptINT31–4—
tcpade_history_sizeoptINT63–12—
tcpade_cache_deviceoptCOMBOcuda2 options: cuda, cpu
zeus_denominatoroptINT32–6—
zeus_modularoptSTRING0,1—
zeus_acc_startoptINT100–100—
zeus_acc_endoptINT45-100–200—
zeus_interp_modeoptCOMBOpsi2 options: psi, x_0
zeus_caching_modeoptCOMBOreuse_interp3 options: reuse_interp, interp_all, reuse_all
zeus_max_intervaloptINT41–20—
zeus_lagrange_termoptINT30–5—
zeus_lagrange_intoptINT61–20—
zeus_lagrange_stepoptINT245–100—

Outputs (2)

NameTypeDescription
samplerSAMPLER—
modelMODEL—