Nodes/ComfyUI-WeightFerry/TORS Scheduler
ComfyUI Node

TORS Scheduler

A sigma table tuned for 10-step flow-matching sampling

By nyanmi-1828·Created 10 days ago·Updated 6 days ago· 1
TORS Scheduler
  • model
  • SIGMAS
◄steps10►
◄denoise1.00►

The schedule is half the image

Everyone tunes the sampler and forgets the scheduler, which is backwards. On a flow-matching DiT at 10–12 steps, where you put the steps matters as much as the solver eating them. Karras is tuned for a different family of models; simple is fine and boring; beta57 out of RES4LYF became the community pick for painterly anime output. TORS is a fourth answer with a paper behind it.

TORS comes from Zhou et al., ECCV 2026 (arXiv:2603.00763), and the pack implements it as a precomputed sigma table rather than the official .pth schedule files - worth knowing, because it means the numbers here are the author's reimplementation of the paper's formulation, not a copy of the reference schedules. Table entries exist for 4–12, 14, 15, 16, 20, 25 and 30 steps; anything else is interpolated from the 30-step curve. The original code is zju-pi/TORS if you want to audit.

What it's for: fast sampling. The suggested step count from the tooltip is 10–12, which tells you where the schedule is designed to do its work. At 30 steps you're outside its sweet spot - the interpolation will still produce something valid, but you've paid for steps the schedule was built to avoid.

How it works

Two ways to use it. As a node: give it steps and denoise and it emits a SIGMAS tensor for a custom-sampling graph. As a dropdown entry: loading the pack registers tors in KSampler's scheduler list, so you can pick it and forget it. The sigma table runs from 1.0 to 0.0 for flow matching, and if you connect the optional model input, the whole schedule gets scaled to that model's sigma_max so it behaves on models that don't start at 1.0.

Inputs and outputs

  • steps (default 10, range 4–50) - the step count the table was solved for. This isn't a hint, it's the input to a lookup. 10–12 is where the schedule is convincing.
  • denoise (default 1.0) - how much of the schedule to use. Below 1.0 the schedule starts partway in, which is what you want for an upscale or detail pass rather than a fresh generation.
  • model (optional) - connect it to scale the sigmas to that model's sigma_max. If your model's noise scale isn't 1.0 and you leave this unconnected, your schedule will be off in a subtle, hard-to-see way.

One output, SIGMAS, into the sigmas slot of SamplerCustomAdvanced - pair it with any SAMPLER output, including this pack's ReAL Sampler, or with euler via SamplerCustom.

Install

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

Manager → WeightFerry → install → restart works too. Nothing to pip install, no model files. The node lands in WeightFerry/sampling and the tors entry appears in KSampler's scheduler dropdown once the pack loads. NVIDIA, ComfyUI 0.38.0+.

Where it goes wrong

Picking tors in KSampler and getting a different result than the node gives you. The dropdown path runs the same sigma function with the same step count, so they should agree - but the dropdown path can't see your denoise, and if you're doing a partial denoise pass the node path is the one that respects it. For upscale and detail passes, use the node.

Using it as a drop-in replacement at 25–30 steps and concluding it's bad. It's a fast-sampling schedule. At high step counts you've got more steps than the table provides for most values and you're on an interpolated curve; you'd get similar-or-better from beta or kl_optimal. Judge it at 10–12 steps, which is what it's for.

Comparing schedules at fixed steps. Same trap as samplers, but worse. A scheduler's whole job is redistributing where the steps land, so at a fixed step count you're comparing two different schedules' convergence - which is the point - but you'll be tempted to read every difference as quality. Compare at matched detail, not matched steps.

Leaving model unconnected on a non-standard model. Flow-matching models nominally run 1.0 → 0.0, but not all do in ComfyUI's hands. The optional input exists precisely for this. It's free to connect; connect it.

Expecting community consensus. TORS has essentially no Reddit footprint - people say "beta57" in the same breath as "Karras", nobody says "tors". This is a research implementation from a one-person pack, not a community default. If it happens to give you a nicer 10-step image, great; that's your result, not a movement.

CategoryWeightFerry/sampling

Inputs (3)

NameTypeDefaultDescription
stepsINT104–50Sampling steps (suggested 10-12)
denoiseFLOAT1.000–1Denoise (1.0 = full generation, below 1.0 = start part way, e.g. for upscaling)
modeloptMODELOptional: connect to scale the schedule to the model's sigma_max

Outputs (1)

NameTypeDescription
SIGMASSIGMAS—