Nodes/ComfyUI_Step1X-Edit/Step1X-Edit TeaCache Model Loader (2x faster)
ComfyUI Node

Step1X-Edit TeaCache Model Loader (2x faster)

The Step1X-Edit loader with one extra knob that buys you 2x

By raykindle·Created about a year ago·Updated about a year ago· 50
Step1X-Edit TeaCache Model Loader (2x faster)
    • model
    diffusion_modelstep1x-edit-i1258-FP8.safetensors
    vaevae.safetensors
    text_encoderQwen2.5-VL-7B-Instruct
    dtypebfloat16
    quantizedtrue
    offloadfalse
    teacache_threshold0.6
    verbosefalse

    This is the loader you actually want. Everything the plain Step1X-Edit Model Loader does - pulling together the FP8 diffusion model, the VAE, and Qwen2.5-VL-7B as the text encoder - happens here too, but it also wraps the DiT in a TeaCache accelerator and hands you the one knob that controls the whole speed/quality tradeoff. The README's recommendation is blunt: at the default threshold this gets you ~2x faster generation with minimal quality loss. For a model this slow, that's the difference between "I'll try one more edit" and "I'll batch a dozen."

    The "2x faster" in the display name is doing a lot of work, though. The honest framing from the README's own table is a ladder: threshold 0.25 ≈ 1.5x, 0.4 ≈ 1.8x, 0.6 ≈ 2x (recommended), 0.8 ≈ 2.25x. The extra 0.25x at the top end is where the "minimal quality loss" starts getting harder to believe.

    How it works

    Same bundle as the plain loader, with one difference: the DiT is swapped for Step1XEditWithTeaCache, which measures how much the model's input actually changes between denoising steps and reuses the previous computed residual whenever the accumulated change stays under the threshold. The first and last steps are always computed in full - that's where the visible image is decided, so it never gets skipped. verbose just prints which steps were cached to your console; it's a debugging aid, not a feature you'll leave on.

    The inputs

    The first six are the plain loader's set - diffusion_model, vae, text_encoder, dtype (bfloat16 default), quantized (true default, leave it on - these are FP8 weights), offload (false default; flip it on if you're under ~24GB). Then the two additions:

    • teacache_threshold - the speed/quality dial, pick from 0.25 / 0.4 / 0.6 / 0.8. Start at 0.6. Drop to 0.25 for maximum fidelity when an edit matters; push to 0.8 when you're iterating quickly and the edit is forgiving.
    • verbose - print per-step cache decisions to the console. Great for learning how the cache behaves, mildly annoying the rest of the time.

    Output is a single model wire - but it's a different bundle type than the plain loader's, so feed it into Step1X-Edit TeaCache Generate, not the plain generate node. Mixing them up is the #1 way this pack bites: the TeaCache generate calls reset_teacache() on the bundle, and the plain bundle doesn't have it, so the mismatch fails loudly.

    Installing

    Identical to the plain loader - clone the pack into custom_nodes, pip install -r requirements.txt, then install flash-attn via the utils/get_flash_attn.py helper (it's required by the DiT and missing from requirements.txt), and place the three model files in their models/ folders. ComfyUI Manager finds the pack if you search "Step1X-Edit". See the Step1X-Edit Model Loader article for the full rundown, including the triton/liger_kernel conflict and the 31.5GB-peak-VRAM reality - the cache speeds up generation but doesn't shrink memory, so offload and quantized stay your tools for fitting it on a consumer card.

    Troubleshooting

    Edits suddenly looking soft or half-applied? Your threshold is too high for that prompt - drop it a notch and rerun. Getting full speed regardless of threshold? Confirm you paired this loader with the TeaCache generate node; if the plain generate is on the other end, the cache never engages. And if the console spam from verbose tells you every step is being computed fresh, check the threshold actually landed where you set it.

    CategoryStep1X-Edit

    Inputs (8)

    NameTypeDefaultDescription
    diffusion_modelCOMBOstep1x-edit-i1258-FP8.safetensors0 options:
    vaeCOMBOvae.safetensors0 options:
    text_encoderCOMBOQwen2.5-VL-7B-Instruct1 options: put_text_encoder_files_here
    dtypeCOMBObfloat163 options: bfloat16, float16, float32
    quantizedBOOLEANtrue
    offloadBOOLEANfalse
    teacache_thresholdCOMBO0.64 options: 0.25, 0.4, 0.6, 0.8
    verboseBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    modelMODEL