Nodes/ComfyUI-Inference-Core-Nodes/[Inference.Core] Tile
ComfyUI Node

[Inference.Core] Tile

The Preprocessor Behind Every Tiled Upscale Workflow

By LykosAI·Created 2 years ago·Updated about a year ago· 33
[Inference.Core] Tile
  • image
  • IMAGE
pyrUp_iters3
resolution512

If you've ever run an Ultimate SD Upscale workflow or anything billed as "detail-preserving upscale," there's a good chance a Tile preprocessor was doing the quiet work underneath. The whole idea is simple and a little counterintuitive: feed the model a blurred version of the original image as the condition, at low control weight, and let it add detail back in while staying faithful to what was already there. It's the foundation of tiled upscaling and it's also a decent style-transfer trick on its own if you push the weight down further.

The mechanism is classical image processing, not a neural net - no model download involved here. It runs a Gaussian pyramid blur pass (pyrUp/pyrDown) over your image, and pyrUp_iters controls how many times that pass runs. More iterations means a blurrier, softer condition image, which gives the sampler more room to hallucinate new detail; fewer iterations keeps the condition closer to the source, which is more faithful but leaves less room for the model to actually improve anything. resolution is the usual preprocessor knob - the size the image gets processed at before being handed off, independent of your final generation size.

What you actually set: image is required, everything else is optional with sane defaults (pyrUp_iters at 3, resolution at 512). The single output is IMAGE, wired into a ControlNet Apply node alongside a Tile ControlNet checkpoint - and that checkpoint is the part people forget. This preprocessor does nothing on its own; you still need to load a matching Tile ControlNet model separately.

One honest caveat worth knowing before you build around this: Tile's fortunes have varied a lot by base model. SD 1.5's tile ControlNet is still called out by the community as genuinely good - "SD 1.5 has a really good tile controlnet for a model that's almost 4 years old now" is a live opinion, not nostalgia. SDXL's xinsir union model carries tile support too. But Shakker's Flux.1 Union Pro 2.0 actually dropped tile in its 2.0 revision, which annoyed exactly the people who came for the upscaler workflow - so if you're on Flux and reaching for Tile expecting parity with SD 1.5, check which union you loaded before assuming it's broken.

Installing it: this comes from LykosAI's ComfyUI-Inference-Core-Nodes pack - LykosAI also builds Stability Matrix, so the install story is more polished than a typical solo node pack. Easiest route is ComfyUI Manager: search for "ComfyUI-Inference-Core-Nodes" and install from there. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes, then run install.py against ComfyUI's own Python environment, or pip install -e .[cuda] / .[cuda12] / .[rocm] / .[directml] / .[cpu] matched to your hardware for accelerated onnxruntime, or a plain pip install -e . if you just want it working without acceleration. Restart ComfyUI afterward.

Troubleshooting: Tile itself is a lightweight classical op, so it rarely misbehaves at runtime. The failure people actually report is the pack failing to import at all - ModuleNotFoundError: No module named 'inference_core_nodes' shows up when the Python package half of the install never completed, usually from running install.py against the wrong interpreter on a portable ComfyUI build. There's also a real report of the whole pack failing to load on Mac (M-series) with an IMPORT FAILED error, flagged by another user specifically as this node pack conflicting with others over platform-specific dependencies - if you're off Windows/Linux+NVIDIA, keep that in mind as a possibility rather than assuming your setup is uniquely broken. If detail just isn't showing up in your output, that's not this node's fault - check your control weight first; Tile wants to run low (0.3–0.5-ish) or it just reproduces the blur instead of adding anything.

CategoryControlNet Preprocessors/others

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
pyrUp_itersoptINT31–10
resolutionoptINT51264–2048

Outputs (1)

NameTypeDescription
IMAGEIMAGE