Adept Ancestral Sampler
Euler a with opinions about when it adds noise
- SAMPLER
Plain Euler ancestral adds the same amount of noise at every step, forever. This sampler's whole thing is that noise timing is a decision, not a constant. It's an enhanced version of Euler ancestral that reshapes when and how much noise it injects as denoising progresses - more creative early, tighter mid-run, and it tries not to overshoot the cleanup phase at the end.
The mechanism is layered on top of the standard ancestral step. The core loop is the usual sigma_up / sigma_down split with a noise sample scaled by s_noise, but three toggles change how that plays out:
- adaptive_eta - instead of using your
etavalue blindly, it phases it: 8% hotter in the first 30% of steps, 5% cooler through the middle, slightly up again at the end. If you've ever felt like Euler a is either too chaotic or too flat, this is the knob that splits the difference automatically. - phase_noise - a scheduled multiplier on
s_noisethat nudges noise injection up slightly early and tapers it late, withphase_strengthcontrolling how far the multiplier gets to move from 1.0. - enhanced_derivative - swaps the plain derivative for an ancestral-specific correction that's aware of the current phase and eta.
There's also the pack's shared adaptive_noise toggle, which watches the model during a warmup pass, measures whether your s_noise is over- or under-shooting, then restarts generation with a per-phase correction. Handy when a model is unusually sensitive to noise, but know that it doubles effective runtime because the first pass is throwaway calibration.
The detail-enhancement options (use_detail_enhancement, detail_strength, detail_radius) wrap the model so the sampler can boost fine detail - but they only activate if torchvision is importable, which it usually is in a ComfyUI install. Leave them off until you've dialed in the basics; they add a wrapper and another knob to fight with.
Everything is optional except the basics: eta (default 1.0, 0 = deterministic), s_noise (default 1.0), and the three booleans. Output is a SAMPLER socket that feeds the sampler input of SamplerCustom.
Where it fits: the README's recommendation for epsilon-prediction models is AOS-ε scheduler + this sampler at eta=1.0, adaptive_eta=on. That's a solid creative/anime pairing - the non-converging nature gives you variety across seeds, and the adaptive bits keep it from getting mushy. If your images come out too noisy or too samey, adaptive_eta is the first thing to flip, not eta itself.
Install is the whole-pack one:
cd ComfyUI/custom_nodes
git clone https://github.com/nawka12/ComfyUI-Adept-Sampler
Restart, or grab it via ComfyUI Manager by searching "ComfyUI-Adept-Sampler". No requirements.txt, no model files, pure Python - the pack is a port of a reForge extension and installs in seconds. It'll print a 🚀 line to the console every run; that's the pack's personality, not a problem.
The honest take: this is the sampler for people who already like Euler a's chaos and want a slightly smarter version of it. If you want converging, reproducible output, this isn't it - look at Adept Solver instead. But for exploration passes, the phase-aware noise genuinely does feel less finicky than raw Euler a at low step counts.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| eta | FLOAT | 1.000–2 | — |
| s_noise | FLOAT | 1.000–2 | — |
| adaptive_eta | BOOLEAN | false | — |
| phase_noise | BOOLEAN | false | — |
| enhanced_derivative | BOOLEAN | false | — |
| phase_strengthopt | FLOAT | 0.50–1 | — |
| use_detail_enhancementopt | BOOLEAN | false | — |
| detail_strengthopt | FLOAT | 0.050–1 | — |
| detail_radiusopt | FLOAT | 0.50.1–2 | — |
| adaptive_noiseopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |