Configure FlashVSR Upscaling
The node that turns your stock Wan into a FlashVSR upscaler
- model
- lq_projector
- video
- MODEL
- FLASHVSR_RUNTIME
If you've come here from a FlashVSR workflow, this is the node everything else feeds. The loaders fetch the pieces; this one bolts them onto a stock Wan model and hands the sampler a FLASHVSR_RUNTIME to chew on. No FlashVSR graph works without it, and it's the easiest place to get the whole thing wrong.
Quick context, because the pack assumes you know the model: FlashVSR is OpenImagingLab's one-step 4x video super-resolution model, released October 2025, and it's the open video upscaler that actually got adopted - its whole selling point was being dramatically faster than SeedVR2. This pack is a community reimplementation that runs FlashVSR v1.1 on top of ComfyUI's stock Wan model rather than the official standalone pipeline. FlashVSRApply is where that marriage happens: it injects FlashVSR's low-quality (LQ) conditioning into Wan's block 0 and returns a patched model plus the runtime object the one-step sampler depends on.
How it works
You feed it the three components the pack has been assembling:
- model - the stock Wan
MODELfrom Load FlashVSR DiT (Stock Wan). - lq_projector - the
FLASHVSR_LQobject from Load FlashVSR LQ Projector. - video - the
FLASHVSR_VIDEOmetadata from Prepare Video for FlashVSR.
It returns a patched MODEL and a FLASHVSR_RUNTIME. The patched model is what you wire into BasicGuider; the runtime carries everything the sampler needs and wires into FlashVSR One-Step Sampler. Split the outputs the wrong way - runtime into the guider, model into the sampler - and you'll get a type error the moment you hit Queue, which at least makes the mistake obvious.
The one knob you'll actually touch is conditioning_strength (float, 0–2, default 1.0). It scales the resized-video conditioning injected at Wan block 0. Leave it at 1.0 to match the checkpoint. Drop it toward 0.5 if the output is hugging the input too hard and losing detail; push it past 1.0 only if you want the model to follow the source more literally - the tooltip is blunt about the trade: higher values "may preserve its artifacts."
One nicety worth knowing: if you're running a TensorWise INT8 ConvRot checkpoint (like FlashVSR1_1-int8_convrot.safetensors), the node reuses a single INT8 activation preparation across Q/K/V automatically. Q/K/V stay separate ComfyUI-managed weights, so Dynamic VRAM can still lease them sequentially. Non-compatible checkpoints just fall back to stock projections - no setting required.
Installing it
This is a node from the ComfyUI-FlashVSR-Stock pack, so install the pack once and you get all ten nodes. Easiest is ComfyUI Manager: search for ComfyUI FlashVSR Stock Wan, install, restart. Manual route:
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
Windows portable users run that pip line with python_embeded\python.exe instead. Dependencies are light - einops, safetensors, and a Triton runtime. The real download work is the weights: FlashVSR1_1.safetensors, LQ_proj_in.safetensors, Prompt.safetensors, and TCDecoder.safetensors from pizzawookiee/FlashVSR-1.1 on Hugging Face, dropped into lowercase ComfyUI/models/flashvsr/. The Wan 2.1 VAE is stock - load it from models/vae with the regular VAE loader.
Common issues
- Models don't show in the dropdowns. Everything lives in lowercase
ComfyUI/models/flashvsr/and must be.safetensors. Restart after dropping files in. - OOM later in the graph. Not this node's fault - the sampler modes and Tiny Decode batching are where VRAM is actually spent. Drop to
streaming_faithful_lowvram(the README's stated default for 6 GB cards) andtemporal_batch_size=1on decode. - Conditioning_strength feels like it does nothing at 1.0. That's correct - it's a 1:1 multiplier at the default. Only change it when you're testing adherence versus freedom.
The model you get out of this node is still a stock Wan model, which is the point: it plays nice with ModelAttentionBackend patches and the rest of your existing Wan graph. That coexistence is the pack's whole reason to exist.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lq_projector | FLASHVSR_LQ | — | |
| video | FLASHVSR_VIDEO | — | |
| conditioning_strength | FLOAT | 1.000–2 | Multiplier for resized-video conditioning injected at Wan block 0. 1.0 matches the checkpoint. Lower values give the model more freedom; higher values follow the input more strongly and may preserve its artifacts. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| FLASHVSR_RUNTIME | FLASHVSR_RUNTIME | — |