长视频:百万 token 上下文理解


文档摘要

长视频:百万 token 上下文理解 本节摘要:1 小时 4K 视频、24 FPS,经 patch 与嵌入,产出约 6000 万 token。2 小时播客转写是 3 万 token。一部完整蓝光电影,即便激进池化,也是数十万 token。Google 的 Gemini 1.5(2024 年 3 月)用 1000 万 token 上下文开启这个时代,在小时级视频上做可靠的大海捞针回忆。LWM(Liu 等人,2024 年 2 月)展示了环形注意力的扩展路径。LongVILA 与 Video-XL 进一步扩大摄取。VideoAgent 用 agent 检索替代原始上下文。每种方法在算力、召回与工程复杂度上是不同权衡。本节并排读它们。

长视频:百万 token 上下文理解

本节摘要:1 小时 4K 视频、24 FPS,经 patch 与嵌入,产出约 6000 万 token。2 小时播客转写是 3 万 token。一部完整蓝光电影,即便激进池化,也是数十万 token。Google 的 Gemini 1.5(2024 年 3 月)用 1000 万 token 上下文开启这个时代,在小时级视频上做可靠的大海捞针回忆。LWM(Liu 等人,2024 年 2 月)展示了环形注意力的扩展路径。LongVILA 与 Video-XL 进一步扩大摄取。VideoAgent 用 agent 检索替代原始上下文。每种方法在算力、召回与工程复杂度上是不同权衡。本节并排读它们。

学习目标

阅读完本节,你应当能够:

  1. 在不同 FPS 与池化下,算长视频的总视觉 token 数。
  2. 解释三条扩展路径:暴力上下文(Gemini 1.5)、环形注意力(LWM)、token 压缩(LongVILA/Video-XL)。
  3. 在精度与延迟上,对比原始上下文视频 VLM 与 agent 检索视频 VLM(VideoAgent)。
  4. 为 30 分钟视频设计大海捞针测试,并测量特定分钟的召回。

一、问题与直觉

Qwen2.5-VL 规模的 patch、384 原生分辨率,单帧约 729 token;3×3 池化后每帧 81 token。30 分钟、1 FPS = 1800 帧 = 14.58 万 token,2025 开源 VLM 能扛但紧。2 FPS 就是 29.16 万 token,只有最大上下文装得下。

2 小时电影、1 FPS 是 58.3 万 token,超出大多数 2026 开源模型,需要 Gemini 2.5 Pro 或更激进池化。

三条扩展路径由此而生。

路径 1:暴力上下文(Gemini 1.5、Claude Opus)

用硬件砸。上下文扩到数百万 token,一次前向处理一切。

Gemini 1.5 Pro 以 100 万 token 起步;Ultra 到 1000 万;2026 年 Gemini 2.5 Pro 可靠处理数小时视频。论文(arXiv:2403.05530)记录大海捞针召回在约 950 万 token 前达 99.7%。

工程:带存储层级(局部 + 全局 + 稀疏)的自定义注意力实现,加 MoE 专家路由提长上下文效率。未完整公开,未开源。

路径 2:环形注意力(LWM、LongVILA)

环形注意力把长序列分布在「环」上的设备间,每台持有一块。全序列的注意力通过每台把自己的块发给环里下一台、算部分注意力、再聚合来完成。

LWM(Liu 等人,2024)用这种方式训了 100 万 token 上下文模型。训练算力随上下文线性而非平方级增长——注意力的平方开销被环上的设备摊销。

LongVILA(arXiv:2408.10188)把这套模式适配到 VLM。1400 帧、每帧 192 token = 26.8 万上下文,用 8 路并行的环形注意力训练。

路径 3:token 压缩(Video-XL、LongVA)

比暴力上下文便宜:在 LLM 见到序列前激进压缩。

Video-XL(arXiv:2409.14485)用视觉摘要 token:每 N 帧片段产出一个「摘要」token,关注这 N 帧。推理时 LLM 每片段只见一个摘要 token,大幅缩减上下文。

LongVA 用「长上下文迁移」把 LLM 上下文从 20 万扩到 200 万。在长上下文文本上训练,经共享表示迁移到长上下文视频。

token 压缩用特定时间戳的召回换可扩展性。模型大致知道发生了什么,但有时漏掉确切帧。

路径 4:agent 检索(VideoAgent)

不把整段视频喂给 LLM,而是把视频当数据库,用 LLM 查询它。

VideoAgent(arXiv:2403.10517):

  1. LLM 读问题。
  2. LLM 向检索工具要相关片段(「给我有猫的片段」)。
  3. 工具返回匹配片段的时间戳。
  4. LLM 通过 VLM 读那些片段。
  5. LLM 组合答案,或追加查询。

这是「LLM 当 agent」模式用到长视频。推理更便宜(只编码相关片段),工程更难(检索质量成瓶颈)。

大海捞针基准

标准长上下文测试:在视频随机位置插入唯一视觉或文本标记,然后问一个需要回忆它的查询。

指标:跨视频长度与标记位置的 Recall@k。

Gemini 2.5 Pro 在长达 90 分钟视频上召回 >99%。开源 72B 模型(Qwen2.5-VL-72B、InternVL3-78B)在 30 分钟约 85~90%,过 60 分钟退化。

VideoAgent 在 2 小时以上能匹敌或胜过原始上下文模型——只要工具够好,检索就能命中那根针。

选哪条路

  • 15 分钟、前沿精度:开源 72B + 原生上下文通常够,选 Qwen2.5-VL-72B。
  • 30 分钟到 1 小时:开源选 LongVILA 或 Video-XL,闭源选 Gemini 2.5 Pro。质量门槛重要时走闭源。
  • 2 小时以上:VideoAgent 或类似检索模式;或摘要成小块喂分层摘要。

2026 生产模式

实践中,生产长视频流水线是混合的:

  1. 对整段视频跑动态 FPS 采样 + 激进池化(得到约 10 万 token 的全局表示)。
  2. 交给 72B VLM 出全局摘要。
  3. 若用户问细节问题,用摘要当索引跑 agent 检索。

这把暴力上下文(全局理解)与检索(局部细节)结合。

二、从零实现

code/main.py:

  • 算 1 分钟到 3 小时视频在不同 FPS + 池化下的 token 预算。
  • 模拟大海捞针运行:在随机时间戳注入标记,提问,打召回分。
  • 含一个 agent 检索路由模拟器,挑特定片段喂给下游 VLM。

token 预算表

def video_token_budget(duration_sec, fps, pool_factor, base_per_frame=729): n_frames = int(duration_sec * fps) per_frame = base_per_frame // (pool_factor ** 2) # 3x3 池化 → /9 return n_frames * per_frame # 例: 30min, 1FPS, 3x3 → 1800 * 81 = 145800 # 2h, 1FPS, 3x3 → 7200 * 81 = 583200

大海捞针模拟

def needle_in_haystack(video_len_min, marker_min, model_recall_fn): # 在 marker_min 注入唯一标记, 末端提问 video = build_video(video_len_min, marker=(marker_min, "UNIQUE_TOKEN")) answer = model_recall_fn(video, query="找唯一标记") return {"recall": "UNIQUE_TOKEN" in answer, "position": marker_min / video_len_min}

agent 检索路由

def video_agent(question, video_db): # LLM 当查询规划器 clips = video_db.retrieve(question) # 工具返回相关片段时间戳 answers = [vlm.read(video_db.get_clip(c)) for c in clips] return llm.compose(question, answers) # 只编码相关片段, 省 token

💡 混合为何胜出:纯暴力上下文在 2 小时以上太贵,纯检索缺全局理解。生产做法是「全局暴力 + 局部检索」——先用激进池化的全局表示出摘要,再用摘要当索引按需检索细节片段,兼顾召回与成本。

三、框架对比

  • Gemini 1.5/2.5 Pro(闭源):暴力上下文,千万 token,NIH 召回 >99%,自定义注意力 + MoE 未公开。
  • LWM/LongVILA:环形注意力跨设备分摊,训练算力线性增长,LongVILA 26.8 万上下文训 1400 帧。
  • Video-XL/LongVA:token 压缩,摘要 token 每片段一个,LongVA 上下文迁移到 200 万。
  • VideoAgent:agent 检索,LLM 当查询规划器,只编码相关片段,2 小时以上胜原始上下文。

工程取舍:15 分钟前沿精度用 72B 原生上下文;30 分钟~1 小时开源用 LongVILA/Video-XL,闭源用 Gemini;2 小时以上用 VideoAgent 或混合;生产用「全局暴力 + 局部检索」混合。

四、可复用产物

本节产出 outputs/skill-long-video-strategy-planner.md。给定视频时长与查询复杂度,它在暴力上下文、压缩、agent 检索间选择,并算延迟与质量预期。

五、练习

  1. 讲座 token:45 分钟讲座、1 FPS、每帧 81 token。总 token 多少?装得进哪些模型的上下文?

  2. NIH 设计:设计一个大海捞针测试:在第几分钟注入标记?确切的查询格式是什么?

  3. 暴力 vs 检索:在 1 小时视频上对比暴力上下文 Qwen2.5-VL-72B(80k 上下文)与 VideoAgent(Claude 3.5 + 检索)。召回谁赢?延迟谁赢?

  4. 环形注意力:环形注意力的存储成本随序列长度线性、随设备数线性。解释为什么,以及丢掉环旋转阶段会崩什么。

  5. 读论文:读 Gemini 1.5 第 5 节关于大海捞针。论文在 100 万 vs 1000 万 token 边界上发现召回如何?

本节要点回顾

  1. 规模骇人:1 小时 4K 视频约 6000 万 token,2 小时电影即便池化也数十万。
  2. 路径 1 暴力上下文:Gemini 1.5 扩到千万 token,NIH 召回 99.7%,闭源未公开。
  3. 路径 2 环形注意力:LWM/LongVILA 跨设备分摊,算力线性增长,平方开销摊销。
  4. 路径 3 token 压缩:Video-XL 摘要 token 每片段一个,LongVA 上下文迁移到 200 万。
  5. 路径 4 agent 检索:VideoAgent 把视频当数据库,LLM 查询相关片段,2 小时以上胜原始上下文。
  6. NIH 基准:随机注入标记测 Recall@k,Gemini >99% 到 90 分钟,开源 72B 30 分钟约 85~90%。
  7. 选路:15 分钟用 72B 原生;30 分~1 小时开源 LongVILA/闭源 Gemini;2 小时+ 用 VideoAgent。
  8. 生产混合:全局激进池化出摘要 + 摘要当索引按需检索细节。
  9. 检索瓶颈:agent 模式推理便宜但检索质量成瓶颈。
  10. 质量门槛:前沿长视频闭源仍领先,开源在追赶。

下一节,我们将进入音频语言模型——从 Whisper 的语音识别到 AudioLM/AF3 的音频生成,把声波也变成可预测的 token 序列,是「模态融合」在音频侧的展开。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U