ST-LLM — 把所有时空 token 交给 LLM,让它自己学时序
是什么
ST-LLM 是北京大学与腾讯 ARC 团队 2024 年 3 月发布的时空联合视频大语言模型(arXiv 2404.00308)——它问了一个看似简单的问题:能不能把视频所有帧的空间 token 按时间顺序原样拼进 LLM,让 LLM 自己当「时序建模器」? 答案是:可以,而且比多数「先池化再对话」的方案更强。
日常类比:以前的 Video LLM 像把电影每一帧都拍成照片,再叠成一张「平均模糊图」给解说员——动作方向、先后次序全糊掉。ST-LLM 像把按时间排列的连环画页整本交给一个本来就会读长文的编辑——他逐格看,自己推断「球从左滚到右」「门先开后人再进」。
架构上三块拼图:BLIP-2 Q-Former 逐帧编码 → 全时空 token 串接进 Vicuna-7B(不另加时序模块)→ 动态掩码 + 全局-局部输入 控制算力与长视频稳定性。单阶段视频指令微调即可,不必像 VideoChat2 那样三阶段对齐专用视频编码器。
为什么重要
不了解 ST-LLM,下面这些事说不清:
- 为什么 VideoChat / Video-LLaMA 的「帧特征做 temporal mean pooling」在 MVBench 运动类任务上集体翻车——时序信息在进 LLM 前就被平均掉了
- 为什么 2024 年后出现「把时序建模还给 Transformer 本体」的路线——ST-LLM 证明 LLM 自带的序列建模能力足以理解视频动态,不必外挂重型时序头
- 为什么动态掩码对视频 LLM 不只是省算力——训练时随机遮掉 30%–70% 视觉 token,推理时帧数变化更稳,减轻「训练 16 帧、测试 64 帧就幻觉」的脆弱性
- 为什么 MVBench 上运动方向(MD)、运动计数(MC)成为分水岭——ST-LLM 在这三类 motion 任务平均 59.2%,VideoChat2 仅 36.3%,拉开「真懂动态」与「只会描述静态场景」的差距
核心要点
-
Video Tokens Inside LLM(时空 token 直入 LLM):每帧经 BLIP-2 视觉编码器压成 (K) 个 token,(T) 帧拼成 (T \times K) 的联合时空序列,与文本 token 直接拼接进 Vicuna。不加帧间分隔符、不加额外时空位置编码——依赖 LLM 自带的 RoPE 区分位置。类比:不先写章节摘要,把原稿按页码顺序整本塞进编辑手里。
-
动态掩码 + 掩码视频建模(Dynamic Masking & MVM):训练时从 (\mathcal{N}(0.5, 0.1)) 采样掩码率 (\rho)(限制在 0.3–0.7),随机遮住约一半视觉 token;同时用 Masked Video Modeling:对掩码序列与完整序列各做一次前向,让未遮 token 的隐状态逼近完整版,损失 (\mathcal{L} = \mathcal{L}{mvm} + \mathcal{L}{llm})。类比:读连环画时故意盖住几格,逼模型从上下文推断被挡住的动作。
-
全局-局部输入(Global-Local Input):超长视频先对所有帧 token 做平均池化得全局表示 (V_0),再均匀采样 (\overline{T}) 帧(4–16)作局部时空序列 (\overline{V}),以 (\overline{V} + f_m(V_0)) 送入 LLM((f_m) 为零初始化上采样 MLP)。全局分支提供「整片概览」,局部分支保留 LLM 内精细时序建模。类比:看三小时纪录片——先扫一眼章节标题(全局),再精读你关心的 5 分钟片段(局部)。
实践案例
案例 1:ST-LLM 视频对话推理
# 官方仓库: https://github.com/TencentARC/ST-LLMfrom stllm import STLLM
model = STLLM.from_pretrained("TencentARC/ST-LLM-7B") # 基于 InstructBLIP-Vicuna-7B
# 短视频:1 fps 采帧,局部帧数 4–16,token 不经 mean poolingresponse = model.chat( video_path="basketball_clip.mp4", question="球是从左边滚到右边,还是从右边滚到左边?", num_local_frames=8,)
# 长视频(数分钟):启用 global-local,全局 64 帧均值 + 局部 16 帧response_long = model.chat( video_path="cooking_tutorial_10min.mp4", question="厨师是在切菜之前还是之后加的盐?", use_global_local=True, global_frames=64, num_local_frames=16,)案例 2:动态掩码如何缩短训练上下文
设: T=16 帧, 每帧 K=32 token → 未掩码总长 512 token
掩码率 ρ ~ N(0.5, 0.1), 裁剪到 [0.3, 0.7]: ρ=0.5 时 → 约 256 token 进 LLM(与 LLaVA 单图 token 预算相当) ρ=0.3 时 → 约 358 token(偏难,逼模型补全更多时空依赖) ρ=0.7 时 → 约 154 token(偏省算力)
对比 VideoChat 式 mean pooling: 无论 T 多大 → 固定 K=32 token,运动信息在池化阶段已丢失案例 3:MVBench 运动类 vs 全局平均(摘选)
MVBench 20 项任务平均分(7B 级、LLaMA-1 底座公平对比):
VideoChatGPT 32.7 Video-LLaMA 34.1 VideoChat2 51.1 ← 专用视频编码器 + 三阶段预训练 ST-LLM 54.9 ← 单阶段视频指令微调、无额外时序模块
运动敏感三项(Moving Direction / Count / Attribute): VideoChat2 平均 36.3% ST-LLM 平均 59.2% ← 方向感、计数、属性变化明显领先
VideoChatGPT-Bench 生成式五维均分: ST-LLM Mean Score 3.15(Temporal 2.93),高于 VideoChat2 的 2.98踩过的坑
-
全 token 进 LLM 显存随帧数线性涨:不做动态掩码时,16 帧 × 32 token 已占满上下文;工程上必须训练期掩码、推理期控制 local 帧数,否则长视频直接 OOM。
-
CLIP/BLIP-2 图像编码器拖细粒度任务后腿:MVBench 的 Fine-grained Action、Fine-grained Pose 上 ST-LLM 未必全胜——低层时空纹理不是 Q-Former 强项,运动理解强不等于微动作识别强。
-
帧数分布漂移仍会伤精度:动态掩码缓解但未消除「训练 16 帧、测试突然 64 帧」的分布差;global-local 要手动开关,短视频误开全局分支反而引入多余噪声。
-
单阶段微调依赖强图像底座:论文冻结 CLIP 与 Q-Former,只吃 InstructBLIP 已有对齐;换弱视觉底座或跳过图像对话预训练,时空 token 直入 LLM 的优势会缩水。
适用 vs 不适用场景
适用:
- 需要判断运动方向、先后次序、场景切换的短视频 QA(MVBench 类多选)
- 希望少改架构、复用现成 Image LLM 权重做视频对话——不必训三阶段专用视频编码器
- 研究「LLM 能否承担时序建模」的基线对照——ST-LLM 是首批开源验证该假设的模型之一
- 分钟级视频在全局概览 + 局部精读之间折中——global-local 模块可直接借鉴
不适用:
- 需要精确到秒的时间戳定位——ST-LLM 不绑绝对时间,timechat-2024 更合适
- 毫秒级动作识别或极细粒度姿态——图像编码器瓶颈明显
- 实时流式对话——全 token 进 LLM 延迟高,难做在线场景
- 追求极致参数效率的 8 帧均匀采样方案——video-llava-2024 的 ABP + MLP 更轻,但时序弱
历史小故事(可跳过)
- 2024-03-30:ST-LLM 上传 arXiv(2404.00308),同期 VideoChat2、Chat-UniVi 都在加专用时序模块,它反其道把建模权交还 LLM
- 2024 上半年:代码与权重在 GitHub / HuggingFace 开源(TencentARC/ST-LLM),MVBench 平均 54.9 刷新 7B 级 SOTA
- 2024 年中:VideoChatGPT-Bench 生成评测均分 3.15,Temporal 维度 2.93 领先多数竞品——「LLM 当时序学习器」假说获量化背书
- 2024 下半年:VideoLLaMA 2、Qwen2-VL 等工业模型继续演进时空建模,ST-LLM 的「掩码 + 全局局部」思路被后续工作吸收为工程标配之一
学到什么
- 时序理解不必等于「加时序模块」:mean pooling 是效率捷径却是理解天花板;把 (T \times K) token 交给 LLM,运动类 benchmark 可一次性抬 20+ 点
- 掩码训练对视频 LLM 有双重价值:既砍训练算力,又提升推理时帧数鲁棒——借鉴 NLP/视频预训练的 BERT 式思路,但配合自回归 LLM 需定制 MVM 目标
- 长视频要「全局摘要 + 局部精读」不对称设计:全帧进 LLM 不可行;平均池化全局 + 采样局部再残差注入,是在有限上下文里保留时序建模能力的务实折中
- 简洁管线可以打败重型预训练:ST-LLM 单阶段视频指令微调、冻结视觉侧,仍超三阶段 VideoChat2——说明问题定义(谁来做时序建模)比堆模块更重要
延伸阅读
- 论文 PDF:arXiv 2404.00308
- 官方代码:TencentARC/ST-LLM
- 评测基准:MVBench
- blip2-2023 —— 视觉编码与 Q-Former 来源;ST-LLM 逐帧当图像编码
- llava —— 对照:单图 token 预算与 ST-LLM 掩码后平均长度相当
- timechat-2024 —— 另一条长视频路线:帧级时间戳绑定 vs ST-LLM 的纯 token 序列
- videochat-flash-2025 —— 后继:分层压缩换更长上下文,与 ST-LLM 的 global-local 异曲同工
关联
- blip2-2023 —— ST-LLM 视觉底座;Q-Former 把每帧压成少量 token 再拼时空序列
- llava —— 共享「视觉 token + LLM 自回归」范式;ST-LLM 把单图扩展为 (T) 帧串联
- llava-onevision-2024 —— 同期统一图像/视频表示;ST-LLM 专注时序、不做跨模态对齐创新
- timechat-2024 —— 长视频 + 时间定位;ST-LLM 强运动理解弱绝对秒数
- videochat-flash-2025 —— VideoChat 系长视频后继;HiCo 压缩 vs ST-LLM 掩码 + 全局局部
- flamingo-2022 —— 早期「交错视觉-文本序列进 LLM」;ST-LLM 在视频对话场景系统化验证
- clip —— 被 BLIP-2 取代为默认视觉编码;ST-LLM 实验表明 Q-Former 压缩更利于多帧拼接
- vit —— 逐帧 ViT patch 是时空 token 的空间维来源
- flan-2021 —— 指令微调范式延续到视频对话数据混合(VideoChatGPT-100k 等)
反向链接
- blip2-2023 —— BLIP-2 — 用 188M 小桥接器把冻结的视觉模型和大语言模型拼起来
- clip —— CLIP — Contrastive Language-Image Pre-training
- flamingo-2022 —— Flamingo — 让冻结的大模型学会看图,几张样例就上手
- flan-2021 —— FLAN — 用自然语言指令教模型学会”听话”
- llava —— LLaVA — 开源多模态对话模型
- llava-onevision-2024 —— LLaVA-OneVision — 单图、多图、视频一个模型全搞定
- timechat-2024 —— TimeChat — 带时间戳的多轮视频助手,长视频也能精确定位
- video-llava-2024 —— Video-LLaVA — 投影之前先对齐,图像和视频共用一个 LLM
- videochat-flash-2025 —— VideoChat-Flash — 分层压缩,让长视频理解又快又准
- vit —— ViT — Vision Transformer