Nodes/alex-seedvr-node/SeedVR2 Extra Args
ComfyUI Node

SeedVR2 Extra Args

Where you go to stop SeedVR2 from eating your VRAM

By shangeethAlex·Created 11 months ago·Updated 11 months ago· 2
SeedVR2 Extra Args
    • extra_args
    tiled_vaefalse
    vae_tile_size512
    vae_tile_overlap64
    preserve_vramfalse
    cache_modelfalse
    enable_debugfalse
    devicenone

    Let's clear up the name first: "extra args" sounds like an escape hatch for people who read source code for fun. It isn't. This node is the settings drawer for the SeedVR2 upscaler - specifically the memory-management knobs the main node keeps off its face. If you've run SeedVR2 for more than a day you've hit "CUDA out of memory"; this is the node that fixes it.

    Before anything, know where you are. This node ships in shangeethAlex/alex-seedvr-node, a re-branded fork of the pack everyone actually runs, numz/ComfyUI-SeedVR2_VideoUpscaler. The README in the repo is literally still numz's, re-labelled "RunPodSkin Edition by Alex" in the package metadata. The three nodes inside are the same three: the SeedVR2 Video Upscaler, the BlockSwap Config, and this one. SeedVR2 is ByteDance's one-step diffusion restoration model, and it became the default "add detail" upscaler basically by accident - built for video, adopted for stills, praised in the community as "when an upscaler is so good it feels illegal." The catch: it's a VRAM hog and it earned a reputation for OOMs. Tiled VAE and preserve_vram are what settled that down.

    What it actually does

    It's a pure config-builder. You set its inputs and it emits a single extra_args object that plugs into the optional extra_args input on the SeedVR2 Video Upscaler node, which reads the dict and applies your settings.

    Here's the part most people miss: wiring it up is entirely optional. Leave extra_args unplugged and the upscaler just runs on hard-coded defaults - tiled VAE off, preserve_vram off, no debug logging. You add this node when you need to change one of those, which is almost always when OOM bites.

    The inputs that matter

    Most are "only touch when something breaks," but a few earn their keep:

    • tiled_vae - the OOM fix. Runs the VAE in tiles instead of one pass. Cuts VRAM, costs speed, and risks visible seams. The tooltip is blunt about it: only enable if you're out of memory.
    • vae_tile_size (default 512) and vae_tile_overlap (default 64) - the seam-versus-VRAM dials. Smaller tiles use less memory but show more seams; higher overlap blends seams away but runs slower. Find the smallest size where the grid lines stop showing.
    • preserve_vram - offloads models between steps. Slower, but often the difference between "works on a 16GB card" and "dies at step 1."
    • cache_model - the opposite spirit: keeps the model and VAE in RAM between runs for faster batch work. One-off image? Leave it off.
    • enable_debug - structured memory and timing logging. On when diagnosing an OOM, off otherwise; it spams your console.
    • device - which GPU to run on. One choice on a single-card box; on a multi-GPU RunPod instance, which is this fork's whole audience, you actually get to pick.

    Installing it

    The usual two paths:

    # ComfyUI Manager: search "seedvr2", click Install, restart
    cd ComfyUI/custom_nodes
    git clone https://github.com/shangeethAlex/alex-seedvr-node
    

    Then restart ComfyUI. The requirements file pulls in diffusers, omegaconf, rotary_embedding_torch, opencv-python and friends - let Manager handle it or run pip install -r requirements.txt. The actual model (3B or 7B, FP16 or FP8) auto-downloads into models/SEEDVR2 from Hugging Face on first use. And heed the README's honest warning: even the 3B model wants roughly 18GB of VRAM to breathe, and temporal consistency needs a batch size of at least 5.

    The traps to avoid

    Two things. First: tiling grids in your output don't automatically mean tiled_vae is the culprit - the community found FP8 weights also introduce tiling artifacts, and FP16 is the clean default. Change weights before you start shrinking tiles. Second, and this applies to all of SeedVR2: it lifts contrast and can rewrite skin texture on faces. No extra-args knob fixes either; the fix is FP16 weights and giving faces their own pass.

    One pro tip that lives well next to this node, from Comfy Org's upscaling handbook: if your source is soft rather than small, downscale it to about 0.35 megapixels before upscaling. There's no detail to recover at full resolution, and you use less VRAM doing it.

    Honestly? Most people should just install the numz pack. Reach for this fork if you're on RunPod and want the multi-GPU device picker with a tidy registry entry. And reach for SeedVR2ExtraArgs the first time a SeedVR2 workflow OOMs - that's exactly what it exists for.

    CategorySEEDVR2

    Inputs (7)

    NameTypeDefaultDescription
    tiled_vaeBOOLEANfalseProcess VAE in tiles to reduce VRAM usage but slower with potential artifacts. Only enable if running out of memory.
    vae_tile_sizeINT512VAE tile size in pixels. Smaller = less VRAM but more seams/artifacts and slower. Larger = more VRAM but better quality and faster.
    vae_tile_overlapINT64Pixel overlap between tiles to reduce visible seams. Higher = better blending but slower processing.
    preserve_vramBOOLEANfalseOffload models between steps to save VRAM. Slower but uses less memory.
    cache_modelBOOLEANfalseKeep model and VAE in RAM between runs. Speeds up batch processing.
    enable_debugBOOLEANfalseShow detailed memory usage and timing information during generation.
    deviceCOMBOnone1 options: none

    Outputs (1)

    NameTypeDescription
    extra_argsextra_args