Nodes/SimpleSyrup/Tiling Options
ComfyUI Node

Tiling Options

Sample bigger than your VRAM without buying a new card

By Artificial-Sweetener·Created 5 months ago·Updated 3 days ago· 4
Tiling Options
  • options
  • options
◄diffusion_modemultidiffusion►
◄latent_tile_width128►
◄latent_tile_height128►
◄latent_tile_overlap16►
◄latent_tile_batch_size4►
◄differential_diffusionfalse►

Tiled diffusion is the old, reliable trick for running an image whose latent won't fit in memory: cut the latent into overlapping chunks, evaluate the chunks, blend the results. In A1111 that lived in the Tiled Diffusion extension; in ComfyUI it usually means swapping in a separate "tiled KSampler" node. SimpleSyrup does it differently - the tiling lives in its own little node that you chain into a normal sampler, so the sampling controls stay where you left them.

That's the whole design of this pack's sampling side, and it's worth internalizing before you wire anything: Tiling Options is not a sampler. It's a settings node that outputs one options value which you plug into KSampler (SimpleSyrup), which then does the tiled sampling. Nothing happens until something downstream reads it.

What it actually does

Your latent gets divided into spatial tiles, each tile is evaluated with the same conditioning, and the predictions are combined during every denoising step. Two blend policies are on offer:

  • multidiffusion (the default) - averages overlapping predictions. This is the MultiDiffusion method, and it's the one to start with.
  • mixture_of_diffusers - weights each tile's prediction toward its center with a Gaussian, so the middle of a tile counts for more than its edges. Sharper, slightly more opinionated about where detail comes from.

Tiling keeps each model evaluation small. It does not give the tiles any awareness of the picture as a whole, and that limitation is exactly why the same author built Contextual Diffusion as a separate node - if your tiles are producing a scene that reads like several different images stitched together, tiling is the wrong tool and no overlap value will save you.

The inputs that matter

Everything here is in latent pixels, not image pixels. With an 8x VAE that means latent_tile_width: 128 is a 1024-pixel-wide tile. Run the default 128×128 on a 1024×1024 latent and you have one tile covering the whole thing - congratulations, you turned tiling on and off in the same click. Tiles only do something when they're smaller than your latent.

  • latent_tile_width / latent_tile_height - 16 to 512, default 128. Smaller tiles buy VRAM headroom and cost you context; each tile sees less of the image.
  • latent_tile_overlap - default 16, and it has to stay below the smaller tile dimension. More overlap means fewer seams and more total work.
  • latent_tile_batch_size - default 4. How many tiles get evaluated together. Higher is faster if you have the memory for it.
  • differential_diffusion - off by default. When on, the latent's noise mask varies denoising strength spatially, which is the behavior you want for masked/inpaint-style work. It preserves the model's existing mask behavior rather than replacing it.

The single output is options (type SIMPLE_SYRUP_SAMPLER_OPTIONS). Wire it into another options node or straight into the KSampler's options input, and connect the segs input on that KSampler if you want detected regions to steer where tiles land.

Install

Manager → Node Pack list → search SimpleSyrup → Install → restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
cd SimpleSyrup
python -m pip install -r requirements.txt   # use the SAME python that runs ComfyUI

Windows portable users run that pip line with python_embeded\python.exe from the portable root. The requirements pull in TorchLanc, Ultralytics, ONNX Runtime, segment-anything, timm and friends - a real dependency footprint, because the pack also does detection and tagging. ComfyUI supplies PyTorch itself. The pack uses ComfyUI's v3 extension API, so an old install simply won't show the nodes.

Where people get burned

  • UniPC is rejected. Pick uni_pc or uni_pc_bh2 with MultiDiffusion tiling and you get "Tiling and Contextual Diffusion do not support UniPC samplers." Use a different sampler.
  • ControlNet and regional conditioning are not supported yet. Conditioning carrying control, area or gligen keys gets rejected outright on the tiled path. The author's own message - "does not support regional conditioning or ControlNet in the first implementation."
  • Two tiling nodes, one sampler. A second Tiling Options (or a Contextual Diffusion Options on the same chain) throws Duplicate sampler capability: tiling. Bypass or remove one node. If Contextual Diffusion is connected, it wins: your tiling settings are logged as ignored and replaced. Stacking them does not give you both.
  • Bypass is the off switch. The options nodes take and return the same type, so Ctrl+B on Tiling Options removes its contribution cleanly. Don't delete and rewire.
CategorySimpleSyrup/Sampling/Options

Inputs (7)

NameTypeDefaultDescription
diffusion_modeCOMBOmultidiffusionTile overlap blend. MultiDiffusion averages predictions; Mixture of Diffusers gives tile centers more influence.
latent_tile_widthINT12816–512Width of each latent tile. Larger tiles see more context but use more memory.
latent_tile_heightINT12816–512Height of each latent tile. Larger tiles see more context but use more memory.
latent_tile_overlapINT160–256Overlap between latent tiles. Larger overlaps reduce seams but increase sampling work.
latent_tile_batch_sizeINT41–8Number of latent tiles sampled together. Higher values can be faster but use more memory.
differential_diffusionBOOLEANfalseUses the noise mask to vary denoising strength spatially; preserves existing model mask behavior.
optionsoptSIMPLE_SYRUP_SAMPLER_OPTIONSOptional preceding sampler options; bypass this node to omit its contribution.

Outputs (1)

NameTypeDescription
optionsSIMPLE_SYRUP_SAMPLER_OPTIONSCombined sampler options; connect another options node or KSampler.