MARC: Memory-Augmented RL Token Compression for Efficient Video Understanding

Authors: Peiran Wu, Zhuorui Yu, Yunze Liu, Chi-Hao Wu, Enmin Zhou, Junxiao Shen Affiliations: University of Bristol, Memories.ai Research Venue: ICLR 2026 Code: 论文提及有 Project Web / Code / Model 链接,但截至 2026-03 未找到公开 GitHub 仓库

1. Motivation (研究动机)

1.1 问题背景

视觉语言模型 (VLM) 在视频理解任务中面临严重的计算瓶颈:

  • Token 爆炸:单张图片可能产生数千个 visual token;扩展到高帧率、长时视频后,token 数量急剧膨胀
  • 现有压缩方法的不足:training-free 的 token merging/pruning 方法(如 TokenPacker、MovieChat、VidCom)虽降低了计算开销,但由于缺乏训练适配,在激进压缩下性能显著下降
  • 核心矛盾:如何在 95%+ token 压缩率下保持接近无压缩的推理能力?

1.2 核心贡献

  1. MARC 框架:首个将结构化视觉检索(retrieve)与 RL 蒸馏压缩(compress)深度结合的视频 token 压缩方案
  2. C-GRPO (Compression Group Relative Policy Optimization):首个专为视频 token 压缩设计的 post-training RL 策略,将 64 帧 Teacher 的推理能力蒸馏到 1 帧 Student
  3. 极致效率:在 6 个视频基准上实现 95% token 压缩 (2589.93 122.69)、72% GPU 显存降低 (41.63GB 11.48GB)、23.9% 生成延迟降低,mean accuracy 仅从 42.21 降至 42.20

2. Idea (核心思想)

2.1 整体架构:Retrieve-then-Compress

Figure 1 (Left) 解读:Visual Memory Compression 流程。原始视频先经 Visual Memory Retriever 进行事件分割和检索,筛选出与 query 最相关的视频片段;然后通过 Visual Encoder 编码为 token 矩阵,再经基于余弦相似度的帧合并压缩,最终生成压缩后的 Visual Token Matrix。整个流程是一个两阶段的 retrieve-then-compress 策略。

Figure 1 (Right) 解读:C-GRPO 蒸馏框架。Policy Model 接收压缩后的视觉 token,生成 G 组输出 ;Ref Model(即无压缩 Teacher)提供参考奖励;Reward Function 结合正确性奖励 和压缩奖励 计算总奖励 ;通过 Group Compute 得到归一化 advantage ,最终优化 clipped PPO 目标函数。

2.2 Visual Memory Retriever (VMR)

VMR 受认知科学中情景记忆(episodic memory)的启发,分两步完成:

Stage 1: Event-Based Video Segmentation

  • 使用 TransNet v2 深度事件检测网络,在场景切换、话题转移、新动作开始等语义边界处切分视频
  • 生成语义连贯的短片段(visual memory fragments),而非固定长度窗口
  • 优势:每个片段是完整事件,减少检索搜索空间

Stage 2: Memory Retrieval

  • 使用 Perception Encoder (Bolya et al., 2025) 将 query 和视觉片段映射到共享高维潜在空间
  • 基于对比学习框架训练 embedding,确保语义相似的 query-fragment 对在空间中靠近
  • 通过预索引 embeddings 上的最近邻搜索,输出 top-k 最相关片段(实验中 k=3)

2.3 Memory-Aware Temporal Compression Layer

对 VMR 检索到的 top-k 片段进行时序压缩:

Step 1: 帧编码

从 k 个片段中以 1fps 均匀采样得到 N 帧,经 ViT 编码为 patch-level hidden states:

其中 为每帧 patch 数。

Step 2: 短期记忆窗口分割

沿时间轴将 划分为长度为 的短期记忆窗口(对应同一事件内的连续帧):

Step 3: 基于余弦相似度的帧合并

在每个窗口 内,迭代合并最相似的相邻帧对:

合并方式为取均值:

每个窗口的压缩目标帧数为:

其中 为压缩率。

Step 4: 跨片段全局合并(可选)

拼接所有压缩窗口 ;若 ,则进行轻量级跨片段合并(同样使用均值合并),确保局部事件结构优先保留。

2.4 C-GRPO: Compression Group Relative Policy Optimization

C-GRPO 将压缩问题建模为蒸馏问题:64 帧 Teacher 提供参考行为,1 帧 Student 学习在极端压缩下匹配 Teacher 的推理质量。

Retention Ratio(保留率)

其中 为压缩输入的奖励, 为 64 帧完整输入的平均奖励。

Compression Reward(压缩奖励)

  • 为最低可接受保留率阈值(实验取
  • 为缩放因子
  • 直觉: 太低则激励不足, 太高则过于保守

Gated Total Reward(门控总奖励)

仅在回答正确时才给予压缩奖励,防止 reward hacking。

Normalized Advantage

C-GRPO 目标函数

2.5 算法伪代码

# MARC training and inference
for video in dataset:
    fragments = TransNetV2.segment(video)
    embeddings = perception_encoder.encode(fragments)
    vmr_index.add(video.id, embeddings)
 
policy = init_policy("Qwen2.5-VL-3B")
reference_policy = freeze_copy(policy)
teacher = init_teacher("Qwen2.5-VL-3B-64f")
 
for step in range(num_training_steps):
    video, query, answer = sample_batch(video_r1_subset)
    top_k_clips = vmr_retrieve(vmr_index, query, video, k=3)
    frames = uniform_sample(top_k_clips, fps=1)
 
    patch_tokens = vit_encode(frames)
    compressed_tokens = memory_aware_compress(patch_tokens, ratio=rho)
    teacher_reward = mean(teacher.reward(video_64frames=video, query=query))
 
    outputs = []
    total_rewards = []
    for _ in range(G):
        output = policy.generate(compressed_tokens, query)
        reward = answer_reward(output, answer)
        retain_ratio = reward / max(teacher_reward, 1e-6)
        compression_bonus = alpha * max(0.0, retain_ratio - tau)
        total_reward = reward + is_correct(output, answer) * compression_bonus
 
        outputs.append(output)
        total_rewards.append(total_reward)
 
    advantages = normalize(total_rewards)
    loss = clipped_ppo_loss(policy, reference_policy, outputs, advantages, beta=0.04)
    optimize(loss, params=policy)
 
top_k_clips = vmr_retrieve(vmr_index, query, video, k=3)
frames = uniform_sample(top_k_clips, fps=1)
compressed_tokens = memory_aware_compress(vit_encode(frames), ratio=rho)
answer = policy.generate(compressed_tokens, query)

3. Method (方法)

3.1 训练细节与代码映射

3.1.1 训练超参数

超参数
BackboneQwen2.5-VL-3B
训练数据Video-R1-260K (5K subset: 3920 video + 1080 image)
OptimizerAdam, lr = , weight decay = 0.01
帧分辨率上限 pixels
最大输出长度768 tokens
Group size 8
KL 权重 0.04
保留率阈值 0.6
分布式训练DeepSpeed ZeRO-3
推理设置top_p=0.001, temperature=0.01, Flash Attention 2
评测硬件NVIDIA A6000 (48GB)
VMR top-k3

3.1.2 Prompt Template

QUESTION_TEMPLATE = (
    "{Question}\n"
    "Please think about this question as if you were a human pondering deeply. "
    "Engage in an internal dialogue using expressions such as "
    "'let me think', 'wait', 'Hmm', 'oh, I see', 'let's break it down', etc., "
    "or other natural language thought expressions. It's encouraged to include "
    "self-reflection or verification in the reasoning process. "
    "Provide your detailed reasoning between the <think> and </think> tags, "
    "and then give your final answer between the <answer> and </answer> tags."
)

3.1.3 代码映射表(基于论文方法推测的实现结构)

论文模块推测代码模块功能
Event-Based Video Segmentation (Sec 3.1.1)vmr/segmentation.py调用 TransNet v2 进行镜头切换检测
Memory Retrieval (Sec 3.1.2)vmr/retrieval.pyPerception Encoder 编码 + FAISS 最近邻搜索
Memory-Aware Temporal Compression (Sec 3.2.1)compression/temporal_merge.py窗口内余弦相似度帧合并 + 跨片段全局合并
C-GRPO Training (Sec 3.2.2)training/c_grpo.py基于 GRPO 的 RL 训练循环,含压缩奖励
Reward Functiontraining/rewards.py正确性奖励 + 门控压缩奖励
Teacher Modelmodels/teacher.py64 帧 Qwen2.5-VL-3B(冻结)
Student/Policy Modelmodels/student.py1 帧压缩输入的 Qwen2.5-VL-3B
SFT Baselinetraining/sft.pyVideo-R1-COT-165K 上的监督微调

注:截至 2026-03-12,作者尚未公开代码仓库。上表为基于论文描述的推测性映射。

3.2 方法小结

MARC 的方法核心可以概括为两点:先用 VMR 做相关片段检索,再对检索结果进行 memory-aware temporal compression,并用 C-GRPO 让压缩后的 student 尽量接近 teacher 的回答质量。

4. Experimental Setup (实验设置)

4.1 数据与评测设置

  • 训练数据:Video-R1-260K 的 5K 子集(3920 video + 1080 image)
  • 评测基准:VSI-Bench、VideoMMMU、MMVU(mc)、MVBench、TempCompass、VideoMME(w/o sub)
  • 对照模型:Qwen2.5-VL-3B、InternVL3.5-2B、InternVL3.5-4B、Gemma-3-4B、ByteVideoLLM-3B、MovieChat-3B、VidCom²-3B
  • 压缩预算:主要报告 1 frame 等效输入,也对 8 frames / 16 frames / 64 frames 做对比
  • 硬件环境:NVIDIA A6000 (48GB)

4.2 评测与图表说明

Figure 2 解读:评测数据集的 QA 样本分布饼图。VideoMME 占比最大(约 34%),其次是 VSI-Bench(24%)、MVBench(20%)等。MARC 在 VideoMME(长视频为主,平均 515-2466 秒)上表现最差(保留率仅 74%),因为 top-3 检索在长视频中不可避免地丢弃了关键时间链信息。

Figure 3 解读:训练数据集 (Video-R1-260K 5K 子集) 的 QA 样本类别分布饼图。涵盖 Knowledge (20.4%)、Math (14.5%)、Chart (14.0%)、Spatial (8.2%)、OCR (6.0%)、General (5.7%) 等类别,以及来自 LLAVA-Video-178K (30.4%) 和 STAR (3.2%) 等视频数据集。

4.3 论文未详细说明

论文未详细说明:不同数据划分的精确采样策略、检索库构建的完整工程细节、以及 VMR 额外耗时在训练/推理中的逐项拆分。

5. Experimental Results (实验结果)

5.1 主实验:6 个基准上的性能对比

Figure 4 解读:各 benchmark 的 vision token 数量与 benchmark score 的对比柱状图。蓝色柱为 64 帧 baseline 的 token 数(VSI-Bench 约 3918、VideoMME 约 3734),绿色柱为 1 帧压缩后的 token 数(均约 120-130)。红色折线为 baseline score,橙色折线为 MARC score。可以看到在 token 数减少约 95% 的情况下,MARC 在 MMVU、MVBench、TempCompass 上甚至超过 baseline。

模型FramesVSI-BenchVideoMMMUMMVU(mc)MVBenchTempCompassVideoMME(w/o sub)mean
Qwen2.5-VL-3B6432.9335.3348.6444.7738.0553.5542.21
Qwen2.5-VL-3B1627.6330.7845.2843.8937.9544.3738.32
InternVL3.5-2B6414.6515.5622.8814.7123.634.2615.95
InternVL3.5-4B6428.9633.3347.5144.7158.3439.1542.00
Gemma-3-4B6426.8326.7841.7636.8255.044638.87
ByteVideoLLM-3B6421.3322.3328.6322.5635.5522.725.52
MovieChat-3B125.1425.7839.3537.138.7926.4132.10
VidCom²-3B6425.523.8931.0829.8835.2321.4827.84
MARC-3B127.5533.1151.9945.8255.3439.4442.20

关键发现

  • MARC-3B 仅用 1 帧等效 token(~122 tokens)即达到 64 帧 baseline 的同等 mean accuracy(42.20 vs 42.21)
  • 相比同类压缩方法,MARC 在 mean accuracy 上分别超过 ByteVideoLLM 65%、MovieChat 31%、VidCom 52%
  • 在 MMVU (+3.35)、MVBench (+1.05)、TempCompass (+17.29) 上甚至超过 64 帧 baseline
  • MARC-3B 超过更大的 InternVL3.5-4B 和 Gemma-3-4B

5.2 效率对比

Figure 5 解读:GPU Peak Memory 和 Latency 的对比图。左侧柱状图显示 Qwen-3B-64f baseline 的 GPU 峰值显存为 41.63 GB(batch=15),而 MARC-3B-1f 仅需 11.48 GB,降低 72.4%。右侧折线图显示 LLM Latency 从 3.77s 降至 2.87s(23.9% 降低),Total Latency 从 3.35s 降至 2.11s(15.9% 降低)。

指标Qwen-3B-64fMARC-3B-1f降幅
GPU Peak Memory (batch=15)41.63 GB11.48 GB72.4%
LLM Generation Latency3.77s2.87s23.9%
Model Latency3.35s2.11s15.9%
End-to-end Latency/sample--11.1%
Visual Tokens (mean)2589.93122.6995.3%

延迟随 token 规模的缩放关系 (Table 6):

Frame ConfigBefore LatencyCompressed Latency加速比Before TokensCompressed Tokens
512 frames, 256x28x2818.36s7.65s58.3%64,5121,008
256 frames, 256x28x288.26s4.55s44.9%32,256504
128 frames, 128x28x282.80s2.29s18.2%7,689120
64 frames, 128x28x282.51s2.11s15.9%3,840120

关键洞察:token 数越多,压缩带来的加速越显著(512 帧下 58.3% vs 64 帧下 15.9%),适合长视频场景。

5.3 消融实验

VMR 与 C-GRPO 的分别贡献 (Table 2):

模型FramesVSI-BenchVideoMMMUMMVUMVBenchTempCompassVideoMMEmean
Qwen2.5-VL-3B (baseline)6432.9335.3348.6444.7738.0553.5542.21
Qwen2.5-VL-3B (VMR)6434.0234.3355.5257.2440.3851.8545.56
Qwen2.5-VL-3B (SFT+VMR)126.7131.0047.8343.9153.7637.7740.16
Qwen2.5-VL-3B (SFT)125.7028.3345.7639.4854.0537.7238.50
MARC-3B (VMR+C-GRPO)127.5533.1151.9945.8255.3439.4442.20
  • VMR alone(无压缩,64帧):mean 42.21 45.56(+3.35),说明 top-3 检索筛选掉了无关帧,反而提升性能
  • SFT baseline(1帧压缩):mean 38.50;加 VMR 后 40.16(+1.66)
  • MARC (C-GRPO):mean 42.20,比 SFT+VMR 高 +2.04,比纯 SFT 高 +9.6% 相对提升

阈值消融 (Table 3):

VSI-BenchVideoMMMUMMVUMVBenchTempCompassVideoMMEmean
0.428.2731.6649.1245.2154.7239.0741.34
0.627.5533.1151.9945.8255.3439.4442.20
0.828.2331.7849.3445.8954.1239.0341.40

最优 :过低(0.4)激励不足,过高(0.8)约束过严导致学习信号受限。

VideoMME 上不同压缩预算 (Table 5):

MethodMARC (1 frame)MARC (8 frames)Qwen (16 frames)Qwen (64 frames)
VideoMME39.4445.3344.3753.55

8 帧等效压缩的 MARC (45.33) 已超过原生 16 帧 Qwen (44.37)。

5.4 失败案例分析

Figure 2 解读:评测数据集的 QA 样本分布饼图。VideoMME 占比最大(约 34%),其次是 VSI-Bench(24%)、MVBench(20%)等。MARC 在 VideoMME(长视频为主,平均 515-2466 秒)上表现最差(保留率仅 74%),因为 top-3 检索在长视频中不可避免地丢弃了关键时间链信息。

Figure 3 解读:训练数据集 (Video-R1-260K 5K 子集) 的 QA 样本类别分布饼图。涵盖 Knowledge (20.4%)、Math (14.5%)、Chart (14.0%)、Spatial (8.2%)、OCR (6.0%)、General (5.7%) 等类别,以及来自 LLAVA-Video-178K (30.4%) 和 STAR (3.2%) 等视频数据集。

5.5 个人思考与总结

5.5.1 方法亮点

  1. Retrieve-then-Compress 范式的优雅性:先用 VMR 过滤无关片段(粗粒度),再用时序压缩合并冗余帧(细粒度),两阶段互补。VMR 单独使用就能提升 3.35 mean score,说明”选对帧比看更多帧更重要”
  2. C-GRPO 的设计巧妙
    • 门控奖励(仅正确时给予压缩 bonus)避免了模型”压缩很好但回答错误”的 reward hacking
    • 保留率 将压缩质量与 teacher 性能显式对齐,而非简单 token 数量惩罚
  3. 实用性强:95% 压缩率 + 72% 显存降低,直接解锁边缘设备部署(自动驾驶、监控等场景)

5.5.2 局限性

  1. 长视频性能下降明显:VideoMME 上仅保留 74% baseline 性能(39.44 vs 53.55)。top-k=3 的固定检索预算在平均 2466 秒的长视频中损失过多时间链信息
  2. Teacher 依赖:C-GRPO 的压缩奖励 依赖 teacher 的 ,若 teacher 本身在某任务上表现差,学生难以超越
  3. 训练数据仅 5K:虽然结果不错,但更大规模训练数据是否能进一步提升?论文未探讨
  4. VMR 的额外延迟:TransNet v2 分割 + Perception Encoder 检索的额外开销未在 end-to-end latency 中充分量化

5.5.3 未来方向

  • 自适应 token 预算:根据视频长度/复杂度动态调整压缩率和 top-k 值,而非固定 和 k=3
  • Temporal Q-Former:论文在失败案例分析中提到,引入可学习的时序查询模块自适应选择关键帧,可能缓解长视频问题
  • 扩展到更大模型:当前仅在 3B 模型上验证,7B/72B 模型上的效果值得探索
  • 与 KV Cache 压缩结合:MARC 压缩的是输入 visual tokens,可与 KV cache 压缩方法正交结合

5.5.4 一句话总结

MARC 通过”先检索再压缩”的两阶段策略 + C-GRPO 强化学习蒸馏,首次实现 95% visual token 压缩下几乎无损的视频理解性能,是 VLM 高效部署的实用方案。