跳转至

FlexAttention for Efficient High-Resolution Vision-Language Models

会议: ECCV 2024
arXiv: 2407.20228
代码: 项目页面
领域: 视觉语言模型 / 高分辨率图像理解
关键词: high-resolution VLM, attention mechanism, token selection, efficiency

一句话总结

提出FlexAttention注意力机制,通过注意力图引导动态选取约10%的高分辨率token并经层次化自注意力融合到LLM隐状态中,实现计算成本降低约40%的同时在V* Bench等高分辨率基准上超越现有方法。

研究背景与动机

领域现状:当前VLM通常在224×224或336×336低分辨率下处理图像,在需要辨识小文字、小物体等细节的场景下表现不佳。已有高分辨率VLM(如LLaVA-1.5-HD、CogAgent)将高分辨率图像编码为大量token,但穷举地对所有token计算注意力导致计算开销平方级增长。

现有痛点:(1) 高分辨率带来的token数量与分辨率平方增长,self-attention计算量随之暴增;(2) 人类视觉并不逐像素记忆,而是先建立粗表示再按需关注细节区域——现有VLM缺乏这种动态注意机制;(3) CogAgent的cross-attention方案仍需在每层对所有高分辨率特征做密集对应,效率有限。

核心矛盾:如何在保持高分辨率图像理解能力的同时避免self-attention的平方级计算开销?

方法详解

整体框架

FlexAttention可即插即用地替换VLM中的self-attention模块。模型共有\(N_{SA}+N_{FA}\)层decoder:前\(N_{SA}\)层使用标准self-attention,仅处理低分辨率图像token和文本token以建立粗理解;后\(N_{FA}\)层使用FlexAttention,通过注意力图动态选取少量高分辨率token送入层次化自注意力。输入高分辨率图像同时编码为高分辨率token \(f_{HR}\)和低分辨率token \(f_{LR}\)

关键设计

  1. 高分辨率特征选择模块

    • 从上一层attention map中提取最后一个text token对所有低分辨率image token的注意力权重
    • 将这些权重reshape为2D attention mask,归一化、二值化后上采样到高分辨率尺度
    • 用该mask从\(f_{HR}\)中选取约10%的高分辨率token \(f_{SHR}\),实现"按需检索细节"
    • 设计动机:模仿人类视觉——先整体感知,再根据具体问题动态聚焦到相关的高分辨率区域
  2. 层次化自注意力模块

    • 将选中的高分辨率token \(f_{SHR}\) 拼接到低分辨率+文本token的K、V矩阵中
    • Query仅来自原始隐状态H,Key/Value来自 \(Concat(H, f_{SHR})\)
    • 输出注意力图去掉高分辨率部分后传递给下一层的特征选择模块
    • 计算复杂度从 \(O((M+N)^2D)\) 降低到 \(O((M+N)ND)\),关于高分辨率token数M为线性而非平方级

损失函数 / 训练策略

  • 在LLaVA-1.5-7b上加载预训练权重,替换self-attention为FlexAttention后在LLaVA微调数据集上训练1个epoch
  • 高分辨率输入设为1008×1008(原始分辨率3倍)
  • batch size 1152,学习率2e-5,cosine scheduler
  • 零样本评估

实验关键数据

主实验

方法 分辨率 V* Bench (Overall) MagnifierBench TextVQA TFLOPs
LLaVA-1.5-7b 336² 47.6 26.8 58.2 11.6
LLaVA-HD 448² 51.8 35.0 60.6 24.9
LLaVA-XAttn 1008² 48.2 32.2 59.0 27.1
LLaVA-FlexAttn 1008² 54.5 35.0 61.2 17.1
GPT-4V - 55.0 - - -

消融实验

消融项 V* Bench 说明
全HR token(无选择) ~51% 计算巨大但未获明显提升
不同选择比例(5%/10%/20%) 10%最优 过少丢失细节,过多增加计算
仅浅层FlexAttn 性能退化 深层需要高分辨率信息
Cross-Attention替代 48.2 CogAgent式方案不如层次化自注意力

关键发现

  • 仅选取约10%的高分辨率token即可达到甚至超越使用全部token的效果
  • 计算成本比LLaVA-HD低31%(24.9→17.1 TFLOPs),比LLaVA-XAttn低37%
  • 在V* Bench的空间推理类别上超越GPT-4V(64.5 vs 60.5)
  • 层次化自注意力优于CogAgent的cross-attention方案:K/V拼接保留了原始token间的信息流

亮点与洞察

  • "按需检索高分辨率细节"的思路非常直观,核心insight是注意力图本身已经告诉我们模型在关注什么
  • 即插即用设计可以轻松集成到大多数VLM中——只需替换后几层的self-attention模块
  • 在V* Bench上与GPT-4V竞争展示了该方法在需要精细视觉推理任务上的实力

局限性 / 可改进方向

  • 高分辨率特征仍需完整编码(high-res token的生成本身存在开销),仅在attention阶段节省计算
  • 注意力引导的token选择是硬选择(二值mask),可能遗漏边界案例——软选择或learned选择可能更好
  • 仅在LLaVA-1.5-7b上验证,对更大规模模型(13B/34B)的效果未知
  • 训练数据和代码承诺开源但未明确验证

相关工作与启发

  • vs LLaVA-1.5-HD:HD将高分辨率token全部拼接到序列中,计算开销大;FlexAttention仅选取10%关键token
  • vs CogAgent:CogAgent用cross-attention融合高分辨率特征,需在每层对全部高分辨率token做密集计算;FlexAttention的层次化自注意力更高效
  • 启发:注意力图作为"免费"的视觉重要性信号被严重低估——可应用于视觉token压缩、动态分辨率等场景

评分

  • 新颖性: ⭐⭐⭐⭐ 注意力引导的动态token选择思路清晰、实用
  • 实验充分度: ⭐⭐⭐⭐ 多个高分辨率基准+计算效率对比+消融
  • 写作质量: ⭐⭐⭐⭐ 方法presentation清晰,伪代码便于实现
  • 价值: ⭐⭐⭐⭐ 对高分辨率VLM的效率问题提供了实用解决方案

相关论文