Nodes/ComfyUI-DaSiWa-Nodes/Tiled Diffusion (Image)
ComfyUI Node

Tiled Diffusion (Image)

Tiling inside the sampler, not a second pass

By darksidewalker·Created 7 months ago·Updated 2 days ago· 162
Tiled Diffusion (Image)
  • model
  • MODEL
◄tile_width1024►
◄tile_height1024►
◄overlap128►

If you've ever typed 2048×2048 into an SDXL workflow and gotten three people fused into a sofa, you already know the problem this node is aimed at. Models are trained at a resolution. Ask for more and attention spreads itself thin across too many tokens - duplicated limbs, a second horizon line, texture that goes soupy in the middle. The old answers are hi-res fix or a tiled upscaler. This is a third, much smaller answer: one node, four fields, no upscale model, no second pass.

It's DaSiWaTiledDiffusion from darksidewalker's ComfyUI-DaSiWa-Nodes pack, listed as Tiled Diffusion (Image). Same darksidewalker behind the DaSiWa Wan 2.2 workflows people pass around Civitai, which is why the name looks familiar even if the node doesn't.

How it works - the tiling is inside the sampler, not after it

This is the part worth understanding, because it's not Ultimate SD Upscale wearing a different hat.

The node patches your MODEL with a model_function_wrapper. Each time the sampler asks for a prediction, the wrapper doesn't hand over the full latent: it walks the latent in overlapping tiles, runs the denoiser once per tile, merges the predictions with a separable tent weight in fp32, and divides by the accumulated weight buffer. Next step, same again, on the partially-denoised latent.

Two things follow. The sigma is global - every tile is denoised on the same step of the same trajectory, so tiles can't drift into different images the way post-hoc tiling does. And VRAM per forward is one tile's attention, not the canvas. No upscale model, no noise inversion, no VAE tiling, no seam-fixer pass - the blend is the seam fix.

The fields that matter

model takes the output of your checkpoint loader (or anything emitting MODEL, LoRAs included). tile_width and tile_height default to 1024 and should match the resolution the checkpoint was trained at - 512 for SD 1.5, 1024 for SDXL or Flux. Smaller and each tile thinks it's looking at a zoomed crop; bigger and you pay VRAM for nothing. Both must be multiples of 8 (really, of the model's latent scale) or the node raises on patch.

overlap is the one people under-set. Default 128 px; the docs say 64+ is where seams stop showing, and it must be smaller than both tile sizes or you get a ValueError. Higher overlap means more forwards per step, so it's a real speed/quality dial, not a free win.

One output, MODEL, into the sampler's model socket. Conditioning, latent and VAE stay exactly as they were, and any sampler or scheduler works, since the tiling happens below the sampler. If the latent already fits in one tile, the wrapper short-circuits to a single ordinary model call - leaving it patched costs nothing on small images.

Installing

ComfyUI Manager → search DaSiWa-Nodes. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/darksidewalker/ComfyUI-DaSiWa-Nodes
cd ComfyUI-DaSiWa-Nodes && pip install -r requirements.txt

Fair warning on that second command: this node needs nothing but torch, and the pack's requirements are not this node's requirements. The list carries nvidia-vfx, av>=18, transformers, accelerate and llama-cpp-python for the RTX, video and LLM nodes elsewhere in the collection. PyAV is imported at pack load, so it isn't optional if you want the pack to import at all; the NVIDIA bits are lazy and only complain when you run an RTX node. The README's "RTX GPU, drivers 530+" line is about those nodes too - tiled sampling runs on anything torch runs on.

Where people get burned

ControlNet is not supported. The wrapper spots control in the conditioning and raises, deliberately. That matters more than it sounds, because the standard upscaling recipe is tiled diffusion plus ControlNet Tile to stop tiles drifting into patchwork - the KB's own upscaling guidance leans on exactly that, and here you can't have both. So the safe uses are text-to-image at a large canvas (no source to diverge from) and an img2img pass at low denoise, 0.3–0.4, where composition is already pinned. If you want the Tile-ControlNet recipe, this is the wrong node.

It's image only. 4-D latents. Point it at a video model and it raises - for H3 there's a separate node in the same pack.

Only sampling is tiled. Decoding a 2048² latent still costs what it costs; if your VAE decode is what OOMs, this node won't save you.

Slow, as designed. Per-step tiling multiplies model forwards by roughly the tile count. You're trading time for VRAM and for a resolution the model can actually handle. If a single native-resolution pass plus a good upscale gets you there, that's usually the faster road - the tiled path earns its place when the structure has to be generated at size, not just the detail.

CategoryDaSiWa/Image

Inputs (4)

NameTypeDefaultDescription
modelMODELImage diffusion model to patch; use the native checkpoint resolution as tile size.
tile_widthINT102464–8192Tile width in pixels (multiple of the model's latent scale, usually 8).
tile_heightINT102464–8192Tile height in pixels (multiple of the model's latent scale, usually 8).
overlapINT1280–1024Overlap between neighbouring tiles in pixels; 64 or more hides seams.

Outputs (1)

NameTypeDescription
MODELMODEL—