Nodes/FLUX.2 SDNQ/FLUX.2 SDNQ Text to Image
ComfyUI Node

FLUX.2 SDNQ Text to Image

Klein in four steps, and why that's the whole trick

By GeneralShan·Created 6 months ago·Updated 6 months ago· 0
FLUX.2 SDNQ Text to Image
  • pipeline
  • IMAGE
prompt
steps4
width1024
height1024
seed0
num_images1

The default steps value here is 4, and that's not a typo or a corner-cut. FLUX.2 Klein shipped in distilled form - a student model trained to jump most of the way to the finished image in a handful of steps instead of the 20–50 a normal diffusion model needs. On a 5090, the official 4B numbers are roughly a second per image at 4 steps. The distilled pipeline also runs at CFG 1.0, which this node pins internally when the pipeline accepts a guidance scale. This is the "generation crossed into interaction" category of speed, and it's the whole reason you'd reach for Klein over the heavier Flux 2 Dev.

That speed has a bill, and the community has itemized it: Klein's anatomy failures happen early in sampling, so at 4 steps you can get extra fingers or a third arm. The most-upvoted fix from launch week is to run 8 steps and nudge CFG to 1.2–1.5 - the tooltip on this very node admits the distilled defaults are "intentionally low." Doubling steps costs you ~2x wall time and buys back most of the body horror. Do that before you conclude Klein is broken.

What it is and how it fits

This is the text-to-image generator in the FLUX.2 SDNQ pack. It takes the FLUX2_SDNQ_PIPELINE from the Loader node, runs the prompt through the diffusers Klein pipeline (no KSampler involved - the pack is its own runtime), and outputs a normal ComfyUI IMAGE you can preview or save like any other.

Prompting: it's a chat message, not tag soup

This is the single most important thing to get right with Klein, and it applies to the whole model family, SDNQ or not. Klein's text encoder is a Qwen3 LLM, and it reads your prompt like an instruction, not like CLIP tags. ((masterpiece, best quality)), repetition for emphasis, and Comfy prompt weighting all do basically nothing. Sentences with explicit ownership and spatial relations do:

Bad:    beach, woman, camera, sitting, black dress, looking, ocean, realistic
Better: A realistic photo of a woman sitting on a beach. She is looking at the
        camera. She is wearing a black dress. The ocean is behind her.

Write it like you're describing the shot to a photographer, and the hit rate climbs noticeably.

The inputs that matter

  • prompt - multiline, and the field supports dynamic-prompt wildcard syntax if you use that tooling.
  • steps - 4 default; the 8-step/CFG-boosted tweak above is your first lever when results look wrong. (CFG itself isn't exposed on this node - it's internal - so the "nudge to 1.2–1.5" advice maps here to: if you can't set CFG, just run more steps.)
  • width / height - 1024×1024 default, multiples of 16, up to 16384. Klein is happiest around 1–2 MP; don't chase the max.
  • seed - 0 defaults to random; the node resolves negative seeds to a random value too.
  • num_images - 1–8; it batches the output into one IMAGE tensor, so more than 1 means the save node gets a grid-friendly batch.

Output

One IMAGE output - the generated image or batch. Wire it into any standard preview (PreviewImage) or save node (SaveImage).

Install and gotchas

Same shared pack install: ComfyUI Manager → search FLUX.2 SDNQ, or git clone https://github.com/GeneralShan/comfyui-flux2-sdnq into custom_nodes, restart, and make sure sdnq, diffusers, and peft are pip-installed (ComfyUI 0.17+, Python 3.12+).

Two traps worth knowing before you blame the node. First, don't run a base (undistilled) Klein checkpoint through this at 4 steps - the 50-step model will look unfinished and blurry; the distilled 4B/9B is what the defaults are tuned for. Second, an empty prompt at CFG 1 leaves Klein free to invent a signature watermark on artistic styles - give it a real prompt or expect the occasional autograph. If generation suddenly gets slow or OOMs after a batch, that's memory pressure, not this node - the pack's Clear Caches node is the eject button.

Categoryflux2/sdnq

Inputs (7)

NameTypeDefaultDescription
pipelineFLUX2_SDNQ_PIPELINE
promptSTRINGPrompt text for the FLUX.2 Klein generation.
stepsINT41–100Number of denoising steps. Distilled defaults are intentionally low.
widthINT102464–16384Output width in pixels.
heightINT102464–16384Output height in pixels.
seedINT00–18446744073709550000Random seed for the latent noise.
num_imagesINT11–8Number of images to generate for the prompt.

Outputs (1)

NameTypeDescription
IMAGEIMAGE