KSampler Advanced Progress (Inspire)
Make a video of the denoising process
- model
- positive
- negative
- latent_image
- prev_progress_latent_opt
- scheduler_func_opt
- latent
- progress_latent
You know those satisfying videos where an image resolves out of static, step by step? This is the node that makes them. It's a normal advanced KSampler that, on top of the final image, also spits out every intermediate step as a batch of latents. Decode that batch, run it through a Video Combine node, and you've got a clip of your generation denoising from noise to finished picture.
It's genuinely useful beyond eye-candy. Watching the progress is one of the fastest ways to understand a sampler: you can literally see when composition locks in (usually early), when detail arrives, and whether a bad result went wrong at step 3 or step 30. As the category name - analysis - suggests, that's the real intent. The pretty video is a bonus.
How it works
A standard sampler throws away the latent at each step and only keeps the last one. This node captures snapshots along the way and stacks them into a second latent batch. Everything else is a regular advanced sampler - same model, conditioning, step-range and noise-mode controls - it just also hands you the reel of intermediates.
Because the snapshots come out as a latent batch, the downstream flow is: progress_latent → VAE Decode → Video Combine (from Kosinkadink's VideoHelperSuite). That's the pairing the README calls out for turning the progress into an actual video file.
The inputs and outputs that matter
Standard sampler inputs (model, positive, negative, latent_image, steps, cfg, sampler_name, scheduler, plus noise_mode and the start_at_step / end_at_step advanced controls) are all here. The ones specific to this node:
interval(default 1) - capture a snapshot every N steps. At 1 you get every step (smoothest video, biggest batch); raise it to thin out the frames and save memory on long sampling runs.omit_start_latent/omit_final_latent(default off) - drop the first or last frame from the reel. Handy when the pure-noise opening frame or a duplicate final frame is cluttering your clip.prev_progress_latent_opt(optional) - feed in the progress reel from an earlier sampler so a multi-stage pipeline produces one continuous video instead of two disconnected ones.
Two outputs:
latent- the finished image, exactly like any sampler.progress_latent- the batch of intermediate steps. Decode and animate this one.
How to install it
ComfyUI Manager: search ComfyUI Inspire Pack, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Inspire-Pack
then restart. Dr.Lt.Data's pack (ComfyUI-Manager, Impact Pack).
Common issues & troubleshooting
VRAM spikes or OOM on long runs. Every captured step is a latent held in memory, so a 50-step run at interval 1 keeps 50 of them around. If you're running out, raise interval to capture fewer frames, or lower your step count. This is the one real cost of the node.
The video is jumpy. Small step counts make choppy clips - there just aren't many frames. Either sample with more steps, or hold each frame longer in Video Combine (drop the frame rate). interval 1 gives the maximum frames available.
First frame is pure noise / last frame flickers. Use omit_start_latent and omit_final_latent to trim them.
Nothing to combine into a video. You need a video node downstream - VideoHelperSuite's Video Combine is the one the README points at. Decode progress_latent through a VAE first, then feed the image batch into Video Combine.
Progress and final look different. They shouldn't - the final frame of the reel is the same image as the latent output (unless you omitted it). If they diverge, check you didn't accidentally wire the two outputs to the wrong places.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| add_noise | BOOLEAN | true | — |
| noise_seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11 | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| start_at_step | INT | 00–10000 | — |
| end_at_step | INT | 100000–10000 | — |
| noise_mode | COMBO | 4 options: GPU(=A1111), CPU, GPU+internal_seed, CPU+internal_seed | |
| return_with_leftover_noise | BOOLEAN | false | — |
| interval | INT | 11–10000 | — |
| omit_start_latent | BOOLEAN | false | — |
| omit_final_latent | BOOLEAN | false | — |
| prev_progress_latent_optopt | LATENT | — | |
| scheduler_func_optopt | SCHEDULER_FUNC | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| progress_latent | LATENT | — |