Nodes/Lumina_NIVR2/SeedVR2 VAE Settings
ComfyUI Node

SeedVR2 VAE Settings

The one knob that decides whether your VAE fits in VRAM

By Luminatrixx·Created about a month ago·Updated about a month ago· 2
SeedVR2 VAE Settings
  • vae
  • VAE
chunk_size4

SeedVR2's VAE is not a normal VAE. It's a causal video VAE that streams along the time axis in chunks, and how big those chunks are is the difference between "encode/decode is fine" and "CUDA out of memory, again." The stock Load VAE node has no dial for it, because no other model you're loading needs one. That's the entire reason this node exists: it's the chunk-size knob for a VAE whose memory behavior only makes sense as a tunable.

What it does

SeedVR2 VAE Settings takes a VAE straight out of native Load VAE and adjusts its temporal streaming chunk size before you run VAE Encode or VAE Decode on it. Under the hood it's a one-liner: it sets the VAE's slicing_sample_min_size to your chosen value. But that one value is the speed/VRAM trade for the whole VAE pass, and it has no native equivalent because the native nodes never touch this setting for the models they were built for.

The trade-off is exactly what the tooltip says:

  • Larger chunk - fewer, bigger causal-conv passes. Faster, but more VRAM while a pass runs.
  • Smaller chunk - more, smaller passes. Slower, but a much smaller working set.

The default is chunk_size = 4, and it's the safe starting point. 4 is also the floor, and the value must stay a multiple of 4 - that's the causal temporal downsample factor of the architecture, so a non-multiple isn't just suboptimal, it's meaningless.

Inputs and wiring

Two inputs, one output:

  • vae - from native Load VAE, selecting ema_vae_fp16.safetensors from the SeedVR2 model folder.
  • chunk_size - the dial. Default 4, minimum 4, steps of 4. This is the only thing you'll actually set.
  • output - the same VAE, patched, which you then feed into native VAE Encode / VAE Decode (or the native tiled VAE nodes).

Worth being crystal clear about what this node does not do: it controls temporal streaming only. Spatial tiling is a separate job, and it's handled by ComfyUI's native tiled VAE nodes, which work fine against the patched VAE. On large images you'll often want both - small temporal chunk here, spatial tiling downstream.

The VAE processes one clip per call and the temporal dimension is frames, so if you're upscaling video, clip length is part of the memory equation too. Shorter clips plus a small chunk is the reliable way to get long sequences through on consumer VRAM.

Install

Standard pack install - the VAE Settings node ships in the same Luminatrixx/NIVR2 clone as the rest:

cd ComfyUI/custom_nodes
git clone https://github.com/Luminatrixx/NIVR2
python -m pip install einops opencv-python numpy

Restart ComfyUI after that. ComfyUI Manager support is marked "soon"; manual install is the current path. The VAE checkpoint itself is a manual download - it's part of the Comfy-Org/SeedVR2 release and goes in ComfyUI/models/nivr2_vae/ (or the native models/vae/ folder).

Troubleshooting

  • OOM during encode or decode - the README's escalation ladder starts right here: chunk_size = 4, add native tiled VAE, shorten the clip, lower resolution. If you're on a 7B DiT too, drop to the 3B checkpoint.
  • "Must remain a multiple of 4" errors - you typed something like 6 or 10. Use 4, 8, 12…
  • Still OOM after chunk = 4? - this node tunes the VAE, but the DiT is the other VRAM hog. Consider the fp8 checkpoint when VRAM is the bottleneck. One caveat: SeedVR2 is famously quantization-sensitive - the community settled on FP16 for quality, with FP8 known to add tiling-grid artifacts and GGUF damaging skin texture. If quality matters, shrink the model size before you shrink the precision.

The honest summary: this is the boring, reliable node of the four. You wire it once, set chunk to 4, and it quietly prevents the most common VAE failure in the whole SeedVR2 workflow. Bump the chunk to 8 or 12 only after the rest of your pipeline is stable and you know you have the VRAM to spare.

CategoryLumina NIVR2

Inputs (2)

NameTypeDefaultDescription
vaeVAEVAE from native Load VAE (SeedVR2 checkpoint).
chunk_sizeoptINT4Causal temporal streaming chunk size in frames (multiple of 4). Larger = faster, more VRAM. Smaller = slower, less VRAM.

Outputs (1)

NameTypeDescription
VAEVAEVAE with the streaming chunk size applied.