Video-XL-2 supply two efficiency optimization strategy: chunk-based prefill and bi-level kvs decoding. You can flexibly choose them based on your needs.
TODO
Release model weights.
Release the inference code w/o. efficiency optimization.
Release the inference code w. chunk-based prefill.
Release the inference code w. chunk-based prefill & bi-level kvs decoding.
*
Tips: Our inference code still under updating, you could update it by assign "--include '*.py'" in huggingface-cli to only update the inference code, avoid downloading the whole model.
from transformers import AutoTokenizer, AutoModel, AutoConfig, BitsAndBytesConfig, AutoModelForCausalLM
import torch
# load model
model_path = '/root/Models/Video-XL-2'
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
device = 'cuda'if torch.cuda.is_available() else'cpu'
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map=device,quantization_config=None, attn_implementation="sdpa", torch_dtype=torch.float16, low_cpu_mem_usage=True)
gen_kwargs = {
"do_sample": False,
"temperature": 0.01,
"top_p": 0.001,
"num_beams": 1,
"use_cache": True,
"max_new_tokens": 256
}
model.config.enable_sparse = False# input data
video_path = "/asset/demo.mp4"
question1 = "How many people in the video? (A)3 people (B)6 people. Please only respone the letter"# params
max_num_frames = 150
sample_fps = 1# extract frame at 1fps
max_sample_fps = 4with torch.inference_mode():
response = model.chat(video_path, tokenizer, question1, chat_history=None, return_history=False,max_num_frames=max_num_frames, sample_fps=sample_fps, max_sample_fps=max_sample_fps, generation_config=gen_kwargs)
print(response)
2. Inference w. Chunk-based Pre-filling
Chunk-based prefill significantly reduces memory demands and response latency by encoding video input in a streaming manner. This advantage becomes particularly noticeable with longer videos.
To enable this mode, you need to set
enable_chunk_prefill
to
True
and configure the
prefill_config
parameters:
chunk_prefill_mode
: This defines the mode of chunk-based prefill. We currently support two modes:
streaming
: This mode encodes video chunks streamingly.
mask
: This mode achieves an equivalent effect using an attention mask. However, due to a lack of underlying optimized operators, the
mask
mode doesn't offer any efficiency improvements at this time. We recommend using the
streaming
mode.
chunk_size
: This parameter specifies the size of each chunk processed in a single forward pass. The unit for
chunk_size
is
4 frames
(e.g.,
chunk_size = 4
means processing visual tokens from
4×4 = 16 frames
at once). A larger
chunk_size
will gradually approach full attention, resulting in a higher peak memory usage.
step_size
: This controls the step size between chunks. A smaller
step_size
leads to more continuous information transfer between chunks but may slightly decrease inference speed.
offload
: This boolean parameter determines whether to offload the key-value states (KVs) of each chunk to the CPU during forwarding. While this can reduce memory usage, it will also lower the inference speed.
chunk_size_for_vision_tower
: For longer video inputs, the vision tower can become a memory bottleneck during forwarding. To mitigate this, we also support a streaming mode for the vision tower, which is controlled by this parameter. The unit for
chunk_size_for_vision_tower
is
1 frames
. And, the value of
chunk_size_for_vision_tower
must be
a multiple of 4
.
*
Tip: Currently, chunk-based prefill only supports the 'sdpa' attention implementation.
3. Inference w. Chunk-based Pre-filling & Bi-level KVs Decoding
coming soon
✏️ Citation
@article{shu2024video,
title={Video-XL: Extra-Long Vision Language Model for Hour-Scale Video Understanding},
author={Shu, Yan and Zhang, Peitian and Liu, Zheng and Qin, Minghao and Zhou, Junjie and Huang, Tiejun and Zhao, Bo},
journal={arXiv preprint arXiv:2409.14485},
year={2024}
}
@article{liu2025video,
title={Video-XL-Pro: Reconstructive Token Compression for Extremely Long Video Understanding},
author={Liu, Xiangrui and Shu, Yan and Liu, Zheng and Li, Ao and Tian, Yang and Zhao, Bo},
journal={arXiv preprint arXiv:2503.18478},
year={2025}
}
Runs of BAAI Video-XL-2 on huggingface.co
269
Total runs
-3
24-hour runs
-2
3-day runs
4
7-day runs
39
30-day runs
More Information About Video-XL-2 huggingface.co Model
Video-XL-2 huggingface.co is an AI model on huggingface.co that provides Video-XL-2's model effect (), which can be used instantly with this BAAI Video-XL-2 model. huggingface.co supports a free trial of the Video-XL-2 model, and also provides paid use of the Video-XL-2. Support call Video-XL-2 model through api, including Node.js, Python, http.
Video-XL-2 huggingface.co is an online trial and call api platform, which integrates Video-XL-2's modeling effects, including api services, and provides a free online trial of Video-XL-2, you can try Video-XL-2 online for free by clicking the link below.
BAAI Video-XL-2 online free url in huggingface.co:
Video-XL-2 is an open source model from GitHub that offers a free installation service, and any user can find Video-XL-2 on GitHub to install. At the same time, huggingface.co provides the effect of Video-XL-2 install, users can directly use Video-XL-2 installed effect in huggingface.co for debugging and trial. It also supports api for free installation.