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-deps

Then 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 3840

Useful knobs:

  • --temporal-compression 4 (default) — drop to 2 or 1 for large-motion clips (slower, more motion detail)
  • --decode-every N — segment long videos (N multiple of 4); default auto loads 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://flashvsr.tech

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 ♡