[ICCV 2025] Flash-VStream: Efficient Real-Time Understanding for Long Video Streams

October 15, 2025 · View on GitHub

Haoji Zhang*, Yiqin Wang*, Yansong Tang, Yong Liu, Jiashi Feng, Xiaojie Jin✉†

*Equally contributing first authors, Correspondence, Project Leader

Work done when interning at Bytedance.

We proposed Flash-VStream, an efficient VLM with a novel Flash Memory mechanism that enables real-time understanding and Q&A of extremely long video streams. Our model achieves outstanding efficiency on EgoSchema, MLVU, LVBench, MVBench and Video-MME Benchmarks.

Contents

Install

Please follow the instructions below to install the required packages.

  1. Clone this repository and enter it
git clone git@github.com:IVGSZ/Flash-VStream.git
cd Flash-VStream/Flash-VStream-Qwen
  1. Install package following setup.sh

Model

We provide the checkpoint of Flash-VStream model here:

ModelWeightInitialized from LLM
Flash-VStream-Qwen-7bFlash-VStream-Qwen-7bQwen/Qwen2-VL-7B-Instruct

Preparation

  1. Please download videos from following datasets.
  2. Extract frames with at least 1 FPS. You can use scripts/extract_frames.py directly or use your own script. (Make sure the name order is correct, e.g., 000001.jpg instead of 1.jpg)
  3. Put the extracted frames under the target folder in data.

Evaluation Data

DatasetSourceFrame folder
EgoSchemahttps://egoschema.github.io/data/eval_video/EgoSchema/frames
LVBenchhttps://github.com/zai-org/LVBenchdata/eval_video/lvbench/frames
MLVUhttps://github.com/JUNJIE99/MLVUdata/eval_video/mlvu/frames
MVBenchhttps://github.com/OpenGVLab/Ask-Anything/blob/main/video_chat2/MVBENCH.mddata/eval_video/mvbench/frames
Video-MMEhttps://github.com/MME-Benchmarks/Video-MMEdata/eval_video/videomme/frames

Training Data

DatasetSourceFrame folder
LLaVA-Video-178Khttps://huggingface.co/datasets/lmms-lab/LLaVA-Video-178Kdata/llava-video-178k/frames

Train

Flash-VStream is trained on 8 A100 GPUs with 80GB memory. To train on fewer GPUs, you can reduce the per_device_train_batch_size and increase the gradient_accumulation_steps accordingly. Always keep the global batch size the same: per_device_train_batch_size x gradient_accumulation_steps x num_gpus. If your GPUs have less than 80GB memory, you may try ZeRO-2 and ZeRO-3 stages.

Please make sure you download and organize the data following Preparation before training. The Qwen2-VL-7b checkpoint should be saved in ckpt/Qwen2-VL-7B-Instruct.

If you want to train Flash-VStream from pretrained LLM and evaluate it, please run the following command:

bash scripts/train_and_eval.sh

Evaluation

Please make sure you download and organize the data following Preparation before evaluation.

If you want to evaluate a Flash-VStream model, please run the following command:

bash scripts/eval.sh

Real-time CLI Inference

We provide a real-time CLI inference script, which simulates video stream input by reading frames of a video file at a fixed frame speed. You can ask any question and get the answer at any timestamp of the video stream. Run the following command and have a try:

bash scripts/cli_server_2gpu.sh

Citation

If you find this project useful in your research, please consider citing:

@article{zhang2025flashvstream,
    title={Flash-VStream: Efficient Real-Time Understanding for Long Video Streams}, 
    author={Haoji Zhang and Yiqin Wang and Yansong Tang and Yong Liu and Jiashi Feng and Xiaojie Jin},
    journal={arXiv preprint arXiv:2506.23825},
    year={2025},
}