Krea Layer Variance
Rotate the conditioning, not the seed
- conditioning
- conditioning
If you've generated a batch of Krea 2 images from one prompt and gotten back five near-identical pictures, you already know the problem this node exists for. Randomizing the sampler seed barely moves the needle on Krea 2, because a 12B DiT conditioned on the same text embedding will land in the same neighborhood every time. KreaLayerVarianceMXD attacks it from the conditioning side instead: it takes the text embedding itself, applies a small seeded rotation inside each text-encoder layer, and only lets that variation act during the first quarter of sampling.
How it works
Krea 2's text encoder is Qwen3-VL, and Krea pools features across its layers rather than reading only the last one - the technical report calls it multilayer feature aggregation. In practice that means one token's conditioning is a single long vector, 30720 floats for Krea 2: 12 layers times 2560. That shape is exactly what this node is built around. It reshapes the 30720-dim vector into 12 separate 2560-dim layer blocks, generates a seeded random direction inside each one, orthogonalizes that noise against the original embedding so the length (norm) is preserved, and rotates each layer block by strength degrees toward it. Norm-preserving is the point: you're nudging where the embedding points, not how loud it is.
The rotation only touches active tokens - the node reads the attention_mask out of the conditioning metadata and leaves padded tokens alone - and it's wrapped so it only applies during the first 25% of the sampling schedule. After that, the clean conditioning takes back over, so the model finishes in a sane place instead of steering into a ditch.
Inputs that matter
There are exactly three, which is the whole appeal:
- conditioning - the output of a Krea 2 CLIP encode. The node will throw a clear error if you feed it anything else (it needs the
[batch, tokens, 30720]shape that only a Krea 2 loader produces). - strength - rotation in degrees, default 6, range 0–45. Start at 6 and raise it gradually. Too much and you'll see the embedding wander; the author's own tooltip says start small.
- seed - this only controls the conditioning variation. It has nothing to do with your sampler seed, so you can randomize it while keeping the sampler seed fixed, or keep it fixed to reproduce a variation. Use its built-in "randomize" widget to get a fresh variation per run.
Wiring it in
It slots between your Krea 2 CLIP Text Encode and the KSampler, and the single conditioning output feeds straight in - no other changes. Note it's explicitly experimental and Krea-2-only, so don't expect it to do anything on Z-Image or Flux.
If you're wondering where this family of tricks came from, Krea 2's trained-in refusal layer spawned a whole cottage industry of conditioning-rebalance and conditioning-variance nodes within hours of the open weights dropping; this is the seed-variety end of that same lineage, less about uncensoring and more about getting a batch of varied, usable images out of one prompt.
Installing
ComfyUI Manager → search "Maxed Out" → install, then restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Maxed-Out-99/ComfyUI-MaxedOut.git
Then restart ComfyUI. This pack has no pip dependencies - everything it needs ships with ComfyUI, so no model files or extra installs.
Common issues
The only real failure mode is feeding it non-Krea conditioning, which raises a ValueError telling you exactly that - the fix is to use a CLIP loader with the Krea 2 type. If you crank strength toward 45, expect mushier prompt adherence; that's the rotation fighting the actual text. Start at the default 6 and creep up.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| strength | FLOAT | 6.00–45 | Rotation in degrees within each Krea text layer. Start at 6; raise gradually for more variation. |
| seed | INT | 00–18446744073709550000 | Controls only the layer-aware conditioning variation. Set this widget to randomize or increment between generations. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |