Nodes/ComfyUI-MoreEfficientSamplers/CFG Float List Scheduler
ComfyUI Node

CFG Float List Scheduler

A float-list generator for per-step guidance schedules

By GiusTex·Created 9 months ago·Updated 2 days ago· 4
CFG Float List Scheduler
    • float_list
    steps30
    cfg_scale_start5.00
    cfg_scale_end5.00
    interpolationlinear
    start_percent0.00
    end_percent1.00

    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.

    CategoryMore Efficient Samplers

    Inputs (6)

    NameTypeDefaultDescription
    stepsINT302–1000Number of steps to schedule cfg for
    cfg_scale_startFLOAT5.000–30CFG scale to use for the steps
    cfg_scale_endFLOAT5.000–30CFG scale to use for the steps
    interpolationCOMBOlinearInterpolation method to use for the cfg scale
    start_percentFLOAT0.000–1Start percent of the steps to apply cfg
    end_percentFLOAT1.000–1End percent of the steps to apply cfg

    Outputs (1)

    NameTypeDescription
    float_listFLOAT