ComfyUI Node

PCHIP Scheduler

The same idea, minus the wiggles

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
PCHIP Scheduler
    • SIGMAS
    steps8
    custom_points1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875

    This is the sibling of the pack's From Points scheduler, and the difference is one word in the name: PCHIP. It takes the same idea - you type a comma-separated list of sigmas and it interpolates a full denoising schedule through them - but it uses a piecewise cubic Hermite interpolating polynomial instead of a plain curve fit. What that buys you is monotonicity: the interpolated curve never overshoots or undershoots between your points.

    Why monotonic matters

    A plain spline through points can ring - overshoot above a plateau, dip below a floor - which for a sigma schedule means noise levels that jump around instead of smoothly descending. Your points say "start high, stay high, then fall," and a naive fit quietly adds a bump where you didn't draw one. PCHIP is the interpolation method that refuses to do that: between the points you give it, the curve stays between them, always descending where your points descend. For a schedule where you've deliberately shaped a plateau or a cliff, that faithfulness is the entire appeal. It's a known technique from the scientific-computing world (the same PCHIP you'd find in scipy) applied to the narrow problem of drawing denoise curves.

    The inputs

    Same shape as its sibling: steps (default 8, up to 2000 here - the PCHIP variant allows a longer schedule) and custom_points, a comma-separated sigma list defaulting to the same 1.0, 0.99375, 0.9875, ... low-step curve. Output is a single SIGMAS feed for a custom sampling chain (ModelSampling → this → SamplerCustom). Same companions as the whole family: connect UC_SigmaRescale for image-to-image start-noise control, UC_DiscardPenultimateSigma if your sampler needs it.

    When to pick PCHIP over From Points

    If your points are smooth and your model is happy, the two are close enough that it barely matters - pick whichever and move on. If you're drawing an aggressive shape - steep cliffs, flat plateaus, big jumps - PCHIP is the version that honors what you typed instead of inventing oscillations around it. That's the honest one-liner: From Points for sketching, PCHIP when the sketch is sharp and you need it to stay sharp.

    Install

    Ships in ComfyUI-UtilsCollection:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
    

    Restart, or install via ComfyUI Manager (search "UtilsCollection"). No models; the pack's opencv-python requirement auto-installs.

    Gotchas

    It registers under the core-compatible ID sigma_curve_pchip as well, so it can show up in Core's scheduler selector dropdowns alongside this standalone node. And the standing pack-level reminder applies to both curve schedulers: this pack migrated (and replaced) the standalone scheduler packs, so remove ComfyUI_SigmoidOffsetScheduler and ComfyUI_PowerShiftScheduler if you still have them, or you'll hit duplicate-node prompts. Finally - reshaped schedules are a tool, not a default; on straight flow-matching trajectories aggressive curves can do more harm than good, so test the curve you drew before you adopt it.

    Categorysampling/custom_sampling/schedulers

    Inputs (2)

    NameTypeDefaultDescription
    stepsINT81–2000
    custom_pointsoptSTRING1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875Comma-separated points that shape the denoising schedule.

    Outputs (1)

    NameTypeDescription
    SIGMASSIGMASFor I2I, connect Sigma Rescale. If required, connect Discard Penultimate Sigma.