Nodes/ComfyUI_Fill-Nodes/FL KSampler Plus
ComfyUI Node

FL KSampler Plus

Tiled sampling for big images on modest VRAM

By filliptm·Created 3 years ago·Updated a day ago· 630
FL KSampler Plus
  • model
  • positive
  • negative
  • latent_image
  • vae
  • image
  • model
  • positive
  • negative
  • latent
  • vae
  • image
seed0
steps20
cfg7.00
sampler_name
scheduler
denoise1.00
input_type
x_slices2
y_slices2
overlap0.25
batch_size1
use_sliced_conditioningtrue

When you try to sample a really big latent, you hit a VRAM wall - the whole image has to fit in memory at once, and 2048×2048 on a diffusion transformer will OOM most consumer cards. FL_KsamplerPlus gets around that the same way tiled upscalers do: it slices the image into an overlapping grid, samples each tile separately so only one tile is in VRAM at a time, then blends them back together. The result is arbitrary output size on limited hardware, which is exactly the pitch behind Ultimate SD Upscale and Tiled Diffusion.

The blend is the interesting part. Naive tiling gives you visible seams where tiles meet. This node overlaps the tiles and blends the overlap with cosine-weighted masks, so the join fades instead of snapping. Overlap plus a soft blend is the standard recipe for seamless tiling, and it's why the overlap slider matters more than it looks.

The inputs that actually matter

There's a long parameter list, but most of it is the usual KSampler stuff (model, positive, negative, seed, steps, cfg, sampler_name, scheduler, denoise). The tiling-specific ones are what you tune:

  • x_slices / y_slices (1–8 each) - the grid. 2×2 gives four tiles; 3×3 gives nine. More slices = less VRAM per tile but more total sampling work and more seams to blend. Use the smallest grid that fits.
  • overlap (0–0.9, default 0.25) - how much neighboring tiles share. Too low and seams show through; 0.25 is a sane start, bump it toward 0.3–0.4 if you still see grid lines.
  • input_type - latent or image. If you feed an image, you must also connect a vae so it can encode; the optional image, latent_image, and vae inputs cover both paths.
  • use_sliced_conditioning (default on) - splits your prompt conditioning across tiles.

Outputs are a full passthrough set - model, positive, negative, latent, vae, image - so you can chain straight into another node without re-plugging your model and conditioning. The image output is the decoded result; latent if you want to keep sampling.

Installing it

Part of ComfyUI_Fill-Nodes. ComfyUI Manager: search Fill-Nodes, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

then restart. No extra model download for this node; it uses the model, VAE, and conditioning you wire in.

Where it bites, and the honest caveat

Two traps. First, tiled sampling isn't tiled upscaling. Without a tile-aware condition holding each tile to the source (the way ControlNet Tile does in an Ultimate SD Upscale setup), tiles can quietly diverge - a texture on the left tile drifts from the same texture on the right, and you get a patchwork feel. Keep denoise modest if you're refining an existing image, and expect it to be more forgiving on flat detail than on faces or text spanning a seam. Second, use_sliced_conditioning can smear your prompt: a prompt like "a portrait" applied per-tile means each tile tries to be a whole portrait. For upscale-style refinement it's usually better behaved with the conditioning kept simple.

There's also a V2 of this node in the pack (FL_KsamplerPlusV2) that reworks how conditioning is split across tiles and adds a strength control - if the prompt-smearing above annoys you, jump to that one. This original is the simpler, older version; V2 is the one to reach for if you're starting fresh.

Category🏵️Fill Nodes/Ksamplers

Inputs (18)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT7.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
input_typeCOMBO2 options: latent, image
x_slicesINT21–8
y_slicesINT21–8
overlapFLOAT0.250–0.9
batch_sizeINT11–64
use_sliced_conditioningBOOLEANtrue
latent_imageoptLATENT
vaeoptVAE
imageoptIMAGE

Outputs (6)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
vaeVAE
imageIMAGE