Nodes/RocM Ninodes/ROCm VAE Decode Tiled
ComfyUI Node

ROCm VAE Decode Tiled

Tiled VAE decode with a temporal dial for video

By iGavroche·Created 11 months ago·Updated a day ago· 43
ROCm VAE Decode Tiled
  • samples
  • vae
  • IMAGE
tile_size768
overlap96
temporal_size64
temporal_overlap8
rocm_optimizationstrue
last_frame_fixfalse

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.

CategoryROCm Ninodes/VAE

Inputs (8)

NameTypeDefaultDescription
samplesLATENTThe latent to be decoded.
vaeVAEThe VAE model used for decoding the latent.
tile_sizeINT768256–2048
overlapINT9632–512
temporal_sizeINT648–4096For video VAEs: frames to decode at once (in OUTPUT frames)
temporal_overlapINT84–4096For video VAEs: frame overlap (in OUTPUT frames). Larger values smooth causal-VAE tile transitions.
rocm_optimizationsBOOLEANtrueEnable ROCm-specific optimizations
last_frame_fixoptBOOLEANfalseRepeat the last latent frame before decode, then discard the extra output frames. Fixes end-of-video artifacts.

Outputs (1)

NameTypeDescription
IMAGEIMAGE