toobusy FlashVSR Loader
FlashVSR's three model files, loaded without the guesswork
- flashvsr_model
FlashVSR is the video upscaler that actually got adopted - the open model that broke through in late 2025 on speed rather than quality, upscaling a decent source fast when SeedVR2 would be overkill. It's also, mechanically, three separate files that have to be loaded together: the DiT, a low-quality input projection, and a prompt tensor. toobusy FlashVSR Loader is the node that assembles all three into one flashvsr_model handle, with fuzzy file auto-detection so you don't have to babysit dropdowns.
How it works
The three files are genuinely distinct weights with distinct jobs:
dit- the streaming diffusion model (diffusion_pytorch_model_streaming_dmd.safetensors), the actual upscaler.projection-LQ_proj_in.ckpt, which projects low-quality input frames into the model's space.prompt_tensor-posi_prompt.pth, a learned prompt conditioning tensor from the FlashVSR authors.
The node scans your ComfyUI/models/FlashVSR/ folder, matches each slot by filename fragment (dmd / proj / prompt), and hands you a single typed handle. The offload / aggressive_offload toggles set how the model behaves under VRAM pressure - offload keeps the DiT resident when it fits; aggressive offload shuttles it to CPU between chunks for 12GB-class cards.
One thing it deliberately does not do: download anything. The README is explicit - models are never auto-downloaded for the FlashVSR path. You place the files yourself:
# into ComfyUI/models/FlashVSR/
# diffusion_pytorch_model_streaming_dmd.safetensors (FlashVSR v1.1 DiT)
# LQ_proj_in.ckpt (LQ projection)
# posi_prompt.pth (prompt tensor)
The Wan 2.1 VAE goes separately into models/vae/ for the Decoder node.
Inputs and output
The three file dropdowns (auto-detected), offload, and aggressive_offload are the entire input surface. The single output, flashvsr_model, feeds the Long Sampler. That's it - this node is a loader, and its whole job is to make the three-file requirement feel like one.
Install and gotchas
Heaviest install in the pack. First the Python deps:
python -m pip install -r custom_nodes/toobusy/requirements_flashvsr.txt
Then the painful part: FlashVSR's block-sparse attention needs a block_sparse_attn wheel that must exactly match your Python, PyTorch, and CUDA combo - the README's tested wheel is Windows, Python 3.13, PyTorch 2.12.1+cu130, and you must not install that wheel on a different environment. Match your own combo, and pick your ComfyUI Desktop Torch choice before installing BSA.
If the loader's dropdowns come up empty, the files aren't in models/FlashVSR/ with recognizable names - drop them in and restart. And if the whole pipeline won't run, the #1 cause is the BSA wheel mismatch, not the model files. Check that before you re-download anything.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| dit | COMBO | 0 options: | |
| projection | COMBO | 0 options: | |
| prompt_tensor | COMBO | 0 options: | |
| offload | BOOLEAN | false | — |
| aggressive_offloadopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| flashvsr_model | TOOBUSY_FLASHVSR_MODEL | — |