Load FlashVSR LQ Projector
The small projector that carries the input into Wan
- FLASHVSR_LQ
Every generative upscaler has to get the low-resolution input into the model somehow, and for FlashVSR that job belongs to a separate little network called the LQ projector. This node loads it. It's a small, forgettable-looking loader - one dropdown, one dtype pick - but it's the reason your source video ends up conditioning the Wan model at block 0, and you can't run the pack without it.
FlashVSR is the one-step 4x video super-resolution model from OpenImagingLab, and this pack runs it on ComfyUI's stock Wan. The "LQ" here is the low-quality input clip: the projector transforms the prepared (resized, padded) frames into the conditioning representation that Configure FlashVSR Upscaling injects into Wan. No projector, no conditioning, no FlashVSR - the model would just be doing a weird one-step Wan run with no idea what your source looks like.
How it works
It reads LQ_proj_in.safetensors (or any file with lq_proj in the name) from ComfyUI/models/flashvsr/ and returns a FLASHVSR_LQ object, which you wire into Configure FlashVSR Upscaling alongside the model and prepared video. That's the entire wiring job: one output, one destination.
The only input you'll set is compute_dtype (auto, bf16, fp16, fp32). This is worth understanding because it's the same knob on the TCDecoder loader, and it's a real decision, not ceremony. The released projector weights are FP32; fp16/bf16 convert them once at load time, which cuts repeated cast work and managed weight memory, while fp32 preserves the released storage exactly. On a modern NVIDIA card, auto - which picks the natural compute dtype - is the sensible default. The quality difference in practice is invisible; the VRAM difference is small but real on a 6 GB card, which is exactly the audience this pack courts.
Installing it
It ships in the ComfyUI-FlashVSR-Stock pack with the other nine nodes - one install gets you all of them. ComfyUI Manager: search ComfyUI FlashVSR Stock Wan, install, restart. Or manually:
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 afterward. Dependencies are just einops, safetensors, and a Triton runtime. The weight file comes from pizzawookiee/FlashVSR-1.1 on Hugging Face - grab LQ_proj_in.safetensors and put it in lowercase ComfyUI/models/flashvsr/.
Common issues
- Dropdown shows "No lq safetensors found in models/flashvsr". The file isn't in
ComfyUI/models/flashvsr/, or ComfyUI hasn't been restarted since you placed it. Double-check the lowercase folder name - it's a folder namedflashvsr, notFlashVSR. - Everything else loads but this dropdown is empty. The component matcher keys on
lq_projin the filename, so make sure you didn't rename the file in a way that drops that token. - VRAM is tight. Pick
fp16orbf16here rather than fighting it later - the projector is small, but every byte counts on a 6 GB card, and the pack's README targets exactly that class of machine.
It's a boring node, and that's the point. Set the dropdown, leave the dtype on auto, wire the one output into the apply node, and it stays out of your way for the rest of the workflow.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| lq_name | COMBO | 1 options: No lq safetensors found in models/flashvsr | |
| compute_dtype | COMBO | LQ projector compute and stored floating-weight dtype. FP16 or BF16 converts the released FP32 weights once while loading, reducing repeated cast work and managed weight memory. FP32 preserves released storage exactly. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLASHVSR_LQ | FLASHVSR_LQ | — |