Nodes/ComfyUI-WeightFerry/CFG Early-Stop
ComfyUI Node

CFG Early-Stop

Drop the negative branch for the last third and halve those steps' model calls

By nyanmi-1828·Created 10 days ago·Updated 7 days ago· 1
CFG Early-Stop
  • model
  • MODEL
◄early_stop_percent0.65►
◄decay_modehard_stop►

The cheapest speed knob in diffusion, and the one with the most visible cost

Every CFG step runs the model twice - once with your positive prompt, once with the negative. That's the tax. CFG Early-Stop says: the composition is already decided by step 20 of 30, so stop paying for the negative branch. From early_stop_percent onward, CFG drops to 1.0, which means one model call per step instead of two.

The author's measurement, on an Anima workflow of base image + face detail + Ultimate SD Upscale+: bypassing this node on every pass makes the image about 27% slower. That's a big number for one node, and it's why this is the first speed node I'd try on a small card.

The cost is real too, and the author doesn't hide it: the last steps run without the negative prompt, so the image changes slightly. On anime models this usually means less of the negative's influence on things that resolve late - stray detail, hands, background cruft. Sometimes that's fine. Sometimes you'll get exactly the artifact your negative prompt was there to prevent, and you won't know which step it crept in at.

Reach for it when you're VRAM-starved and time-starved, which on a 6–8GB card is the same thing. Anima wants 30–50 steps at CFG 4–5, and at those settings the second model call is roughly half your wall clock.

How it works

It wraps the model's predict-noise path and reads the current sampling progress. Below the threshold it does nothing at all. Above it, it either hard-cuts CFG to 1.0 (hard_stop) or walks it down to 1.0 smoothly (linear_decay). Because it hooks predict-noise, it doesn't care which sampler or scheduler you're using - including the pack's own ReAL and TORS, and any KSampler in the graph.

Inputs and outputs

  • model - straight from the model loader, the streaming node, or a LoRA chain.
  • early_stop_percent (default 0.65) - fraction of sampling that keeps full CFG. The tooltip spells the trade: at 0.65 you get normal CFG for the first 65% and CFG 1.0 for the rest, "which halves those steps' model calls".
  • decay_mode - hard_stop (default) drops to 1.0 the instant the threshold hits; linear_decay slides down instead, which is gentler and costs a little more time.

One output, model. In practice it goes between your streaming node and the sampler: UNET loader → LoRAs → ⚡ DiT Layer Streaming → CFG Early-Stop → KSampler. If your workflow has more than one sampling pass - a face detail, an upscale - give each pass its own copy fed from the same upstream model, or the later passes run full CFG and you leave most of the win on the table.

Install

Manager → WeightFerry → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/nyanmi-1828/ComfyUI-WeightFerry

Zero extra dependencies. NVIDIA GPU, ComfyUI 0.38.0+. The node appears under WeightFerry/speed, alongside TaylorSeer.

Where it goes wrong

You can't tell if it "worked". There's no output printout and no visual tell in the console. The only test is comparing a bypassed run against an active run at the same seed - Ctrl+B the node, generate, un-bypass, generate, and look at the last-step detail rather than the composition, which shouldn't move at all.

Pushing the threshold too low. Set early_stop_percent to 0.3 and you've disabled your negative prompt for most of the sampling. At that point you should just author positive-only prompts at CFG 1 and stop pretending. If a low threshold starts producing smeared detail or blown highlights, that's the mechanism, not a bug.

Turbo / few-step models. A distilled 6–8 step model at CFG 1 already runs one branch. This node does precisely nothing there - it only touches steps where both branches would run. Don't waste a slot in the chain; wire it into the CFG-heavy passes only.

Stacking it with TaylorSeer and expecting the effects to multiply without checking. The author's own measurements note that TaylorSeer plus CFG early-stop is the point where prototype ideas like TGATE stopped being worth it - the base stopped getting faster. If you're stacking three acceleration nodes and speed has plateaued, that's why. Remove one and measure again.

Also worth knowing: every quantitative claim here comes from a single RTX 4060 with a specific Anima workflow. Your 27% might be 15% or 35% depending on step count and CFG. Measure it yourself with two timed runs, because it's cheap to measure and the answer is machine-specific.

CategoryWeightFerry/speed

Inputs (3)

NameTypeDefaultDescription
modelMODEL—
early_stop_percentFLOAT0.650–1Fraction of the sampling with normal CFG (0.65 = CFG for the first 65%, CFG 1.0 for the rest, which halves those steps' model calls)
decay_modeCOMBOhard_stophard_stop: CFG 1.0 as soon as the threshold is reached (fastest). linear_decay: decays smoothly to 1.0

Outputs (1)

NameTypeDescription
MODELMODEL—