CFG Float List Scheduler
A float-list generator for per-step guidance schedules
- float_list
Most samplers run one CFG value for the entire generation. Sometimes you don't want that. On video models especially - Wan 2.x is the classic case - you often want a strong CFG early, while the model is deciding composition, then less before the end so the frames don't come out overcooked. CFGFloatListScheduler is the tiny helper that makes that possible: it outputs a list of floats, one CFG value per step, interpolating from cfg_scale_start to cfg_scale_end across only part of the sampling range. Everything outside that range sits at 1.0. It's taken wholesale from Kijai's WanVideo-Wrapper, which is a good sign - that's the well-trodden reference implementation for Wan workflows.
Why you'd reach for it
If you've never felt the need to change CFG mid-generation, this node isn't for you. It exists for the video crowd: speed LoRAs like LightX want CFG at 1.0 in the later steps, and the "high CFG at first steps" trick needs a schedule rather than a fixed value. The default settings are a flat 5→5 over the whole range, which is basically a static CFG 5 - you'd change cfg_scale_start to something like 7-8, leave cfg_scale_end around 3-4, and let it ramp down. Nothing about this is in the stock sampler, so this is how you get there.
How it works
It builds a Python list of length steps, fills every entry with 1.0, then overwrites the window between start_percent and end_percent of the steps with your interpolated values. Three interpolation curves: linear, ease_in (starts flat, accelerates), and ease_out (starts fast, decelerates). One quirk worth knowing: if start_percent is above 0, the first step is forced back to 1.0, so a mid-schedule window doesn't accidentally bleed an early high-CFG value into the very first step.
Inputs and output
Everything's a number widget, and they're all self-explanatory thanks to the tooltips: steps (how many CFG values to generate), cfg_scale_start and cfg_scale_end (the range), interpolation, and start_percent / end_percent (the window of steps where the schedule is active). The single output, float_list, is typed FLOAT, and that's the neat bit - it's a list where ComfyUI expects a scalar. That only works because the thing you're wiring it into knows to accept lists. Concretely: plug it into the cfg input of this pack's ScheduledCfgGuider, which is designed for exactly this. Don't expect to jam it into a stock node's CFG widget; it won't take it.
Install
Shared with the whole pack - ComfyUI Manager (search "ComfyUI-MoreEfficientSamplers"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/GiusTex/ComfyUI-MoreEfficientSamplers.git
Restart ComfyUI. No dependencies, no models, nothing to download.
Troubleshooting
Count mismatches are the one real failure mode. If your steps here doesn't match the number of steps the sampler actually runs, the guider has to reconcile them - it prints a message and slices or pads the list. So the honest advice is: decide your step count once, set it in both places, and don't fight the node. Also remember the scope: this schedules CFG, not sigmas. If you wanted the denoising schedule itself to change over time, that's a scheduler's job, not this node's.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 302–1000 | Number of steps to schedule cfg for |
| cfg_scale_start | FLOAT | 5.000–30 | CFG scale to use for the steps |
| cfg_scale_end | FLOAT | 5.000–30 | CFG scale to use for the steps |
| interpolation | COMBO | linear | Interpolation method to use for the cfg scale |
| start_percent | FLOAT | 0.000–1 | Start percent of the steps to apply cfg |
| end_percent | FLOAT | 1.000–1 | End percent of the steps to apply cfg |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| float_list | FLOAT | — |