Nodes/ComfyUI-FlashVSR-Stock/Load FlashVSR TCDecoder
ComfyUI Node

Load FlashVSR TCDecoder

Load the Tiny Conditional Decoder, the fast decode option

By Pizzawookiee·Created about a month ago·Updated 7 days ago· 2
Load FlashVSR TCDecoder
    • FLASHVSR_DECODER
    decoder_name
    compute_dtype
    fuse_tgrowfalse
    channels_lastfalse
    compile_memblocksfalse

    FlashVSR doesn't decode its latents with the stock Wan VAE if you don't want it to - it ships a separate, smaller decoder called the Tiny Conditional Decoder (TCDecoder) that is the speed option. This loader is where you bring that decoder into the graph. The trade, stated up front so nobody learns it the expensive way: the stock Wan VAE is the quality reference, and TCDecoder is faster but is a different decoder, so it may not match the VAE's output exactly. You pick which one to decode with - this node only exists if you're picking the fast side.

    How it works

    It loads TCDecoder.safetensors (or any file with tcdecoder in the name) from ComfyUI/models/flashvsr/ and returns a FLASHVSR_DECODER object, which you feed to FlashVSR Tiny Decode. The load-time options are where this node earns its keep, because they're really VRAM controls in disguise:

    • compute_dtype (auto, bf16, fp16, fp32) - converts the released FP32 weights once at load. On a low-VRAM card, pick fp16/bf16; fp32 only if you're chasing exact storage fidelity.
    • fuse_tgrow (default off) - composes each linear temporal-growth 1×1 conv with its following 3×3 conv at load time. Mathematically equivalent, removes three convolutions and their intermediate activations, but may pick a larger cuDNN workspace. Leave off for the low-VRAM baseline; the tooltip says so in so many words.
    • channels_last (default off) - channels-last weights and activations can improve throughput on some GPUs, at the risk of cuDNN choosing larger temporary workspaces. Again, off is the low-VRAM baseline.
    • compile_memblocks (default off) - experimental torch.compile/Inductor around the decoder's MemBlocks only. First run is slower, each static block shape may compile separately, and it falls back to eager execution on any failure. The release notes are refreshingly honest: it works, but the gain is minimal and it prints warnings. Leave it off.

    The pattern to notice: every "fast-sounding" toggle here is default-off, and the defaults are the low-VRAM configuration. This pack is unapologetically aimed at 6 GB cards, and the loader's job is to not make that worse before the decode even starts.

    Installing it

    It's in the ComfyUI-FlashVSR-Stock pack with the other nine nodes - install once, get all of them. ComfyUI Manager: search ComfyUI FlashVSR Stock Wan, install, restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Pizzawookiee/ComfyUI-FlashVSR-Stock.git
    cd ComfyUI-FlashVSR-Stock
    python -m pip install -r requirements.txt
    

    Restart, then download TCDecoder.safetensors from pizzawookiee/FlashVSR-1.1 on Hugging Face into lowercase ComfyUI/models/flashvsr/. Compatible dtype conversions like TCDecoder-fp16.safetensors also show up in the menu - the loader matches component names, not exact filenames. Python deps are just einops, safetensors, and a Triton runtime.

    Common issues

    • "No decoder safetensors found in models/flashvsr". Same story as every loader here: file missing, wrong folder case, or no restart after placing it.
    • Fused/channels-last on, and decode got slower or used more VRAM. That's the documented risk - larger cuDNN workspaces. Flip them back off; they're per-GPU gambles, not guaranteed wins.
    • Decoded output differs from the stock VAE. Expected. TCDecoder is its own decoder, not a VAE clone. If fidelity matters more than speed, skip this node entirely and use the stock Wan VAE - the README's intended graph supports both paths.

    The practical decision: default settings here, fp16 if VRAM is tight, and let the decode node handle the rest.

    CategoryFlashVSR/loaders

    Inputs (5)

    NameTypeDefaultDescription
    decoder_nameCOMBO1 options: No decoder safetensors found in models/flashvsr
    compute_dtypeCOMBO4 options: auto, bf16, fp16, fp32
    fuse_tgrowoptBOOLEANfalseComposes each linear temporal-growth 1x1 convolution with its following 3x3 convolution once while loading. This removes three decoder convolutions and their intermediate activations. It is mathematically equivalent, but may select a larger cuDNN workspace. Leave disabled for the low-VRAM baseline.
    channels_lastoptBOOLEANfalseUses channels-last Conv2d weights and activations. This can improve throughput on some GPUs, but cuDNN may pick algorithms with larger temporary workspaces. Leave disabled for the low-VRAM baseline.
    compile_memblocksoptBOOLEANfalseExperimental: use torch.compile/Inductor only around TCDecoder MemBlocks. The first run is slower and each static block shape may compile separately. Failures automatically return to eager execution. Leave disabled for the compatible Dynamic VRAM baseline.

    Outputs (1)

    NameTypeDescription
    FLASHVSR_DECODERFLASHVSR_DECODER