Nodes/geocine-comfyui/Turbo Seed Variance
ComfyUI Node

Turbo Seed Variance

The Cure for 'Every Seed Looks the Same'

By geocine·Created 2 years ago·Updated 2 months ago· 1
Turbo Seed Variance
  • conditioning
  • conditioning
modez-image-turbo
randomize_percent50
auto_strength_factor1.00
strength20.0000
noise_insertnoise on beginning steps
steps_switchover_percent25
seed0
mask_starts_at
mask_percent0
log_to_consolefalse

If you've generated with Z-Image Turbo, Krea 2 Turbo, or Flux 2 Klein and thought "I changed the seed and it's... the same picture," congratulations - you hit the distilled-model wall. It's not you, it's the architecture. Distilled low-step models trade away seed diversity for speed, and the community spent the back half of 2025 inventing workarounds. This node is one of the best: it jitters the text conditioning - not the sampler, not the latent - with seed-dependent noise, so different seeds produce visibly different images even at 8 steps or 4 steps.

The lineage is worth knowing: the source says it's based on SeedVarianceEnhancer v2.2 and the Krea 2 adaptation, both MIT-0. SeedVarianceEnhancer was the fix people actually reached for during the Z-Image Turbo seed-diversity complaints in late 2025 - the ones where Z-Image Turbo got panned for producing "near-identical outputs across different seeds" while the Base model got celebrated for restoring the variety last seen with SDXL. This node is that trick, adapted per-model.

How it works

The mechanism is subtle but learnable. Text conditioning in modern models is an embedding tensor. The node:

  1. Picks the conditioning entry it will noise (first or second, depending on noise_insert), and measures the embedding's standard deviation over its real token region.
  2. Computes a strength - by default, the measured std × auto_strength_factor × a per-mode scale (0.1 for z-image-turbo, 0.01 for flux2-klein, which also uses layer-coherent noise across the Qwen text encoder's 3 layers). Set auto_strength_factor to 0 and it falls back to the absolute strength value instead.
  3. Rolls seeded noise - uniform noise in [−strength, +strength], generated from your seed, and a separate Bernoulli mask from seed + 1 that decides which ~randomize_percent% of embedding values get touched. Same seed = same jitter, which is what makes the result reproducible.
  4. Protects your prompt - mask_percent of tokens (from the mask_starts_at end) are shielded, so the noise can't destroy the subject-matter tokens your prompt is built on.
  5. Outputs two conditioning entries - a noised one marked active from 0% to steps_switchover_percent of the sampling schedule, and the clean one from there to 100%. ComfyUI's sampler honors those start_percent/end_percent ranges, so the noised prompt drives the early steps and the real prompt finishes the job.

The result: seed-dependent conditioning perturbation that survives the tiny step counts distilled models demand. It also preserves the global torch RNG state while generating, so it doesn't corrupt your sampler's randomness.

Inputs that matter

  • mode - z-image-turbo, krea2-turbo, or flux2-klein. Pick the model you're running; each has its own profile.
  • randomize_percent - % of embedding values noised (default 50).
  • steps_switchover_percent - when the noised conditioning hands off to clean. The tooltips suggest ~20 for Z-Image Turbo, ~25 for Krea 2 Turbo 8-step. Default 25.
  • seed - the variance seed, with control_after_generate, so it shuffles each run like a normal seed.
  • noise_insert - beginning/ending/all steps, or disabled to pass conditioning through untouched.
  • mask_percent / mask_starts_at - how much of the prompt to shield from noise, and from which end.
  • auto_strength_factor / strength - leave auto on (default 1) for sensible per-mode behavior; go manual only when you know why.
  • log_to_console - prints embedding stats and effective noise info to the console. Turn it on once to see what's actually happening.

Output: conditioning, wired straight into your sampler like any other conditioning.

Install

Part of geocine-comfyui - one install, all eleven nodes, no model downloads:

  • ComfyUI Manager → search geocine-comfyui → install → restart
  • or Comfy CLI: comfy node install geocine-comfyui
  • or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/geocine/geocine-comfyui

then restart ComfyUI.

What to know before you trust it

This isn't a free lunch. It trades prompt adherence for variety - that's the entire mechanism - which is why the prompt-mask exists. If your subject tokens are getting mangled, raise mask_percent. If images still look identical, your auto_strength_factor may be too low or your model mode is wrong (running the krea2 profile on Z-Image gets you nonsense scales). And remember the distilled-model rules this builds on: CFG near 1, exact step counts, the right scheduler. No amount of conditioning jitter fixes a turbo model fed CFG 7 at 20 steps - that's a different failure entirely.

Categorygeocine/conditioning

Inputs (11)

NameTypeDefaultDescription
conditioningCONDITIONING
modeCOMBOz-image-turboUse z-image-turbo for Z-Image Turbo, krea2-turbo for Krea 2 Turbo, or flux2-klein for Flux2 Klein distilled workflows.
randomize_percentFLOAT501–100Percentage of embedding values that receive noise.
auto_strength_factorFLOAT1.000–100If greater than 0, noise scale is measured embedding std times this factor and the selected mode profile. Set to 0 to use strength.
strengthFLOAT20.00000–4294967295Absolute fallback noise scale used when auto_strength_factor is 0.
noise_insertCOMBOnoise on beginning stepsWhere the noised conditioning is active during generation.
steps_switchover_percentFLOAT251–99Percent of sampling steps before switching between noised and clean conditioning. Try 20 for z-image-turbo, 25 for krea2-turbo 8-step workflows.
seedINT00–18446744073709550000Seed used to choose noised embedding values and noise amounts.
mask_starts_atCOMBOWhich end of the prompt is protected from noise.
mask_percentFLOAT00–99Percentage of prompt tokens protected from noise.
log_to_consoleBOOLEANfalsePrint embedding statistics and effective noise information to the ComfyUI console.

Outputs (1)

NameTypeDescription
conditioningCONDITIONING