SamplerEulerAncestralCFG++
The CFG++ sampler for the sub-1 crowd
- SAMPLER
This is Euler ancestral with a CFG++ twist: the guidance is computed differently, on the assumption that you're running at a CFG scale below 1. CFG++ (Chung et al., arXiv 2406.08070) reframes guidance as a manifold-constrained operation - instead of extrapolating away from the unconditional prediction, it renoises from it, which gives a smoother trajectory and works at guidance scales in the 0-to-1 range where classic CFG falls apart.
It's one of ComfyUI's eight _cfg_pp samplers, and it ships in core (comfy_extras.nodes_custom_sampler). The CFG++ family arrived in June 2024 and this ancestral variant is part of it. Nothing to install.
How it works
Mechanically, the difference shows up in one detail: a _cfg_pp sampler forces the unconditional prediction to run even at CFG 1, because it steers with that prediction. On a normal sampler, CFG 1 means the uncond pass is skipped for speed. On this one, it's load-bearing.
Because CFG++ is built for small guidance scales, the cfg you feed the guider should be in the neighborhood of 1–1.5, not the 5–9 you'd use on an SDXL. That's the single most common reason people try this node, hate it, and write it off: they run it at CFG 7 on SDXL or Illustrious, where it was never meant to work. The highest-scoring community note on the whole family is exactly that - people dismissing _cfg_pp samplers after trying them at a normal CFG.
The node's own inputs are the two stochastic knobs:
eta- 0–1, default 1.0. The ancestral noise strength. 1 is full ancestral; lower it toward 0 and you approach the deterministic Euler behavior.s_noise- 0–10, default 1.0. The magnitude of the fresh noise injected each step.
Both output a SAMPLER object for the custom-sampler graph (feed it to SamplerCustomAdvanced).
Who actually wants this
Three groups, roughly:
- v-prediction models. The NoobAI vpred recommendation is CFG++ samplers with the Normal scheduler at CFG 1.5–2.0 - the family's home turf.
- Distilled / guidance-free models where CFG 1 is the operating point but you want the sampler to keep using the unconditional prediction. Pair with a BasicGuider or CFGGuider at low cfg.
- People chasing the CFG++ smoothness at low scales, often with the
betascheduler. The 2026 Krea 2 usage thread that paired a distilled model witheuler_cfg_pponbeta"for 1 CFG" is the shape of it.
One translation warning from the paper: the paper's lambda lives in (0,1) but it's a rescaled parameterization that does not map one-to-one onto the CFG box in ComfyUI. Don't try to read the two ranges as the same number - the CFG widget here still takes ordinary CFG values in the low range.
Where people get burned
- Normal CFG. See above. CFG 4+ on this sampler is not "more guidance," it's a different (usually worse) operating regime.
- Expecting the ancestral non-convergence to behave. Same as any ancestral sampler: adding steps reshuffles the image rather than refining it.
- Forgetting the negative prompt needs to be real. Because the uncond pass is always computed, users report needing an actual (even empty) negative conditioning rather than a zeroed one with the
_cfg_ppfamily - the pass isn't skipped, so garbage in can steer the run.
If you just want plain Euler ancestral with a normal CFG, SamplerEulerAncestral is the straightforward pick. This one is specifically the CFG++ take.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| eta | FLOAT | 1.000–1 | — |
| s_noise | FLOAT | 1.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |