Nodes/Eric Qwen-Edit & Qwen-Image Nodes/Eric Qwen-Image UltraGen
ComfyUI Node

Eric Qwen-Image UltraGen

Qwen-Image's best practices, wrapped in one node

By EricRollei·Created 6 months ago·Updated 4 months ago· 20
Eric Qwen-Image UltraGen
  • pipeline
  • upscale_vae
  • image
prompt
negative_prompt低分辨率,低画质,肢体畸形,手指畸形,画面过饱和,蜡像感,人脸无细节,过度光滑,画面具有AI感。构图混乱。文字模糊,扭曲。
aspect_ratio1:1 Square
seed0
seed_modeoffset_per_stage
max_sequence_length1024
s1_mp0.5
s1_steps15
s1_cfg10.0
upscale_to_stage24.0
s2_steps26
s2_cfg4.0
s2_denoise0.85
s2_sigma_schedulelinear
upscale_to_stage32.0
s3_steps18
s3_cfg2.0
s3_denoise0.45
s3_sigma_schedulekarras
upscale_vae_modeboth

Eric Qwen-Image UltraGen is the pack's flagship - the node the author spent the most time on, and the one he posts to r/comfyui as "40+ MP Qwen image with workflow." It's the multi-stage progressive generator with every Qwen-Image-2512 best practice baked into the defaults: the official Chinese negative prompt, a high-CFG low-res draft to lock composition, a 4× jump to the refinement stage, an optional 2× super-resolution VAE on decode, Spectrum acceleration on Stage 1, and a max_sequence_length knob up to 1024 tokens that the README claims no other Qwen-Image node exposes.

If you came here from a "how do I make Qwen-Image output look good at high res" search, this is the node. The catch - and it's a real one - is that it's also the slowest thing in the pack.

What the defaults encode

The stage architecture is the same skeleton as Multi-Stage Generate, but tuned with the author's actual findings:

  • Stage 1 drafts at 0.5 MP with a high CFG (s1_cfg 10) - the norm-preserving CFG trick makes high values safe at low resolution, and high CFG locks in composition while it's cheap.
  • Stage 2 is the main refinement: upscale_to_stage2 4.0 (0.5 MP → ~2 MP), s2_steps 26, s2_cfg 4.0 (matches the official Qwen recommendation), s2_denoise 0.85.
  • Stage 3 is optional polish: upscale_to_stage3 2.0, s3_steps 18, s3_cfg 2.0, s3_denoise 0.45 (0.3-0.5 recommended - light touch, preserve Stage 2 detail).
  • seed_mode - how seeds evolve per stage: same_all_stages, offset_per_stage (S2 = seed+1, S3 = seed+2, the default), or random_per_stage.
  • s2_sigma_schedule / s3_sigma_schedule - linear, balanced (Karras ρ=3), or karras (ρ=7). The defaults (linear at S2, karras at S3) reflect that S3's fine micro-texture likes a Karras curve.

The two features nobody else has

max_sequence_length (default 1024, range 128-1024): the prompt-token budget. Stock diffusers and most Qwen workflows hardcode 512; this node exposes it. The claim, backed by the README's explanation: positions past your prompt are zero-padded and masked out, so there's no quality penalty for setting it high - only ~8 MB VRAM and negligible compute. If you use long ~200-word prompts (or the Prompt Rewriter node), this is why UltraGen beats a plain Generate.

upscale_vae (optional, from Eric Qwen Upscale VAE Loader): the Wan2.1-VAE-upscale2x decoder, which is architecturally identical to the Qwen VAE and shares its latent space. Wire it in and pick upscale_vae_mode - disabled, inter_stage (decode S2 at 2×, re-encode for S3), final_decode (2× on the final decode), or both (stacks to 4× total - the 50+ MP path). The transformer is auto-offloaded to CPU before this decode, and tiled decoding kicks in for big images, so you don't have to manage that by hand.

The inputs a beginner actually sets

  • prompt - for best results ~200 words of detailed description; the tooltip recommends wiring the Prompt Rewriter to it. The model's Qwen2.5-VL encoder wants sentences.
  • negative_prompt - pre-filled with the official Chinese Qwen-Image-2512 negative. Leave it.
  • aspect_ratio, seed - as expected.
  • Everything else is staged and already sane. Reduce stages (upscale_to_stage2 = 0) for faster tests.

Output: image.

The honest warning

Community feedback on this pack is where the "flagship" claim meets reality. A 5090 user's report on the author's own thread: over an hour for a 2 MP UltraGen run before they killed it. The author runs an RTX 6000 Pro and acknowledges most of his audience doesn't. So: UltraGen is the quality play, not the iteration play. Draft with a low s1_mp and a single upscale stage, dial the prompt on Generate, and only run the full 4-stage 30 MP bake when you're confident. Also remember the pack's pin: diffusers<0.38, transformers<5 - another pack upgrading diffusers can break this.

Install: ComfyUI Manager search "Eric Qwen Edit", or git clone https://github.com/EricRollei/Eric_Qwen_Edit_Experiments into custom_nodes/, with Qwen-Image-2512 loaded by Eric Qwen-Image Loader. The upscale VAE (~0.5 GB) and ControlNet (~2.3 GB, for the CN variant) are optional add-ons.

CategoryEric Qwen-Image

Inputs (22)

NameTypeDefaultDescription
pipelineQWEN_IMAGE_PIPELINEFrom the Qwen-Image loader or component loader
promptSTRINGDescribe the image you want to generate. For best results, use detailed descriptions (~200 words). Connect a Prompt Rewriter node to auto-enhance short prompts.
negative_promptoptSTRING低分辨率,低画质,肢体畸形,手指畸形,画面过饱和,蜡像感,人脸无细节,过度光滑,画面具有AI感。构图混乱。文字模糊,扭曲。What to avoid. Default is the official Qwen-Image-2512 negative prompt (Chinese). Translation: low resolution, low quality, limb/finger deformity, over-saturation, wax figure feel, no face detail, overly smooth, AI look, chaotic composition, blurred text, distortion.
aspect_ratiooptCOMBO1:1 SquareAspect ratio applied at every stage
seedoptINT00–18446744073709550000Random seed (0 = random)
seed_modeoptCOMBOoffset_per_stageHow seeds are chosen for each stage: • same_all_stages — one generator for all stages • offset_per_stage — S2 uses seed+1, S3 uses seed+2 • random_per_stage — independent random seed per stage Different seeds per stage can improve diversity of detail added during refinement while preserving S1 composition.
max_sequence_lengthoptINT1024128–1024Maximum prompt token length for the text encoder. Default 1024 for full prompt capacity. Reduce to 512 if not using detailed prompts.
s1_mpoptFLOAT0.50.3–2Stage 1 resolution in megapixels. Default 0.6 MP — low-res draft for composition. The model's native sweet spot is ~1.76 MP.
s1_stepsoptINT151–200Stage 1 inference steps (txt2img from noise)
s1_cfgoptFLOAT10.01–20Stage 1 true CFG scale. High CFG at low resolution helps lock in composition. Pipeline uses norm-preserving CFG so high values are safer.
upscale_to_stage2optFLOAT4.00–10Upscale factor (area) from Stage 1 to Stage 2. Default 4.0 — from 0.5 MP to ~2.0 MP. Set to 0 to skip Stage 2 & 3 (output Stage 1 only).
s2_stepsoptINT261–200Stage 2 inference steps. This is the main refinement stage — most sampling steps should go here for maximum quality.
s2_cfgoptFLOAT4.01–20Stage 2 true CFG scale. 4.0 matches official Qwen recommendation.
s2_denoiseoptFLOAT0.850.1–1Stage 2 denoise strength. 1.0 = full re-denoise (ignores Stage 1 structure). 0.5-0.7 = refine while preserving composition. Lower values preserve more of Stage 1.
s2_sigma_scheduleoptCOMBOlinearSigma schedule curve for Stage 2 refinement. • linear — uniform spacing (default, original) • balanced — moderate detail focus (Karras ρ=3): 27% composition / 38% detail / 35% texture • karras — heavy fine-detail focus (Karras ρ=7): 23% composition / 35% detail / 42% texture Balanced is recommended for S2.
upscale_to_stage3optFLOAT2.00–8Upscale factor (area) from Stage 2 to Stage 3. Default 0 = disabled (2-stage output). Set to 1.5-2.0 to push to 5-7 MP final.
s3_stepsoptINT181–200Stage 3 inference steps
s3_cfgoptFLOAT2.01–20Stage 3 true CFG scale (lower to avoid over-sharpening)
s3_denoiseoptFLOAT0.450.1–1Stage 3 denoise strength. 0.3-0.5 recommended — light refinement preserves Stage 2 detail while adding final polish.
s3_sigma_scheduleoptCOMBOkarrasSigma schedule curve for Stage 3 final polish. • linear — uniform spacing (default) • balanced — moderate detail focus (Karras ρ=3) • karras — heavy fine-texture focus (Karras ρ=7) Karras is recommended for S3 (fine micro-texture).
upscale_vaeoptUPSCALE_VAEOptional: Wan2.1 2× upscale VAE. Load with Eric Qwen Upscale VAE Loader. Model: spacepxl/Wan2.1-VAE-upscale2x Compatible with Qwen latent space. Behaviour controlled by upscale_vae_mode.
upscale_vae_modeoptCOMBObothHow the upscale VAE is used (requires upscale_vae). • disabled — upscale VAE ignored even if connected • inter_stage — decode S2 latents at 2×, re-encode to latents, feed 2× canvas to S3. Replaces the bislerp upscale between S2→S3. (Requires 3 stages) • final_decode — replace the final stage's normal VAE decode with the 2× upscale decode for a free 2× resolution output image. • both — inter-stage S2→S3 AND 2× final decode (stacks: S3 canvas is 2× from inter-stage, then output is another 2× from final decode = 4× total)

Outputs (1)

NameTypeDescription
imageIMAGE