Nodes/ComfyUI-ELLA/Set ELLA Timesteps
ComfyUI Node

Set ELLA Timesteps

Set ELLA Timesteps — the alignment step you can't skip

By TencentQQGYLab·Created 2 years ago·Updated 2 years ago· 382
Set ELLA Timesteps
  • model
  • ella
  • sigmas
  • ELLA
scheduler
steps20
denoise1.00

This is the node everyone skips first, and it's the reason their ELLA images come out wrong. ELLA's connector isn't a static text encoder - it's the Timestep-Aware Semantic Connector (TSC), which re-computes its semantic features at every single sampling step, conditioned on the current timestep. That means the conditioning it produces only lines up with your sampler if you give it the same timesteps your KSampler is using. Get that wrong and the whole pipeline is sampling against a different schedule than the one that produced the conditioning.

Set ELLA Timesteps exists to fix exactly that. It computes the sigmas (and from them the timesteps) for your chosen scheduler, step count, and denoise - the same math a BasicScheduler does - and injects them into the ELLA object so every downstream node knows what schedule you're on.

Inputs that matter

  • model - the same MODEL you're about to sample with. It has to match, because the pack reads the model's sampling config to convert sigmas into timesteps.
  • ella - the ELLA object from Load ELLA Model.
  • scheduler - pick the scheduler you'll use in KSampler. This is where people get burned: set Karras here and simple in the sampler and the alignment quietly drifts.
  • steps and denoise - again, must match the KSampler. If you use denoise below 1.0, the node back-computes the full step count and slices the tail of the sigma schedule, so a partial-denoise img2img pass still lines up.

The optional sigmas input is the "trust the source" path: if you already have SIGMAS from a BasicScheduler node (or anywhere else), plug them in and the node uses those instead, ignoring the scheduler/steps/denoise widgets. Handy when the rest of your graph is already scheduler-driven.

Output is the same ELLA object, now carrying its timesteps. Feed it to ELLA Encode or ELLA Text Encode.

The one-node path

Modern ELLA workflows are basically this chain, with Set ELLA Timesteps in the middle where it belongs:

Load ELLA Model → Set ELLA Timesteps → T5 Text Encode #ELLA → ELLA Encode → KSampler
                                  (same scheduler/steps/denoise as the KSampler)

If the rest of that chain throws timesteps are required but not provided, use the 'Set ELLA Timesteps' node first., it means you wired ELLA Encode (or ELLA Text Encode) straight off Load ELLA Model and skipped this node. Add it.

Troubleshooting

  • Dark images with AYS (Align Your Steps) - a known combo with ELLA. The README's fix, from issue #39: make sure add_noise is enabled on a SamplerCustom, and lower the cfg. AYS gives more visual detail and better text alignment with ELLA, but it's the pairing most likely to output near-black garbage when misconfigured.
  • "not implemented for 'Half'" - an fp16 kernel error, not really this node's fault. Set the T5 loader's dtype to FP32.
  • Unexpected quality at the end of sampling - the #1 cause is a mismatch between what you set here and what the sampler uses. Copy the scheduler/steps/denoise values over literally; don't trust "close enough."

Install is the pack install (ComfyUI Manager, or clone TencentQQGYLab/ComfyUI-ELLA into custom_nodes, pip install -r requirements.txt), plus the ELLA model in models/ella and FLAN-T5 XL in models/ella_encoder.

Categoryella/helper

Inputs (6)

NameTypeDefaultDescription
modelMODEL
ellaELLA
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
stepsINT201–10000
denoiseFLOAT1.000–1
sigmasoptSIGMAS

Outputs (1)

NameTypeDescription
ELLAELLA