Nodes/ComfyUI-LTXVideo/πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode
ComfyUI Node Runs on cloud

πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode

The lighter, spatial-only way to survive the decode step

By LightricksΒ·Created 2 years agoΒ·Updated about a month agoΒ· 3,956
πŸ…›πŸ…£πŸ…§ LTXV Tiled VAE Decode
  • vae
  • latents
  • image
β—„horizontal_tiles1β–Ί
β—„vertical_tiles1β–Ί
β—„overlap1β–Ί
β—„last_frame_fixfalseβ–Ί
β—„working_deviceautoβ–Ί
β—„working_dtypeautoβ–Ί

This is the simpler of LTX's two tiled decoders. Same job as its bigger sibling - turn a finished LTX video latent into frames without an out-of-memory crash - but it only tiles the frame, not time. If the plain decode node is choking on your resolution, this is the one you drop in.

Quick recap on why this even comes up. LTX runs its diffusion in a compressed latent and hands you a tiny tensor at the end; the VAE decode is what inflates that back into real pixels, and it's a memory spike. On a big frame that spike can blow past your VRAM. Tiled decode is the classic ComfyUI answer: cut the picture into a grid, decode the pieces one at a time, blend the overlaps back together. People have used tiled VAE to decode 2048px images on 6GB cards for years - this is that same trick, wired for LTX's decoder.

Spatial only - and why that matters

The important thing to understand is what this node doesn't do: it decodes every frame of your clip in one pass and only splits along width and height. That's perfect when a single high-resolution frame is what's straining VRAM. It is not enough when the problem is that you have a lot of frames - a 20-second clip is a mountain of frames, and no amount of splitting each frame smaller fixes the fact that they're all being decoded at once. For that you want the LTXV Spatio Temporal Tiled VAE Decode, which also chunks the timeline. So: short clip, big frames β†’ this node. Long clip β†’ the spatio-temporal one. That's the whole decision.

The inputs that matter

Feed it vae and latents, take image out. The knobs:

  • horizontal_tiles / vertical_tiles (both default 1) - the grid. Note the defaults: 1 Γ— 1 is no tiling at all, i.e. decode the whole frame in one go. You only raise these once you actually OOM. A 2Γ—2 or 3Γ—3 grid usually buys plenty of headroom.
  • overlap (default 1) - how much neighboring tiles share so the seams blend. If you see faint grid lines across the decoded video, this is the fix - turn it up. Minimum here is 1, so unlike the spatio-temporal node you can't set it to zero.

Two optional dials do the same duty they do everywhere: working_dtype defaults to auto, but force it to float32 if frames decode to black or NaN - video VAEs can overflow in fp16, and full precision is the dependable escape. working_device can shove the decode onto cpu if you'd rather wait than crash. There's also last_frame_fix, off by default - a toggle for a known artifact on the very last frame; leave it alone unless that final frame comes out mangled.

The lone output is image, a normal IMAGE batch. It doesn't write a file - run it into a Video Combine node (VideoHelperSuite) to mux the frames into an mp4.

Installing it

It's part of Lightricks' ComfyUI-LTXVideo pack, so you install the pack once and get every LTX node. In ComfyUI Manager, hit Install Custom Nodes, search "LTXVideo", install, restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/Lightricks/ComfyUI-LTXVideo

then restart; nodes appear under "LTXVideo". Pack-level reality check: LTX-2/2.3 is a big model, and the README wants 32GB+ VRAM and 100GB+ disk, with the checkpoints and text encoder pulling down on first use. The decode nodes are the part that helps a modest card cope, but the rest of the graph still needs the model in memory.

When it goes wrong

OOM on decode β†’ raise horizontal_tiles and vertical_tiles. Grid seams in the output β†’ raise overlap. Black frames β†’ working_dtype to float32. And the one that trips people up: if you crank the tile counts and it still OOMs, your problem isn't resolution, it's frame count - the whole clip is being decoded at once and spatial tiling can't help. Switch to the spatio-temporal decoder and shrink its temporal_tile_length instead. Don't tile harder than you need to, either; extra tiles mean extra stitching and a slower decode for no benefit.

Categorylatent

Inputs (8)

NameTypeDefaultDescription
vaeVAEβ€”
latentsLATENTβ€”
horizontal_tilesINT11–6β€”
vertical_tilesINT11–6β€”
overlapINT11–8β€”
last_frame_fixBOOLEANfalseβ€”
working_deviceoptCOMBOauto2 options: cpu, auto
working_dtypeoptCOMBOauto3 options: float16, float32, auto

Outputs (1)

NameTypeDescription
imageIMAGEβ€”