DiTCondLabelEmpty
DiTCondLabelEmpty
- model
- empty
DiT doesn't take text prompts - it takes class labels, one of the 1000 ImageNet categories, and that's the entire vocabulary it understands (see DiTCondLabelSelect for the node that picks one). Classifier-free guidance still needs something in the negative slot to steer away from, the same way text-to-image models use an empty string there. DiT can't take an empty string, because it doesn't read strings at all - so this pack ships a dedicated node whose entire job is producing that "nothing" conditioning in a format DiT actually understands: an unconditional/null class embedding, not a real ImageNet category.
It's a tiny node doing an important, easy-to-skip job. The pack's own README doesn't mince words about it: "Make sure to use the Empty label conditioning for the Negative input of the KSampler!" - emphasis theirs. Skip it, or accidentally wire a real class label into the negative slot instead, and your CFG guidance is steering toward or away from the wrong thing, which shows up as generally worse, less coherent output rather than an obvious error.
Inputs. One, required: model - the DiT model you loaded via DitCheckpointLoader. That's it; there's no label to pick and no text to type, because this node's whole purpose is producing the absence of a label.
Output. empty, typed as CONDITIONING. Wire it straight into your KSampler's negative conditioning input.
Where it fits. DitCheckpointLoader → model, then that model feeds both DiTCondLabelSelect (your positive, real class) and this node (your negative, empty class) in parallel. Both conditioning outputs go to the KSampler alongside an SD1.5-shaped empty latent - DiT shares SD1.5's latent space, so no special VAE or latent node is needed here, unlike Sana's setup elsewhere in this pack.
Installing the pack. ComfyUI Manager: search "Extra Models for ComfyUI." Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/city96/ComfyUI_ExtraModels
then pip install -r requirements.txt and restart.
Why this needs its own node instead of just being a default. In text-conditioned models, "empty" just means an empty string - trivial to express, no dedicated node required. DiT's conditioning space is a fixed set of class embeddings with no natural "blank" entry, so producing a genuinely unconditional embedding takes actual model-specific logic rather than a UI convention. That's the whole reason this exists as a separate node instead of a default value on a dropdown.
One thing worth remembering if your DiT outputs look muddy or generically wrong - not garbled, just unconvincing - double check this node is actually wired to negative and not accidentally left disconnected or swapped with the positive DiTCondLabelSelect output. It's an easy mistake to make once, and DiT's failure mode here is subtle rather than a hard crash, so it can sit unnoticed for a while.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| empty | CONDITIONING | — |