ROCm VAE Decode Tiled
Tiled VAE decode with a temporal dial for video
- samples
- vae
- IMAGE
ROCm VAE Decode Tiled is the more manual cousin of ROCm VAE Decode: it gives you direct control over spatial tile size and, uniquely, temporal tiling for video, and hands the whole job to the VAE's built-in tiled decoder. If the main decode node is "set and forget," this one is "set precisely." Use it when you're decoding very large stills or long videos and you want to own every tiling parameter.
It lives in ROCm Ninodes/VAE, right next to the main decode node.
How it works
Under the hood it's a thin, careful wrapper around vae.decode_tiled. Your tile_size and overlap are in output pixels, so it divides them by the VAE's spatial compression to get latent-space tile sizes - for an 8× SD-class VAE, a 768 tile becomes a 96×96 latent tile. For video VAEs it does the same with the temporal axis: temporal_size (frames at once) and temporal_overlap get divided by the temporal compression, so a temporal_size of 64 becomes the right number of latent frames for whatever VAE you're running. It also quietly sanity-checks your numbers - if you set overlap too big relative to tile size, it clamps it to a sane quarter.
When rocm_optimizations is on it applies the pack's AMD settings around the decode; when off it's a plain tiled decode with the same controls.
The inputs that matter
- samples / vae - the latent and VAE, same as any decode.
- tile_size (768) / overlap (96) - spatial controls. 768 is a sensible default; drop it if you OOM on big stills, raise it on a card with headroom.
- temporal_size (64) - for video VAEs, output frames decoded per temporal chunk. The dial that trades memory against speed.
- temporal_overlap (8) - frames of overlap between temporal chunks; more overlap means smoother transitions and more work.
- rocm_optimizations (on) - the ROCm settings toggle.
Output is IMAGE.
Installing it
Same pack install as everything in ROCm Ninodes - ComfyUI Manager, search rocm-ninodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/iGavroche/rocm-ninodes.git
then restart; v1.x installs run uv run python tools/upgrade_to_v2.py once. Dependencies: numpy, Pillow, psutil, gguf, safetensors on a ROCm PyTorch build.
The honest version
For stills under about 1024×1024, you don't need this node - the plain ROCm VAE Decode auto-tiles when it needs to and keeps the temporal knobs tucked behind "auto." The tiled variant earns its place in two situations: huge stills where you want to pin the tile size yourself, and video where you want explicit, manual temporal chunking rather than the auto threshold. Just remember the overlap math: too little overlap and you'll see tile seams, too much and you're paying for it twice. Defaults are sane; change one thing at a time.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | The latent to be decoded. | |
| vae | VAE | The VAE model used for decoding the latent. | |
| tile_size | INT | 768256–2048 | — |
| overlap | INT | 9632–512 | — |
| temporal_size | INT | 648–4096 | For video VAEs: frames to decode at once (in OUTPUT frames) |
| temporal_overlap | INT | 84–4096 | For video VAEs: frame overlap (in OUTPUT frames). Larger values smooth causal-VAE tile transitions. |
| rocm_optimizations | BOOLEAN | true | Enable ROCm-specific optimizations |
| last_frame_fixopt | BOOLEAN | false | Repeat the last latent frame before decode, then discard the extra output frames. Fixes end-of-video artifacts. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |