Nodes/⚗ AlchemicaSampler/⚗ Alchemica · Two stages
ComfyUI Node

⚗ Alchemica · Two stages

Compose at half resolution, refine at full — and why you want 0.5, not 0.45

By Nessuno76·Created 23 days ago·Updated 6 days ago· 3
⚗ Alchemica · Two stages
  • opts
  • ALCHEMICA_OPTS
◄two_stagetrue►
◄stage1_scale0.50►
◄stage1_steps5►
◄handoff_sigma0.65►
◄stage2_steps6►
◄stage2_schedulersame►
◄upscale_methodbislerp►
◄stage2_seed_offset1►
◄handoff_k1.00►
◄lowfreq_anchor0.00►
◄lowfreq_cutoff0.125►

Above roughly 1.5 megapixels, sampling Krea 2 in a single pass at your final size is a waste of most of the budget: more than half the trajectory is spent placing things, and the model doesn't need full resolution to decide where the subject goes. A two-stage run does the composition cheap, then refines at full size. Eleven widgets set it up, and about four of them are worth understanding.

The geometry

two_stage - the switch. On in the all-in-one samplers by default; here it's a boolean you own.

stage1_scale - the first stage's side length relative to the final one. 0.5 means the first stage runs at a quarter of the pixels. Default 0.5, range 0.25 to 1.

stage1_steps - composition steps taken above the hand-off, default 5.

handoff_sigma - where the second stage takes over. Default 0.65, but the value you want is −1 = from the calibration profile, because that's where composition is 98.5% locked on a measured checkpoint (~0.87). This is the single most consequential field on the node: too early and the second stage is still deciding composition from a half-resolution image; too late and you've wasted the cheap stage on work that didn't matter.

stage2_steps - refinement steps at full resolution, default 6.

stage2_scheduler - same keeps the first stage's schedule, or pick a different one from the same list the Schedule node offers (alchemica_duale, alchemica_tarato, flux_shift, linear_flow, comfy:*). Using a detail-heavy schedule for stage 2 and nothing else is a legitimate experiment.

upscale_method - how the latent is enlarged between stages: bislerp (default), bicubic, bilinear, nearest-exact, area.

stage2_seed_offset - the second stage's noise uses seed + offset, default 1. So stage 2 is not a continuation of the same noise field; it's a re-noised refinement. Setting it to 0 makes both stages share the seed.

The one gotcha worth memorising

stage1_scale at exactly 0.5 means the second stage is an exact 2× upscale - every output latent cell derives from a clean 2×2 block of the smaller one. Try 0.45 and you're interpolating, and the pack's notes measured the consequence on noise specifically: averaging with overlapping windows correlates neighbouring noise values by about 33%, and Krea 2 renders that correlation as coloured blobs. Exact 2×2 blocks keep it white. So: 0.5, or accept that you're rolling dice on colour noise.

That's not a theoretical warning. Coloured blotches on Krea 2 output have been a recurring community complaint since release, most often blamed on samplers and schedulers; some of it is the FP8 quantisation of the checkpoints people are using, but non-integer upscales are the other half of the story.

Wiring

Alchemica · Two stages ─opts→ AlchemicaSampler · opts

The optional opts input chains it with the other option nodes; it overrides only the stage geometry. It requires the sampler to be told the final resolution - the first stage works at a fraction of whatever latent you hand it, so don't shrink the ⚗ Resolution input yourself.

Two things switch two-stage mode off, and both are deliberate:

  • denoise below 1 (img2img). If the image is already half-composed, there's no composition stage to save money on.
  • A SAMPLER-based workflow. A sampler object can't resize a latent between stages, so two-stage only works in the standalone sampler nodes.

Installing

Part of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler

Restart the server. ComfyUI 0.36.0+, zero dependencies, and the Krea 2 model plus Qwen3-VL encoder and Qwen-Image VAE where ⚗ Load Krea 2 can see them.

Traps

Turning stage2_steps up to fix a bad hand-off. If the composition is wrong, no number of refinement steps repairs it. Fix handoff_sigma first.

Half-resolution composition at 0.25 with a complicated scene. A quarter-size stage means a sixteenth of the pixels for the stage that decides everything. For a portrait it's fine; for a crowd it isn't.

Expecting two stages to be faster. It's usually cheaper for the same quality, not quicker - the pack's modes give time figures (veloce ~30 s, equilibrato ~45 s, massimo dettaglio ~70 s at 3 MP) and the two-stage recipes sit in the middle of that, not below it.

Out of memory in stage 2. The refinement pass is the full-resolution one; if 5 MP dies, it dies there. Drop to 4 MP.

Category⚗ AlchemicaMente/sampling/options

Inputs (12)

NameTypeDefaultDescription
two_stageBOOLEANtrue—
stage1_scaleFLOAT0.500.25–1First-stage side relative to the final one (0.5 = 1/4 of the pixels)
stage1_stepsINT51–50Composition steps above the hand-off sigma
handoff_sigmaFLOAT0.65-1–0.95Hand-off sigma. -1 = from the profile (composition 98.5% locked)
stage2_stepsINT61–50High-resolution refinement steps
stage2_schedulerCOMBOsame14 options: same, alchemica_duale, alchemica_tarato, flux_shift, linear_flow, comfy:simple, +8
upscale_methodCOMBObislerp5 options: bislerp, bicubic, bilinear, nearest-exact, area
stage2_seed_offsetINT10–1000Second-stage noise uses seed + offset
handoff_kFLOAT1.000–4Resolution correction of the hand-off. 1 = off (1.0 behaviour). 0 = auto: stage 1 stops at the half-resolution sigma EQUIVALENT to the hand-off at full resolution (SD3 rule, k = 1/stage1_scale). >1 = explicit factor
lowfreq_anchorFLOAT0.000–1Stage 2 keeps the LOW frequencies (composition, colour) of the upscaled stage-1 image, fading out as sigma falls (HiFlow). 0 = off, 1 = full. Only with alchemica_* solvers
lowfreq_cutoffFLOAT0.1250.02–0.6Low-frequency anchor: highest frequency kept from stage 1 (normalised; 0.125 = 8x8 latent blocks, the scale where the Calibration measures the composition). Higher = more of the stage-1 image kept (blurrier)
optsoptALCHEMICA_OPTSChain from another Alchemica options node

Outputs (1)

NameTypeDescription
ALCHEMICA_OPTSALCHEMICA_OPTS—