SeedVR2 Tile Splitter (VRAM Aware)
Your SeedVR2 is OOMing because of the tile size, not the model
- image
- tiles
- tile_resolution
- tile_max_resolution
- tile_info
SeedVR2 is the best image upscaler most people can run - a ByteDance model that does restoration detail work on a 6GB card, which is why it became the default. The catch is the official node was "famous for its OOM errors" before tiling options settled it down, and manually picking tile sizes is where beginners lose an evening. This node is the tiling, done for you: it looks at your VRAM, picks a sane tile size, slices your image into overlapping tiles, and hands them to the SeedVR2 node in one batch.
It's a pre-processor, not an upscaler. This pack contains no model weights and doesn't ship the SeedVR2 node - you still need numz/ComfyUI-SeedVR2_VideoUpscaler installed for the actual upscaling. The Tile Splitter sits in front of it, and this pack's Tile Stitcher goes after it. In a graph: splitter → SeedVR2 node → stitcher.
How it works
The vram_mode dropdown is the whole trick. In Auto it reads your GPU's total VRAM: under 8.5GB it targets ~0.75 megapixel tiles (about 864px a side), up to 12.5GB gets ~1.2MP (~1088px), and 16GB+ gets ~2.0MP (~1408px). Sensible defaults - those numbers sit right where the community lands after trial and error. You can override manually with Low (8GB) / Medium (12GB) / High (16GB+).
A few mechanics worth knowing:
- Tiles are rounded to a multiple of 8 pixels, which keeps the model's attention windows happy.
- The image is reflect-padded at the borders so edge tiles don't get cut mid-texture.
- All tiles come out the same size in a single stacked batch - that's what lets the SeedVR2 node process them in one go.
- If you turn on
noise_injection, it adds noise scaled by luminance (rec. 709 luma weights), so pure-black areas stay clean. It's meant for detail-adding img2img passes, not restoration. - Tiles are emitted as bfloat16 when your GPU supports it, leaving headroom for the model.
The inputs that matter
You'll actually touch three things:
upscale_by(default 2.0) - set this to the same factor you give the SeedVR2 node. It doesn't resize anything itself; it's what the node uses to compute the two INT outputs below.overlap(default 128) - how many pixels tiles share. Higher = smoother blending downstream and less chance of seams, at the cost of recomputing more pixels. 128 is a fine starting point; drop it if you're still tight on VRAM.noise_injection(default 0.05) - leave at 0 for plain restoration; turn it up only when you want the diffusion pass to invent more detail. If you see speckle, this is the first suspect.
vram_mode speaks for itself: if Auto OOMs you, force the next step down.
Outputs
tiles(IMAGE) - feed this into the SeedVR2 node's image input.tile_info(TILE_INFO) - this pack's custom type; it carries the grid layout, overlap, and original dimensions to the Tile Stitcher. Without it the stitcher can't reconstruct anything.tile_resolution/tile_max_resolution(INT) - the subtle bit. The SeedVR2 node wants to know its output resolution, and if you let it auto-size each tile it'll get edge tiles wrong. Feed these into the node's resolution inputs so every tile upscales to the same target. Exact wiring varies by SeedVR2 node version, but "give it the min and max tile resolution" is the rule.
Installing
It's one of the rare packs with zero extra dependencies - the repo has no requirements.txt; it's pure torch and torch.nn.functional.
ComfyUI Manager: search "SeedVR2 TilingWrapper" (or "SeedVR2") and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/turinastudio/ComfyUI-SeedVR2-TilingWrapper.git
Then restart ComfyUI - the four nodes appear under the SeedVR2_Tiling category.
One real gotcha: the README's own clone command still points at a stale shikasensei-dev/... URL from before the repo changed hands to Turina Studio. Use the turinastudio one above (or let Manager resolve it), and don't panic when the README's link 404s.
Common issues
- It OOMs anyway. You're on an 8GB card and Auto picked Medium-ish sizes - force
vram_modeto Low. Also dropoverlapto 64–96; that removes real pixels from the batch. - "This node does nothing." Correct - it doesn't upscale. Missing the numz SeedVR2 node is the usual cause, not a bug in this pack.
- Tile size mismatch between what you set and what the SeedVR2 node outputs. Re-check that
upscale_bymatches the node's scale and the two INT outputs actually reached it - a wiring miss always shows up as grid artifacts.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| upscale_by | FLOAT | 2.01–4 | — |
| overlap | INT | 1280–512 | — |
| noise_injection | FLOAT | 0.050–0.5 | — |
| vram_mode | COMBO | Auto | 4 options: Auto, Low (8GB), Medium (12GB), High (16GB+) |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| tiles | IMAGE | — |
| tile_resolution | INT | — |
| tile_max_resolution | INT | — |
| tile_info | TILE_INFO | — |