TCDScheduler
The scheduler your TCD or Hyper-SD LoRA was trained on
- model
- SIGMAS
You slapped a TCD or Hyper-SD speed LoRA on your favorite checkpoint, dialed steps down to 8, and got a blurry mess instead of a quick preview. Before you blame the LoRA, check the scheduler. Distilled models are trained against a specific noise schedule, and ComfyUI doesn't ship TCD's - which is exactly the hole this node fills.
TCDScheduler is the scheduler half of the dfl/comfyui-tcd-scheduler pack, which implements Zheng et al.'s Trajectory Consistency Distillation (the TCD paper, for SD 1.5 and SDXL). It sits in the Custom Sampler category alongside the pack's two sampler nodes. If you've ever reached for LCM to get 4–10 step generations, TCD is the same family of trick: the distilled student model jumps down its denoising trajectory in a few big strides instead of the usual 20–50 small ones.
How it works
The node takes your loaded model and a step count, then hands the model's own model_sampling object to ComfyUI's calculate_sigmas with a ddim_uniform schedule. That bit is the whole trick: the sigma-to-timestep mapping lives in the checkpoint, so the schedule is computed per-model rather than hardcoded. The output is a SIGMAS tensor that matches the noise levels the distilled LoRA was trained to denoise at. Feed it anything else and the model sees noise amounts it never practiced on - which is the usual cause of those artifacted results.
The inputs that matter
Only two, and only one you'll actually touch:
- model (MODEL) - the checkpoint, with your speed LoRA loaded. No LoRA, no point; this scheduler does nothing special on a vanilla model.
- steps (INT, default 8, min 1, max 10000) - the real knob. Match it to your LoRA's trained step count. TCD LoRAs want roughly 4–10; Hyper-SD's unified LoRA is happy around 8. More steps does not mean better here - it means steps the model wasn't trained for.
The output is SIGMAS, which wires into the sigmas input of a SamplerCustom node - that's how the shipped example workflow is laid out. This is only half the custom sampler, though: you also need the pack's sampler node feeding the sampler input, or the scheduler has nothing to denoise with.
Installing it
Through ComfyUI Manager, search ComfyUI-TCD-scheduler and hit install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/dfl/comfyui-tcd-scheduler
Then restart ComfyUI. That's genuinely it - there's no requirements.txt and no pip dependencies; the pack only imports ComfyUI's own sampler internals, torch, and tqdm. It also downloads no model files. The "model" it needs is the TCD or Hyper-SD LoRA you already have, loaded like any other LoRA.
Where people get burned
- Pair it with
SamplerTCD Euler A, notSamplerTCD. The plainSamplerTCDnode is a work-in-progress that the author explicitly says to skip. The Euler A variant is the finished one. - Keep CFG low. Distilled models bake guidance into the weights; CFG 7 gives oversaturated garbage. Drop to 1–2.
- Respect the step count. A 4-step LoRA run at 20 steps doesn't refine, it breaks.
TCD had its moment in 2024 and the momentum moved to Lightning and the newer Turbo models, but if you own TCD LoRAs - or Hyper-SD's unified LoRA, which expects a TCD-style schedule - this node is still the way to make them behave.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| steps | INT | 81–10000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |