Eric Qwen-Image Multi-Stage Generate
Generate small, upscale, re-denoise — the middle path to big Qwen images
- pipeline
- image
Eric Qwen-Image Multi-Stage Generate is the DIY version of the pack's progressive-generation idea: up to three stages, each one a generate → upscale → re-denoise cycle, with independent control over steps, CFG, and denoise at every stage. It's the node between the plain Generate (single pass, no upscaling) and UltraGen (the tuned, best-practices flagship). If you want to understand what progressive upscaling does before you trust UltraGen's presets, this is the teaching node.
How the stages fit together
- Stage 1 drafts at low resolution from pure noise.
s1_mp(0.5 default),s1_steps(15),s1_cfg(8.0). The idea, straight from the KB's upscaling playbook: lock the composition at low resolution where the model is most reliable, then refine. - Stage 2 upscales the Stage 1 latents (
upscale_to_stage2= area multiplier, 2.0 default) and re-denoises.s2_steps(20),s2_cfg(4.0),s2_denoise(1.0 - full re-denoise preserves little of Stage 1; lower to keep more). - Stage 3 does the same again (
upscale_to_stage3= 2.0,s3_steps15,s3_cfg2.0,s3_denoise1.0).
The two switches that shape the whole run: upscale_to_stage2 = 0 → output Stage 1 only (single-stage); upscale_to_stage3 = 0 → two-stage output. That makes this one node a whole family: set both to 0 and it's basically a slow Generate; leave both default and you get 0.5 MP → 2 MP → 4 MP-ish.
The inputs that matter
prompt(required) - write sentences, not tags; the text encoder is Qwen2.5-VL.aspect_ratio- applied at every stage, so all stages share the shape. Default1:1 Square.seed- 0 = random.s1_mp- the single most important dial. Too high and Stage 1 costs the whole budget; too low and Stage 2 has to invent too much detail from nothing. 0.5 is the sweet spot the pack defaults to.s1_cfgvss2_cfgvss3_cfg- notice the pattern baked into the defaults: high CFG (8) at the draft to lock composition, medium (4) at refinement, low (2) at polish. That staircase is the whole philosophy; you can fight it, but the defaults already encode it.s2_denoise/s3_denoise- your control over how much each stage re-renders vs. preserves. 1.0 = full re-denoise (ignores prior stage structure); lower values refine while keeping composition.
Output is a single image.
The mechanism note worth knowing
Between stages, latents are upscaled with bislerp and re-noised to match the per-stage denoise before re-sampling. That's the difference between this and naive "upscale then one more pass" workflows - the re-noising is calibrated to the upscale factor so Stage 2 isn't just smearing Stage 1. UltraGen (and the optional 2× upscale VAE) refines this further, but Multi-Stage is the transparent version of the same idea.
Where it fits
This is the node to reach for when you want multi-megapixel output but want to tune it yourself rather than take UltraGen's opinionated defaults. It's also lighter than UltraGen in spirit - no seed modes, no sigma schedules, no max_sequence_length knob - which means fewer surprises when you're learning. The cost: you're responsible for the balance. If you want the author's tuned defaults and the extended prompt-token window, use UltraGen; if you want to understand and control every stage, stay here.
One caution from the community side of this pack: multi-stage generation on a 20B model is slow - people with 5090s have reported hour-long UltraGen runs, and Multi-Stage at three stages isn't meaningfully cheaper. Keep s1_mp low and stages at 2 until your prompt is solid. Install: ComfyUI Manager search "Eric Qwen Edit", or git clone https://github.com/EricRollei/Eric_Qwen_Edit_Experiments into custom_nodes/, with the Qwen-Image pipeline loaded upstream.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | QWEN_IMAGE_PIPELINE | From the Qwen-Image loader or component loader | |
| prompt | STRING | Describe the image you want to generate | |
| negative_promptopt | STRING | What to avoid in the output | |
| aspect_ratioopt | COMBO | 1:1 Square | Aspect ratio applied at every stage |
| seedopt | INT | 00–18446744073709550000 | Random seed (0 = random) |
| s1_mpopt | FLOAT | 0.50.3–2 | Stage 1 initial resolution in megapixels |
| s1_stepsopt | INT | 151–200 | Stage 1 inference steps (txt2img from noise) |
| s1_cfgopt | FLOAT | 8.01–20 | Stage 1 true CFG scale |
| upscale_to_stage2opt | FLOAT | 2.00–8 | Upscale factor (area) from Stage 1 to Stage 2 (0 = skip Stage 2 & 3, output Stage 1) |
| s2_stepsopt | INT | 201–200 | Stage 2 inference steps |
| s2_cfgopt | FLOAT | 4.01–20 | Stage 2 true CFG scale |
| s2_denoiseopt | FLOAT | 1.000.1–1 | Stage 2 denoise (1.0 = full re-denoise, lower = preserve prior stage detail) |
| upscale_to_stage3opt | FLOAT | 2.00–8 | Upscale factor (area) from Stage 2 to Stage 3 (0 = skip Stage 3, output Stage 2) |
| s3_stepsopt | INT | 151–200 | Stage 3 inference steps |
| s3_cfgopt | FLOAT | 2.01–20 | Stage 3 true CFG scale |
| s3_denoiseopt | FLOAT | 1.000.1–1 | Stage 3 denoise (1.0 = full re-denoise, lower = preserve prior stage detail) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |