SamplerCustomAdvanced_LatentPick
Keep every step, then pick one for free
- noise
- guider
- sampler
- sigmas
- latent_image
- output
- denoised_output
- stop_latent
Every sampler throws away its work as it goes. Step 4's guess at your image lives for a few milliseconds, gets overwritten by step 5's better guess, and vanishes. Want to see step 4? The classic route is a KSamplerAdvanced with end_at_step filled in, then a full re-run at a different number to see step 6.
SamplerCustomAdvanced_LatentPick is a fork of core SamplerCustomAdvanced that snapshots the denoised latent of every step and hands you whichever one you point at with a single widget. Change the widget and the sampler does not run again.
What you'd actually use it for
The honest main use is judging a step count without re-running. Run 12 steps once, flip through the captured latents, see where the image actually settles - step 5 versus step 8 versus the full run. One caveat the pack is upfront about: this is not the same as running a 5-step schedule. The sigma curve was spaced for 12, so you're looking at the model's running estimate while it headed for the 12-step result. On flow-matching models, whose trajectory is close to straight, that difference is small; on a curved SDXL-era trajectory, it's bigger.
Second use: an early-stop image with no VAE round trip, so you skip the encode/decode mush of the img2img version. Third: if you've followed the skip-step hacks people use to shake variance out of distilled models, this is that idea with more control.
The mechanism, briefly
The node passes a callback into guider.sample - the same callback ComfyUI uses to draw the progress preview - and instead of only previewing each step's x0, it copies them to CPU and keeps them. That tensor is the model's one-shot estimate of the finished image at that noise level, which is why an early preview looks like mush and a late one looks like your picture.
Then the clever bit: every captured step plus the normal outputs are stashed under a key covering everything that decides the pass - noise, sampler, guider, sigmas, latent shape - deliberately excluding stop_on. ComfyUI only re-executes nodes whose inputs changed, so editing stop_on re-runs this node and hits the stash: no sampler call, no model reload. The console prints sampled and stashed N step latents on a real run and stash hit on a re-pick, so you can tell which you got.
Cost: one latent per step in RAM (the author's figure is ~100 MB per step for an H3 AV latent over 20 steps), with the stash holding 4 passes capped at 2 GB. Older passes get evicted, and re-picking one of those samples again.
Inputs and outputs
The inputs are the core node's, unchanged - noise, guider, sampler, sigmas, latent_image. A working SamplerCustomAdvanced graph can swap this in without moving another wire.
stop_on is the one you care about, and it's a 0-based step index: 0 is the first step, and one below your total step count is the last one. With 6 steps, stop_on 4 is where you'd land by quitting two steps early, and stop_on 5 is the same latent as denoised_output. Values past the end clamp instead of erroring.
Outputs: output and denoised_output are what the core node returns - output goes into your VAE Decode as usual. stop_latent is the new one, in the same space as denoised_output, so it decodes like a finished image that stopped early. Wire it to its own decode to compare, or feed it forward as a normal latent. Know that it's the soft x0 estimate rather than the noisy state at that step, so it isn't a resume point for the same sigma schedule.
Installing it
ComfyUI Manager, search ComfyUI-SA-Nodes-QQ - the pack publishes to the Comfy registry. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-SA-Nodes-QQ
then restart. No model downloads needed for this node.
Two install notes for this pack. The README's own install block still points at the old repo name, ComfyUI-WanVideoWrapper_QQ.git - if you have an old wanwrapper_qq or ComfyUI-WanVideoWrapper_QQ folder in custom_nodes, delete it, because workflows saved against the old pack can trigger an install of the stale one. Second, requirements.txt is empty (literally zero bytes) while modules the pack imports at load time - prepare_refs, power_load_video - do a bare import cv2. ComfyUI doesn't ship OpenCV, so on a lean environment the whole pack can fail to import and take this sampler with it. pip install opencv-python if that happens.
Troubleshooting
The stash is what confuses people. If the console says sampled and stashed every time you tweak stop_on, the pass changed - new seed, different model, re-patched graph - and it really is re-sampling. Same seed and same graph should say stash hit.
RAM is the other one. Fine for image work, heavy for long video runs, and once several passes are in play the cap evicts the oldest. The takeaway: experimental node, Wan-video-oriented pack, works on any architecture - but it's a tuning tool, not something to leave in a finished graph.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| noise | NOISE | — | |
| guider | GUIDER | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| latent_image | LATENT | — | |
| stop_on | INT | 20–10000 | Which stashed step latent goes to stop_latent. 0 = first step, steps-1 = last step (the same latent as denoised_output). Every step is kept, so changing this only re-picks - the sampler is not run again. Values past the last step clamp to it. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| output | LATENT | — |
| denoised_output | LATENT | — |
| stop_latent | LATENT | — |