跳转到内容

LongVA — 把语言模型的长上下文能力「搬」到视频上

是什么

LongVA(Long Video Assistant)是 LMMs-Lab 2024 年 6 月提出的长视频理解模型。它延续了 llava 的「视觉编码器 + MLP Projector + 大语言模型」骨架,但换了一条完全不同的长视频路线:不是压缩视觉 token,而是先把语言模型的上下文窗口拉长,再让视觉模态「继承」这份长上下文能力

日常类比:以前的视频模型像把一整部电影压成 8 张剧照再让人猜剧情——信息早就被裁掉了。LongVA 的思路是:先把「能读超长文档」的大脑练好(语言侧长上下文训练),再教它看图(只用短图像数据对齐),最后直接拿它看几千帧视频——长读文章的能力,零样本搬到了长看视频上。论文把这种现象叫做 Long Context Transfer(长上下文迁移)

具体数字:LongVA 基于扩展后的 Qwen2-7B(224K token 上下文),配合 UniRes 统一编码方案,推理时可处理 2000+ 帧 / 20 万+ 视觉 token,且训练阶段完全没用长视频标注数据

为什么重要

不理解 LongVA,下面这些事说不清:

  • 为什么 2024 年后长视频路线开始分岔——「减 token」和「扩上下文」是两种正交策略,LongVA 代表后者
  • 为什么说 LLaVA 架构还能继续进化到长视频——LongVA 证明只要 LLM backbone 够长,MLP Projector 不用大改也能吃下海量帧
  • 为什么 Gemini 式「小时级视频理解」在开源侧第一次有了可行路径——LongVA 是较早系统验证「语言长上下文 → 视觉长上下文」迁移的工作
  • 为什么 Video-MME、MLVU 这类长视频 benchmark 上,多采帧开始稳定涨分——LongVA 的实验直接画出了「帧数越多、分数越高」的曲线

核心要点

  1. Long Context Transfer(长上下文迁移):先在纯文本上把 Qwen2-7B 的上下文从 4K 扩到 224K(RoPE 基频上调 + SlimPajama 长文档续训),再做常规图像指令微调。结果:模型从没见过长视频训练对,却能在推理时吃下 2000 帧。前提是视觉 token 已经和语言空间对齐——对齐质量决定迁移是否成功。

  2. UniRes 统一编码(继承 LLaVA-NeXT 的 AnyRes 思路):把高分辨率图像切成多个 336×336 网格,每格经 CLIP-ViT 编码后再 2×2 池化,得到每格 144 个 token。视频则被当作「横向拉长的图像」:N 帧 = N 个网格排成一行,共 144N 个 token。训练和推理用同一套编码,避免图像/视频两套表示打架。

  3. V-NIAH 基准(Visual Needle-In-A-Haystack):借鉴语言模型的 NIAH 测试,在数小时长的「草垛视频」里插入一帧「针」图像,问模型能否找回。LongVA 是早期少数能在 2000+ 帧规模上稳定检索的开源模型之一,为「视觉上下文到底多长」提供了可量化的尺子。

实践案例

案例 1:LongVA 长视频推理(密集采帧)

# 官方 repo: https://github.com/EvolvingLMMs-Lab/LongVA
from longva.model.builder import load_pretrained_model
from longva.mm_utils import process_images, tokenizer_image_token
model_path = "lmms-lab/LongVA-7B"
tokenizer, model, image_processor, _ = load_pretrained_model(model_path)
# 长视频:密集采样数百到数千帧,UniRes 逐帧编码
video_path = "lecture_45min.mp4"
frames = sample_frames(video_path, max_frames=512) # 可按 GPU 显存调节
pixel_values = process_images(frames, image_processor, model.config)
prompt = "视频后半段讲到的核心结论是什么?"
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX)
output = model.generate(input_ids, images=pixel_values, max_new_tokens=256)
# 帧数越多,长视频 QA 通常越好——前提是 backbone 上下文够长

案例 2:两阶段训练流程(先语言、后视觉)

阶段 A — 语言长上下文续训(约 2 天,8×A100-80G):
骨干:Qwen2-7B-Instruct
数据:Slimpajama 长文档(>4096 token 上采样)
目标:224K 文本上下文 + NIAH 全绿
阶段 B — 短图像对齐(约 1.5 天,同硬件):
数据:与 LLaVA-1.6 相同图像指令集(无长视频 SFT)
编码:UniRes + CLIP-ViT-L-336 + 2 层 MLP Projector
协议:train short, test long
总成本约 3.5 天 — 学术预算可承受

案例 3:V-NIAH 评测逻辑(简化)

# 合成基准:草垛视频 + 单帧针图 + 定位型问题
haystack = load_hours_long_video(sample_fps=1) # 可达 3000 帧
needle_frame = insert_at(haystack, position_pct=0.5) # 针插在 50% 位置
question = "草垛中间出现的那张.counterfactual 图片里有什么?"
# 显存不够跑全量 KV cache 时,用 perplexity 评测:
# 预计算所有帧 embedding → 只加载 LLM → 一次前向看答案 token 是否正确
score = vniah_eval(model, haystack, needle_frame, question)
# LongVA 在训练长度(≈1555 帧)内外都能保持较高检索率

踩过的坑

  1. 长上下文不等于高质量时序推理:V-NIAH 测的是「找得到」,不是「看得懂因果」——LongVA 在 TempCompass 类时序推理 benchmark 上未必领先,多帧只是提供更多线索,不保证模型会推理。

  2. 显存墙来得极快:200K 视觉 token 的 KV cache 单卡可能要吃掉近百 GB;论文评测 V-NIAH 时不得不预计算 embedding、用 ring attention 做 compute-bound 前向,工程门槛远高于普通 8 帧 Video-LLM。

  3. UniRes 牺牲了一点短图精度:相对 AnyRes,UniRes 去掉 base image、改池化策略,在部分低分辨率图像 benchmark 上略降,换的是视频友好的统一表示——选型时要明确优先长视频还是优先单图 SOTA。

  4. 「零视频训练」有隐含前提:迁移成立依赖(a)语言侧真扩到 224K、(b)图像对齐足够好、(c)推理时帧 token 总量不超过有效视觉上下文;任一环节缩水,长视频能力会断崖式下跌。

适用 vs 不适用场景

适用

  • 需要开源、可复现的长视频 QA / 摘要(讲座、监控、纪录片)
  • 已有 LLaVA 管线、想把帧上限从 8/16 提到数百上千
  • 研究「语言能力与视觉能力如何共享上下文」的实验平台

不适用

  • 端侧或单卡 24G 显存部署——长序列 KV cache 成本太高
  • 强依赖音轨、字幕对齐的任务——LongVA 纯视觉,不吃音频
  • 只要短视频高精度、不在乎长上下文——video-llava-2024 等轻量 8 帧方案可能更划算

历史小故事(可跳过)

  • 2024-06-24:LongVA 上传 arXiv 2406.16852,LMMs-Lab(NTU S-Lab)发布,同期开源 V-NIAH 基准
  • 2024-07:GitHub 与 Hugging Face 权重公开;团队把评测接到 lmms-eval,成为开源长视频模型的常用基线
  • 2024-08 前后:工业界长视频竞品(如 qwen2-vl-2024 的 NDR + M-RoPE)陆续发布,「扩上下文 vs 动态分辨率」成为两条主流技术叙事
  • 2024 末:LongVA 思路被后续工作引用为 context extension 路线的代表——与 token 压缩、检索式长视频(long-video-retrieval-2023)形成三角对照

学到什么

  1. 长视频不一定要长视频数据:在模态对齐充分时,语言侧的长上下文训练可以零样本迁移到视觉侧——这改变了「没有长视频标注就做不了长视频模型」的默认假设
  2. 瓶颈可能在 LLM 而不是视觉编码器:当每帧 144 token 已算合理时,继续压 token 收益递减;换 224K 上下文 backbone 反而更直接
  3. 统一编码是迁移的前提:UniRes 让「帧 = 图像网格」成立,图像训练才等价于在为视频铺路;分裂的图像/视频编码器会削弱迁移
  4. 评测要分「检索」和「理解」:V-NIAH 证明找得到针,Video-MME 证明答得好题——两者互补,不能只盯一个分数

延伸阅读

关联

  • llava —— 直接前身:视觉 token 投影与两阶段训练协议的原型
  • video-llava-2024 —— 对照:8 帧 + 对齐前置 vs 数千帧 + 上下文扩展
  • qwen2-vl-2024 —— 同期竞品:动态分辨率 + M-RoPE 另一条长视频路线
  • long-video-retrieval-2023 —— 检索式长视频:不扩上下文,学会「找片段」
  • videochat-2023 —— 早期视频 LMM:帧数受限的根因之一是 2K/4K LM 上下文
  • video-llama-2023 —— 音视频双模态路线,与 LongVA 纯视觉扩上下文形成对比
  • tempcompass-2024 —— 时序理解专项 benchmark,可验证「长上下文 ≠ 时序推理」
  • vid-llm-survey-2023 —— 全景地图:LongVA 在「Embedder×LLM + 长上下文」象限
  • videoprism-2024 —— 冻结 encoder 通用表征路线,与端到端扩上下文对照
  • lmms-eval —— 官方推荐的 Video-MME / 图像任务复现入口
  • llava-next —— UniRes 的 AnyRes 灵感来源,同一技术谱系
  • video-understanding —— 专题枢纽

反向链接

  • chat-univi-2023 —— Chat-UniVi — 动态视觉 token 统一图像与视频对话
  • llava —— LLaVA — 开源多模态对话模型
  • llava-next —— LLaVA-NeXT — 图像/视频/交织统一多模态主线仓库
  • lmms-eval —— LMMs-Eval — 多模态大模型统一评测框架
  • long-video-retrieval-2023 —— R-VLM — 长视频不靠均匀采帧,靠可学习检索选片段
  • qwen2-vl-2024 —— Qwen2-VL — 动态分辨率 + M-RoPE,工业级视频理解的里程碑
  • tempcompass-2024 —— TempCompass — 专门拆穿 Video LLM 有没有真懂时间
  • vid-llm-survey-2023 —— Vid-LLM Survey — 用大语言模型理解视频的全景地图
  • video-llama-2023 —— Video-LLaMA — 把音频和视频同时塞进大语言模型
  • video-llava-2024 —— Video-LLaVA — 投影之前先对齐,图像和视频共用一个 LLM
  • videochat-2023 —— VideoChat — 把视频、指令微调、多轮对话第一次放进同一个系统
  • videoprism-2024 —— VideoPrism — 冻结一个模型就能搞定所有视频理解任务
  • vsi-bench-2024 —— VSI-Bench — 用室内漫游视频考视频大模型的空间智商