FlashVSR+ One-Step 4K Upscale on One 4090

Introduction
OpenImagingLab just open-sourced FlashVSR+ — a one-step diffusion video super-resolution stack that can run spatially untiled 4K on a single 24GB RTX 4090. Code, Turbo/Base weights, and the training dataset are out under Apache-2.0. Project hub: flashvsr.tech. Weights: ruchangyao/FlashVSR_plus. Paper: arXiv 2610.17552.
Think of it as a local post-pass after MiniMax H3, LTX, or Wan: generate at a workable res, then let FlashVSR+ bring the clip to crisp 4K without tiling the frame.
What’s new vs prior VSR
Two pieces matter for makers:
- Hybrid attention — leans on the strong space-time locality of pretrained VSR models, keeps sparse global blocks for long-range consistency. Vendor claim: up to 2× DiT speedup and ~45% lower peak memory.
- Ry-DMD (Reward-Yield Distribution Matching Distillation) — preference-aligns the one-step student with black-box rewards without backpropagating through the reward model. The paper also shows the same trick helping short-step T2I (SD3.5-M OCR jump in their ablations).
Presets on one CLI/API:
- Turbo — faster; recommended when you want efficient high-res VSR
- Base — higher restoration quality when fidelity comes first
- V1 — same inference config as Base; loads the older FlashVSR v1.1 checkpoints
All three share the tiny conditional decoder (TCDecoder.ckpt). Input FPS and audio are preserved when present.
Efficiency snapshot (vendor)
On an RTX 4090 wall-clock chart for 4K, the project page puts Ours-Turbo ~0.98 FPS vs SeedVR2 ~0.18 FPS (~5.5×). SeedVR2 needs tiled inference at 2K/4K; FlashVSR+ is pitched as full-frame 4K on 24GB.
On an H200-class GPU (89-frame clips), their table reports Turbo at ~30.6 s / ~26.3 GB for 4K vs SeedVR2 ~410.5 s (tiled) — treat bench numbers as vendor-reported, but the memory story is the headline for local H3/LTX finishers.
Requirements and install
- Linux + NVIDIA CUDA GPU (no CPU path)
- Python 3.10
- Output height and width both divisible by 128
conda create -n flashvsr_plus python=3.10 -y
conda activate flashvsr_plus
pip install -r requirements.txt
pip install -e . --no-depsThen install an attention backend. For consumer GPUs (including RTX 4090), the repo recommends FlashVSR Triton Attention after FlashAttention; data-center cards can use MIT Han Lab Block Sparse Attention. PyTorch SDPA is the fallback (--hardware-profile generic).
Download Turbo/Base from Hugging Face into ckpts/turbo/ and ckpts/base/ (plus shared TCDecoder.ckpt). Dataset: ruchangyao/FlashVSR_Plus_Dataset.
Run a clip
Turbo example (4K-class output):
python -m inference.run_stream \
--input examples/case_0.mp4 \
--mode turbo \
--output outputs/case_0_turbo.mp4 \
--height 2048 \
--width 3840Useful knobs:
--temporal-compression 4(default) — drop to2or1for large-motion clips (slower, more motion detail)--decode-every N— segment long videos (N multiple of 4); defaultautoloads the full input--cf— optional low-frequency color correction
No ComfyUI partner node for FlashVSR+ yet (community nodes you may have seen target the older FlashVSR line). No fal/Replicate host at write time — local CUDA only.
Original Source
https://github.com/OpenImagingLab/FlashVSR_Plus
https://huggingface.co/ruchangyao/FlashVSR_plus
https://arxiv.org/abs/2610.17552
Conclusion
If your gen-video pipeline already ends with a soft 720p/1080p export, FlashVSR+ is the open one-step 4K finish that finally fits a single 4090 without tiling gymnastics. Clone the repo, drop Turbo weights, and upscale a favorite H3 or LTX take tonight.
—Aurelia ♡
