Nodes/WanImageToVideoTiledVAE for ComfyUI/WanVaceToVideo (Tiled VAE encode)
ComfyUI Node

WanVaceToVideo (Tiled VAE encode)

VACE video-to-video, now with an encode that won't OOM

By stduhpf·Created about a year ago·Updated 10 months ago· 16
WanVaceToVideo (Tiled VAE encode)
  • positive
  • negative
  • vae
  • control_video
  • control_masks
  • reference_image
  • positive
  • negative
  • latent
  • trim_latent
width832
height480
length81
batch_size1
strength1.00
tile_size512
overlap64
temporal_size64
temporal_overlap8

VACE is Alibaba's video-to-video and inpainting framework for Wan - the thing that turns a pose video into character-consistent footage, or drives motion with a mask. It's also one of the slowest, most VRAM-hungry corners of the whole Wan ecosystem. WanVaceToVideo (Tiled VAE encode) is the drop-in replacement for the core WanVaceToVideo node that tiles the VAE encode so the VACE pipeline stops dying before it even starts denoising.

It's the same philosophy as the rest of this pack: identical inputs and outputs to the built-in node, but every video frame (the control video, the reference image, the masked and unmasked passes) runs through vae.encode_tiled() with spatial tiles and temporal frame-chunks instead of one monolithic encode. Note the source marks this one EXPERIMENTAL - it's flagged as such in ComfyUI, so expect it to be a little rougher around the edges than the core I2V node.

What you feed it

  • control_video - the footage that drives motion. VACE compares it against its reference to figure out what's moving.
  • control_masks - a MASK that decides which regions of the control video actually influence the result. No mask = the whole video is live.
  • reference_image - one image that anchors identity. This is the "video-to-video" trick: motion from the video, look from the image.
  • strength - how hard VACE's conditioning pushes on the denoiser. 1.0 is the default; raise or lower it to taste.
  • Plus the usual width / height / length / batch_size, and the four tiling knobs tile_size / overlap / temporal_size / temporal_overlap.

The output most people trip over

Outputs are positive, negative, latent - and a fourth one called trim_latent. That last one exists because when you supply a reference_image, VACE prepends it to the front of the latent timeline so the model can use it as context. trim_latent tells you how many leading latent frames are just reference context. After sampling, trim that many frames off the start of the video (ComfyUI's latent crop/offset nodes handle this) - otherwise your clip opens with a few frozen frames of the reference image. Easy to miss, and it'll confuse you exactly once.

Install and caveats

Install is the pack standard - ComfyUI Manager, search "WanImageToVideoTiled", or:

cd ComfyUI/custom_nodes
git clone https://github.com/stduhpf/ComfyUI--WanImageToVideoTiled

Restart and you're set; nothing extra to download, since it borrows the VACE conditioning helpers straight from ComfyUI's core. Pair the front end with VAE Decode (Tiled) on the way out - VACE renders are long, and tiled decode is the difference between a quick preview and watching paint dry.

Two honest warnings before you dive in. First, the tiled encode only helps the VAE stage; VACE's denoiser is still a VRAM hog and will happily OOM on its own. Second, VACE is slow no matter what you do - the community treats 15–40 minutes per clip on a 4090 as normal. This node makes the encode part survivable on weaker cards, not fast. And remember the README lists VACE as tested, so you're on the more reliable half of the pack.

Categoryconditioning/video_models

Inputs (15)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–16384
heightINT48016–16384
lengthINT811–16384
batch_sizeINT11–4096
strengthFLOAT1.000–1000
tile_sizeINT51264–4096
overlapINT640–4096
temporal_sizeINT648–4096Amount of frames to encode at a time.
temporal_overlapINT84–4096Amount of frames to overlap.
control_videooptIMAGE
control_masksoptMASK
reference_imageoptIMAGE

Outputs (4)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_latentINT