⚗ Alchemica · Guidance (CFG)
Why 1 is a special number, and what a CFG curve buys you
- opts
- ALCHEMICA_OPTS
Krea 2 Turbo is guidance- and timestep-distilled, which means its guidance is baked in, which means you run it at CFG 1 and leave it alone. Everyone knows that part. What's less obvious is that 1 isn't just "low" - it's a special case in ComfyUI's code. Substitute cond_scale = 1 into uncond + (cond − uncond) × scale and the uncond term cancels algebraically, so ComfyUI doesn't compute it: it gates on math.isclose(cond_scale, 1.0), sets the uncond slot to None, and skips the forward pass entirely. That's a real speed win, and it's also why your negative prompt is inert.
This node gives you a CFG curve instead of a single value, which is the only interesting thing left to do with the parameter.
The fields
cfg_base - CFG at low sigma, i.e. through the refinement phase. 1.0 for Turbo. The tooltip says 1.0 for Turbo because that's not a suggestion, it's the value the distillation trained for.
cfg_peak - CFG at high sigma, through composition. Equal to cfg_base means constant CFG. Raising it only near the start is the interesting trick: composition is what high CFG actually helps with, and you're paying the doubled compute for the few steps that benefit.
cfg_lo (0.7) and cfg_hi (0.9) - the two sigmas the curve interpolates between. Below cfg_lo you get cfg_base; above cfg_hi you get cfg_peak; in between it ramps.
negative_mode - zero (default) is a zeroed negative, which is what a guidance-distilled model expects. text uses the conditioning you actually connected on the sampler's negative socket - and that only matters when CFG is above 1, because at exactly 1 there's no uncond prediction for the negative to steer.
What you're buying, and what it costs
Any CFG above 1 brings back the unconditional pass on every step where it applies. That's roughly double the compute in that window, and on a distilled model it's also where the "overcooked, oversaturated" complaints come from - the same complaints that show up in Krea 2 threads from people trying CFG 2 on a Turbo checkpoint.
Two legitimate uses:
- Krea 2 Raw. This is the undistilled base with no aesthetic finetune applied, official settings 52 steps at CFG 3.5. The pack's
raw_basepreset is built for it: 28 steps,euler_2m, CFG 3.5 at both ends,negative_mode: text. Here the guidance node isn't a hack, it's the normal operation of the model, and the negative prompt genuinely works. - The last-mile nudge. A slight bump at the top of the curve on a scene that isn't obeying the composition half of the prompt. Expect the palette to shift and expect it to be slower; this is not a free improvement.
Everything else - "remove that thing from my image" - is NAG's job (⚗ Attention guidance), which works in attention space at CFG 1 and doesn't need the second pass at all.
Output and wiring
One ALCHEMICA_OPTS socket:
Alchemica · Guidance (CFG) ─opts→ AlchemicaSampler · opts
It overrides the guidance group of the preset and nothing else. Chain it with the other option nodes if you want; they don't collide.
Worth knowing: the _cfg_pp sampler family exists because of exactly the CFG-1 situation. Those samplers set disable_cfg1_optimization so they can still get a post-CFG hook at scale 1. If you're using NAG or any attention-side intervention, that's the machinery being coordinated underneath you - you don't have to do anything, but it explains why they're the entry points people reach for on CFG-1 models.
Installing
Part of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
Restart the ComfyUI server - reloading the page doesn't register the nodes. No dependencies; ComfyUI 0.36.0 or newer.
Traps
Setting cfg_base and cfg_peak equal to each other and expecting a curve. That's a constant, and with 1.0 at both ends it's the same as having no option node at all.
negative_mode: text with CFG at 1. Nothing happens, for the algebraic reason at the top of this page. The negative conditioning reaches the model only through NAG.
Raising CFG because "more prompt adherence". On a distilled model you're fighting the training. If a prompt isn't landing, two-phase prompting (scene for composition, detail for rendering) is the lever this pack actually wants you to pull, and it costs nothing.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| cfg_base | FLOAT | 1.000–20 | CFG at low sigma (1.0 for Turbo) |
| cfg_peak | FLOAT | 1.000–20 | CFG at high sigma (composition). Equal to base = constant |
| cfg_lo | FLOAT | 0.700–1 | Below this sigma: cfg_base |
| cfg_hi | FLOAT | 0.900–1 | Above this sigma: cfg_peak |
| negative_mode | COMBO | zero | zero = zeroed negative (Turbo). text = uses the connected negative |
| optsopt | ALCHEMICA_OPTS | Chain from another Alchemica options node |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ALCHEMICA_OPTS | ALCHEMICA_OPTS | — |