跳转到内容

VideoLLaMA 3 — 动态分辨率视觉编码 + 视频 token 压缩

是什么

VideoLLaMA 3 是阿里达摩院 2025 年发布的第三代图像/视频统一 MLLM:用 SigLIP-NaViT 动态分辨率视觉编码替代固定 336px 输入,配合 视频 token 相似度压缩Qwen2.5 语言后端,在 VideoMME、LVBench 等榜单上以 7B 体量刷到同尺寸前列。

日常类比:videollama2-2024 像固定镜头的摄像机;VideoLLaMA 3 是自动变焦 + 智能抽帧——远景少占像素、近景保留细节,相似帧合并成一条「摘要 token」,同样上下文窗口能塞进更长视频。

官方实现:videollama3;训练数据含开源 VL3-Syn7M 高质量 image-text 对。

为什么重要

不理解 VideoLLaMA 3,2025 年 Video-LLM 工程对照会缺「国内最新可复现 SOTA」:

  • 动态分辨率是长视频 OOM 的实用解:固定分辨率模型为保细节会爆 token;NaViT 按内容伸缩,同等显存可看更多帧
  • Vision-centric 四阶段训练:把视觉对齐、指令微调、视频专项、压缩策略拆成可 ablation 的流水线
  • token 压缩基于帧间相似度:运动少的片段自动合并,比均匀降采样更保关键帧
  • 与 Qwen2-VL 形成国内双雄对照:一个走原生动态分辨率 API,一个走 VideoLLaMA 系列迭代

核心要点

  1. SigLIP-NaViT 动态分辨率:图像/视频帧按长宽比和语义密度分配 patch 数,不再强行 resize 到正方形。类比:PPT 幻灯片横竖不一,NaViT 给每页「合适字号」而非统一缩印。

  2. 视频 token 相似度压缩:相邻帧 embedding 余弦相似度高于阈值则合并或丢弃冗余 token,在进 LLM 前把序列长度压到预算内。运动剧烈段保留高密度,静态段稀疏化。

  3. 四阶段训练:(1) 视觉-语言对齐 (2) 多模态指令微调 (3) 视频专项数据 (4) 长视频 + 压缩策略联合微调——每阶段可单独替换数据做 ablation。

实践案例

案例 1:统一 conversation API 推理

import torch
from transformers import AutoModelForCausalLM, AutoProcessor
model_path = "DAMO-NLP-SG/VideoLLaMA3-7B"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True
)
conversation = [
{"role": "user", "content": [
{"type": "video", "video": {"video_path": "lecture.mp4", "fps": 1, "max_frames": 128}},
{"type": "text", "text": "总结这段视频的三个要点"},
]}
]
inputs = processor(conversation=conversation, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(out[0], skip_special_tokens=True))

fps / max_frames 控制采帧密度;压缩在模型内部按相似度触发。

案例 2:固定 vs 动态分辨率 token 预算

输入:10 分钟讲座,均匀 1 FPS → 600 帧
固定 336×336 + 均匀 32 帧采样 ~8K visual tokens(丢大量内容)
VideoLLaMA 3 NaViT + 相似度压缩 ~4K tokens 覆盖更多有效片段
LVBench 67min 子集:7B 动态分辨率比固定分辨率高约 8–12 点(论文报告量级)

案例 3:Model Zoo 选型

型号侧重典型场景
VideoLLaMA3-7B图+视频通用VideoMME / LVBench 刷榜
VideoLLaMA3-2B边缘部署单卡 demo
VideoLLaMA3-7B-Image图像专项高分辨率 OCR / 图表
VL3-SigLIP-NaViT独立视觉塔自定义 LLM 对接

部署长视频时建议先用 max_frames=64 跑通 lvbench-2024 子集,再逐步放开 fps;一步拉到 256 帧容易在相似度合并未调优时 OOM。

踩过的坑

  1. pinned 版本极严torch==2.4.0 + flash-attn==2.7.3 + transformers==4.46.3 不对就 CUDA kernel 报错或生成乱码。

  2. 压缩阈值调太激进会丢动作:高相似度合并适合讲座/幻灯片,体育快攻场景应提高 max_frames 或降低合并强度。

  3. 2B 与 7B 训练数据不完全同构:小模型在长视频榜上的压缩策略收益更小,别用 2B 分数推断 7B 上限。

  4. VL3-Syn7M 需单独申请/下载:完整 7M 标注不是 pip install 自带,预训练复现要预留存储与清洗时间。

适用 vs 不适用场景

适用

  • 长视频(>5min)理解且显存受限的单卡 7B 部署
  • 需要图像+视频同一 API 的产品原型
  • 研究动态分辨率 vs 固定分辨率的 ablation

不适用

  • 实时流式对话(见 videollm-online-2024 / livevlm-2025
  • 纯文本或纯音频(用大语言模型即可)
  • 不想锁死 transformers 旧版本的生产环境

历史小故事(可跳过)

学到什么

  • 分辨率应随内容变,不是随模型变:NaViT 思路可迁移到任何 Video-LLM 数据管线。
  • 压缩要语义感知:均匀丢帧 vs 相似度合并,后者对讲座类长视频更友好。
  • 四阶段训练让 ablation 可复现:对齐、指令、视频、长视频不要一锅炖。
  • 7B 刷榜不等于 2B 可部署:小模型需单独测延迟与 OOM,不能外推。
  • VL3-Syn7M 是独立资产:即使不训 3 代全文,图像预训练也可单独受益。
  • 对比 qwen2-vl-2024 时要看解码与采帧默认值:同榜分数可能差在预处理而非模型本体。

延伸阅读

关联

维护提示:

  • 工程对照项目见 decordlmms-evalvideochat2 等专题笔记。
  • 与专题阅读站 video-understanding / stations 路线图对照,避免候选表与站内 slug 脱节。 发版前用 lmms-eval 或官方脚本复现文中数字;pinned 依赖以各仓库 README 为准。

反向链接

  • chapter-llama-2025 —— Chapter-Llama — 语音引导采帧,一小时视频一次前向切章节
  • decord —— Decord — Video-LLM 数据管线的高效视频解码库
  • internvideo2-5-2025 —— InternVideo2.5 — 长富上下文 + HiCo 层次压缩
  • livevlm-2025 —— LiveVLM — 免训练流式视觉 token 压缩
  • lmms-eval —— LMMs-Eval — 多模态大模型统一评测框架
  • lvbench-2024 —— LVBench — 平均 68 分钟、六维能力的长视频极限考
  • qwen2-5-vl-2025 —— Qwen2.5-VL — 绝对时间编码 + 动态分辨率,小时级视频原生理解
  • qwen2-vl-2024 —— Qwen2-VL — 动态分辨率 + M-RoPE,工业级视频理解的里程碑
  • video-llama-2023 —— Video-LLaMA — 把音频和视频同时塞进大语言模型
  • videochat2 —— VideoChat2 — OpenGVLab 三阶段训练 Video-LLM 官方实现
  • videollama2-2024 —— VideoLLaMA 2 — 时空卷积连接器 + 音视频联合理解
  • videollama3 —— VideoLLaMA3 — 阿里达摩院第三代图像/视频多模态基座
  • videollm-online-2024 —— VideoLLM-online — 流式视频对话的 LIVE 框架
  • videomme-2024 —— Video-MME — 视频多模态大模型的「高考卷」