TK3R Scheduled CFG Guider
Per-step CFG, from a comma-separated list
- model
- positive
- negative
- guider
- schedule
- normalized_schedule
Most CFG work is a single number for the whole sample, which is wrong in the same way one exposure is wrong for a whole photo. High CFG early locks in prompt adherence; high CFG late burns detail and saturation. TK3R Scheduled CFG Guider lets you write out the exact CFG you want at each stage: "3.0, 2.0, 1.5, 1.0" means "3 for the first chunk, fading through 2 and 1.5, down to 1 at the end." The node interpolates that list across the sample and applies the right value at each step.
It's the more explicit sibling of the CFG Sigma Interpolate in the same pack - that one takes two endpoints and blends; this one takes an arbitrary list and schedules it. If you've ever looked at a "dynamic CFG" workflow and wished you could just type the values, this is that.
How it works
The cfg_schedule string is parsed into floats, and if interpolate_steps is above 0 the list is linearly interpolated out to exactly that many steps. The guider then subclasses ComfyUI's CFGGuider and, each step, figures out which range of the sampler's sigma schedule the current sigma falls in and uses the matching CFG value. The author's own notes have the practical tips baked in: the schedule is interpolated over the set amount of steps, and if you want something like an exponential curve you just repeat the values - "3, 3, 3, 2, 1.5, 1" will approximate one.
Inputs and outputs
- model, positive, negative - standard guider inputs.
- cfg_schedule - comma-separated floats, default
"3.0, 2.0, 1.5, 1.0". - interpolate_steps - 0 (use the list as-is, mapping each value to a step segment) or a step count to stretch/interpolate the list to.
Outputs:
- guider - wires into a sampler node that accepts a
GUIDER, likeSamplerCustomAdvanced. - schedule - the CFG schedule as sigmas-typed data, mainly for info/debugging.
- normalized_schedule - the schedule normalized to 0–1, which the author suggests feeding to a graph node to compare against the sigma schedule on models whose sigmas run 1.0 → 0.0. Useful if you're checking how your CFG curve lines up with the actual denoising trajectory.
Installing
Part of the TK3R Extensions pack:
- ComfyUI Manager → search "TK3R Extensions" → Install, then restart.
- Or
cd ComfyUI/custom_nodes && git clone https://github.com/TK3R/ComfyUI_TK3R_Extand restart.
Only dependency is rich; no models.
Where it bites
Wiring, again: it's a GUIDER, not a model wrapper, so it doesn't plug into KSampler's model port - use SamplerCustomAdvanced. And match the schedule to your model family. A descending schedule is built for models that want CFG and benefit from a fade. On a guidance-distilled model that runs at CFG 1 by design, writing "8, 4, 1" is asking for overcooked output at double the render time. Also note the interpolation behavior: with interpolate_steps at 0 and four values, each value governs a quarter of the steps - keep that in mind if your step count doesn't divide evenly.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| cfg_schedule | STRING | 3.0, 2.0, 1.5, 1.0 | — |
| interpolate_steps | INT | 00–1000 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| guider | GUIDER | — |
| schedule | SIGMAS | — |
| normalized_schedule | SIGMAS | — |