Set ELLA Timesteps
Set ELLA Timesteps — the alignment step you can't skip
- model
- ella
- sigmas
- ELLA
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
MODELyou'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
ELLAobject fromLoad ELLA Model. - scheduler - pick the scheduler you'll use in KSampler. This is where people get burned: set Karras here and
simplein the sampler and the alignment quietly drifts. - steps and denoise - again, must match the KSampler. If you use
denoisebelow 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_noiseis enabled on aSamplerCustom, and lower thecfg. 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
dtypetoFP32. - 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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ella | ELLA | — | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| steps | INT | 201–10000 | — |
| denoise | FLOAT | 1.000–1 | — |
| sigmasopt | SIGMAS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ELLA | ELLA | — |