KSampler (Multi-Seed+)
The all-in-one sampler that tiles, multi-seeds, and decodes — if your VRAM is the bottleneck, read this
- model
- vae
- positive
- negative
- input_image
- IMAGE
KSampler (Multi-Seed+) is the flagship of Pirog's Nodes, and it's a lot. Where the plain Multi-Seed sampler just walks seeds, this one is a full pipeline in one box: it creates or encodes a latent, samples multiple seeds, decodes back to an image, and - the headline feature - can split your image into overlapping tiles, sample each tile as its own inpainting pass, and stitch them back together. That's the tiled-diffusion trick for generating high resolutions on limited VRAM without the patchwork seams people usually get.
How it works
The flow depends on denoise:
- denoise = 1.0 - it builds an empty latent from
widthandheight, samples, decodes. Pure txt2img. - denoise < 1.0 - it VAE-encodes your
input_imageand treats the whole thing as img2img.
Then the sampler runs seed_count passes with incrementing seeds, like its little sibling. The tiling layer kicks in when you raise vertical_splits or horizontal_splits above 1. Each tile gets an overlap expansion border plus a gradient mask - the tile's center is weighted fully, edges fade toward the next tile - and the tiles are reassembled with weighted accumulation. That gradient-weighting is the difference between "seamless" and "visible grid lines"; it's the part this node actually does well.
There's also noise_type (vanilla / spectral-diverse / hierarchical) for how the initial noise is generated, plus the same Detail Daemon (dd_* inputs) and injected_noise as the base Multi-Seed node.
The inputs that matter
- model, vae, positive, negative - the standard sampler stack, plus a VAE since this node encodes and decodes for you.
- seed / seed_count - how many variations per run.
- width / height - txt2img size when
denoise=1.0. - vertical_splits / horizontal_splits - the tiling switch. 1/1 = no tiling.
- overlap (default 64) - pixels of shared border between tiles. Keep it a multiple of 8.
- tile_supersampling and supersampling_min/max_resolution - tiles get scaled up before processing and back down after, which is how a 1536×1536 tile gets a full 2048px generation budget. This is where the quality lives, and also where the compute time goes.
- input_image - optional, only used for img2img.
Output: IMAGE - decoded images, one per seed, ready to wire straight to a save node.
Where it fits
This is the pack's answer to high-res generation on mid-range cards: instead of OOMing on a 2K latent, you process four 1K tiles. It shares DNA with the tiled-diffusion upscaling approach from the A1111/multidiffusion world, but self-contained. People also use it for outpainting - set a low denoise, feed the existing image, tile outward.
Installing it
Same pack, same install:
cd ComfyUI/custom_nodes
git clone https://github.com/Pirog17000/Pirogs-Nodes
pip install -r Pirogs-Nodes/requirements.txt
Or ComfyUI Manager → search "Pirog's Nodes" → restart. No model downloads.
Gotchas
Tiling is slow - you're sampling each tile as a separate inpainting pass, and supersampling multiplies that. The trade is real: the upscaling KB notes tiled diffusion can use a third of the VRAM of a straight pass but takes far longer. Keep overlap modest (64–128) because every overlap pixel is redundant work. If tiles look disconnected or color-shifted, your denoise is probably too high - this wants to refine, not regenerate. And start with noise_type on vanilla; the fancier noise modes are genuinely experimental.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising. | |
| vae | VAE | The VAE model used for encoding/decoding. | |
| 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. | |
| denoise | FLOAT | 1.000–1 | The amount of denoising applied. 1.0=new image, <1.0=img2img. |
| 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. | |
| width | INT | 51216–16384 | The width of the generated image in pixels (used when denoise=1.0). |
| height | INT | 51216–16384 | The height of the generated image in pixels (used when denoise=1.0). |
| noise_type | COMBO | vanilla | 🎲 Noise Generation Method: • vanilla: Standard ComfyUI noise (torch.randn) - reliable baseline • spectral-diverse: Frequency-controlled noise with pink/blue/hybrid patterns - enhanced diversity • hierarchical: Multi-scale latent-aware noise with statistical modeling - maximum quality Advanced methods produce more diverse and potentially higher quality results. |
| injected_noise | FLOAT | 0.000–1 | Strength of noise injection for variation generation. 0.0=disabled, >0.0=blend base and variation noise. |
| vertical_splits | INT | 11–8 | Number of vertical splits (1 = no splitting, 2+ = process image in tiles) |
| horizontal_splits | INT | 11–8 | Number of horizontal splits (1 = no splitting, 2+ = process image in tiles) |
| overlap | INT | 640–256 | Fixed pixel overlap for tile borders (multiple of 8 recommended). Helps reduce seam artifacts between tiles. |
| tile_supersampling | FLOAT | 1.01–4 | Supersampling factor for each tile before processing. The tile is scaled by this amount, processed, and then scaled back down. |
| supersampling_min_resolution | INT | 512256–4096 | The minimum resolution for the longest side of a tile after supersampling. If smaller, the tile will be upscaled to this size. |
| supersampling_max_resolution | INT | 2048256–8192 | The maximum resolution for the longest side of a tile after supersampling. If larger, the tile will be downscaled to this size. |
| input_imageopt | IMAGE | Input image for img2img (used when denoise<1.0). | |
| 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 |
|---|---|---|
| IMAGE | IMAGE | Generated images, one for each seed. |