KSampler (Multi-Seed)
Stop hand-clicking the randomize button — let the sampler walk the seeds for you
- model
- positive
- negative
- latent_image
- LATENT
We all do it: roll the seed, look at the result, nudge the seed, look again. KSampler (Multi-Seed) automates that loop. Instead of one latent and one seed, you tell it how many seeds to walk through and it returns every variation as a single batch. Set seed_count to 8, get 8 images in one queue run. It's the fastest way to see how a prompt behaves across random states, which is exactly what seed exploration is for.
How it works
Under the hood it's surprisingly un-magical, and that's a good thing. The node grabs ComfyUI's own common_ksampler at runtime - the same function the built-in KSampler uses - so it tracks ComfyUI updates instead of rotting. It takes your starting seed, then for seed_count iterations it samples with seed, seed + 1, seed + 2, and so on, running each pass on the latents you fed in. All results get concatenated into one output LATENT batch.
Two extras separate it from a plain KSampler you'd wire up yourself:
- injected_noise (0–1) - blends a "base" noise from your starting seed with a per-iteration "variation" noise using spherical interpolation (SLERP). At low values you get images that stay close to the seed's composition but wander - the classic recipe for variations that aren't just different random draws.
- Detail Daemon (
dd_enabledplus thedd_*inputs) - a schedule-based detail adjustment that ramps sharpness up or down at specific points in the denoising curve. Thinkdetail_amountas the overall strength,dd_start/dd_endas the window of steps it operates in, anddd_bias/dd_exponentfor shaping the curve. Leave it off until you need it; it's the "advanced" in the node.
Inputs that actually matter
- seed and seed_count - the pair that defines what this node does. Start seed 0, count 10 → seeds 0–9.
- latent_image - a single latent works fine, but feed it a batch and it multiplies:
batch × seed_countgenerations total. - denoise, steps, cfg, sampler_name, scheduler - identical semantics to the built-in KSampler.
- injected_noise - 0 disables it; anything above 0 is the SLERP blend amount.
Output: one LATENT batch with batch × seed_count samples. You decode it with a VAE as usual - a single VAEDecode will happily turn the whole batch into images.
Installing it
It's the pack's flagship, but it installs with everything else:
cd ComfyUI/custom_nodes
git clone https://github.com/Pirog17000/Pirogs-Nodes
pip install -r Pirogs-Nodes/requirements.txt
Or search "Pirog's Nodes" in ComfyUI Manager and restart. Pure PyTorch plus ComfyUI internals - no model downloads, no exotic deps for this node.
Gotchas
The big one is VRAM: 10 seeds at 1024×1024 is 10 latents in one batch, and decode plus save will happily OOM a small card. Dial seed_count down and let it run twice rather than once if your card complains. Also, the Detail Daemon's default window is steps 20%–80% - if you set dd_start higher than dd_end you'll get a curve that makes little sense, so keep the window sane. And remember the output is a batch, not 10 separate images - if your workflow wants to inspect or save each one individually, that's a split/other nodes' job.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising the input latent. | |
| positive | CONDITIONING | The conditioning describing the attributes you want to include in the image. | |
| negative | CONDITIONING | The conditioning describing the attributes you want to exclude from the image. | |
| latent_image | LATENT | The latent image to denoise. | |
| denoise | FLOAT | 1.000–1 | The amount of denoising applied. |
| steps | INT | 201–10000 | The number of steps used in the denoising process. |
| cfg | FLOAT | 8.00–100 | Classifier-Free Guidance scale. |
| seed_count | INT | 11–1000 | The number of seeds to generate images with. |
| seed | INT | 00–18446744073709550000 | The starting random seed. It will be incremented for each image in the batch. |
| sampler_name | COMBO | The algorithm used when sampling. | |
| scheduler | COMBO | The scheduler controls how noise is gradually removed. | |
| injected_noise | FLOAT | 0.000–1 | Strength of noise injection for variation generation. 0.0=disabled, >0.0=blend base and variation noise. |
| dd_enabledopt | BOOLEAN | false | — |
| detail_amountopt | FLOAT | 0.10-5–5 | Overall strength of the detail adjustment. |
| dd_startopt | FLOAT | 0.200–1 | Start of the adjustment curve as a fraction of total steps. |
| dd_endopt | FLOAT | 0.800–1 | End of the adjustment curve as a fraction of total steps. |
| dd_biasopt | FLOAT | 0.500–1 | Curve bias; >0.5 peaks later, <0.5 peaks earlier. |
| dd_exponentopt | FLOAT | 1.000–10 | Exponent for the curve shape. |
| dd_start_offsetopt | FLOAT | 0.00-1–1 | Adjustment multiplier before the curve starts. |
| dd_end_offsetopt | FLOAT | 0.00-1–1 | Adjustment multiplier after the curve ends. |
| dd_fadeopt | FLOAT | 0.000–1 | Fade the entire effect in or out. |
| dd_smoothopt | BOOLEAN | true | Apply smoothing to the curve. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | A batch of denoised latents, one for each seed. |