Nodes/Pirog's Nodes for ComfyUI/KSampler (Multi-Seed+)
ComfyUI Node

KSampler (Multi-Seed+)

The all-in-one sampler that tiles, multi-seeds, and decodes — if your VRAM is the bottleneck, read this

By Pirog17000·Created about a year ago·Updated 10 months ago· 3
KSampler (Multi-Seed+)
  • model
  • vae
  • positive
  • negative
  • input_image
  • IMAGE
denoise1.00
steps20
cfg8.0
seed_count1
seed0
sampler_name
scheduler
width512
height512
noise_typevanilla
injected_noise0.00
vertical_splits1
horizontal_splits1
overlap64
tile_supersampling1.0
supersampling_min_resolution512
supersampling_max_resolution2048
dd_enabledfalse
detail_amount0.10
dd_start0.20
dd_end0.80
dd_bias0.50
dd_exponent1.00
dd_start_offset0.00
dd_end_offset0.00
dd_fade0.00
dd_smoothtrue

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 width and height, samples, decodes. Pure txt2img.
  • denoise < 1.0 - it VAE-encodes your input_image and 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.

Categorypirog/sampling

Inputs (32)

NameTypeDefaultDescription
modelMODELThe model used for denoising.
vaeVAEThe VAE model used for encoding/decoding.
positiveCONDITIONINGThe conditioning describing the attributes you want to include in the image.
negativeCONDITIONINGThe conditioning describing the attributes you want to exclude from the image.
denoiseFLOAT1.000–1The amount of denoising applied. 1.0=new image, <1.0=img2img.
stepsINT201–10000The number of steps used in the denoising process.
cfgFLOAT8.00–100Classifier-Free Guidance scale.
seed_countINT11–1000The number of seeds to generate images with.
seedINT00–18446744073709550000The starting random seed. It will be incremented for each image in the batch.
sampler_nameCOMBOThe algorithm used when sampling.
schedulerCOMBOThe scheduler controls how noise is gradually removed.
widthINT51216–16384The width of the generated image in pixels (used when denoise=1.0).
heightINT51216–16384The height of the generated image in pixels (used when denoise=1.0).
noise_typeCOMBOvanilla🎲 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_noiseFLOAT0.000–1Strength of noise injection for variation generation. 0.0=disabled, >0.0=blend base and variation noise.
vertical_splitsINT11–8Number of vertical splits (1 = no splitting, 2+ = process image in tiles)
horizontal_splitsINT11–8Number of horizontal splits (1 = no splitting, 2+ = process image in tiles)
overlapINT640–256Fixed pixel overlap for tile borders (multiple of 8 recommended). Helps reduce seam artifacts between tiles.
tile_supersamplingFLOAT1.01–4Supersampling factor for each tile before processing. The tile is scaled by this amount, processed, and then scaled back down.
supersampling_min_resolutionINT512256–4096The minimum resolution for the longest side of a tile after supersampling. If smaller, the tile will be upscaled to this size.
supersampling_max_resolutionINT2048256–8192The maximum resolution for the longest side of a tile after supersampling. If larger, the tile will be downscaled to this size.
input_imageoptIMAGEInput image for img2img (used when denoise<1.0).
dd_enabledoptBOOLEANfalse
detail_amountoptFLOAT0.10-5–5Overall strength of the detail adjustment.
dd_startoptFLOAT0.200–1Start of the adjustment curve as a fraction of total steps.
dd_endoptFLOAT0.800–1End of the adjustment curve as a fraction of total steps.
dd_biasoptFLOAT0.500–1Curve bias; >0.5 peaks later, <0.5 peaks earlier.
dd_exponentoptFLOAT1.000–10Exponent for the curve shape.
dd_start_offsetoptFLOAT0.00-1–1Adjustment multiplier before the curve starts.
dd_end_offsetoptFLOAT0.00-1–1Adjustment multiplier after the curve ends.
dd_fadeoptFLOAT0.000–1Fade the entire effect in or out.
dd_smoothoptBOOLEANtrueApply smoothing to the curve.

Outputs (1)

NameTypeDescription
IMAGEIMAGEGenerated images, one for each seed.