F l e x A t t e n t i o n {\tt FlexAttention} FlexAttention 是一种旨在增强大型视觉语言模型的方法,通过利用动态高分辨率特征选择和分层自注意机制,使其能够有效地处理并从高分辨率图像输入中获得优势, F l e x A t t e n t i o n {\tt FlexAttention} FlexAttention 在性能和效率方面超越了现有的高分辨率方法。
来源:晓飞的算法工程笔记 公众号
论文: FlexAttention for Efficient High-Resolution Vision-Language Models
Introduction
大型视觉语言模型(VLMs
)在包括图像描述、视觉问答、图像文本匹配等多模态任务中展示出显著的能力,但这些模型通常在相对低分辨率(例如 224 × 224 224 \times 224 224×224 或 336 × 336 336 \times 336 336×336)下处理图像,因此在需要仔细检查小区域(例如细微的文本或小物体)的场景中表现不佳。例如,在图1
(a)中,这些模型由于低分辨率输入的限制而无法识别印刷标志上的文字,这一局限性变得显而易见。
为了解决这一问题,已经有几种高分辨率视觉语言模型(例如LLaVA-1.5-HD
和CogAgent
),它们可以接受高分辨率图像作为输入并将其编码为高分辨率标记。尽管这些模型能够更仔细地检查小区域,但需要耗费大量计算资源来全面处理所有高分辨率标记以计算注意力。这些模型与人类进行视觉推理的方式有所不同,与其完美地记忆所有像素的细节,论文倾向于首先保持粗略的表示,并仅在接收到外部刺激时才关注相关区域以检索更多细节。因此,高分辨率视觉语言模型能够灵活动态地基于低分辨率特征,关注感兴趣的区域进行高分辨率细节的检索,这一点至关重要。
为此,论文提出了 F l e x A t t e n t i o n {\tt {
{FlexAttention}}} FlexAttention ,一种新颖的注意力机制,可以无缝地插入大多数视觉语言模型中,以有效地增强它们感知高分辨率图像的能力。具体来说,如图1
© 所示, F l e x A t t e n t i o n {\tt {
{FlexAttention}}} FlexAttention 接受高分辨率图像作为输入,并将图像编码为高分辨率图像标记和低分辨率图像标记。为了提高计算效率,仅将低分辨率图像标记和文本标记输入到前几层,以粗略理解整个图像。在后续层中,仅使用低分辨率图像标记和一小部分高分辨率图像标记来计算注意力,从而显著减少计算成本。每个带有 F l e x A t t e n t i o n {\tt {
{FlexAttention}}} FlexAttention 的解码器层包含一个高分辨率特征选择模块和一个分层自注意力模块。高分辨率特征选择模块根据输入的注意力图检索相关区域的高分辨率图像标记,所选的高分辨率图像标记与低分辨率图像标记和文本标记串联,并输入到分层自注意力模块。分层自注意力模块生成一个注意力图用于选择高分辨率图像标记,这些标记被输入到下一层分层自注意力模块。这两个模块被迭代处理直到最后一层,通过投影器产生最终的答案。
在几个高分辨率多模态基准测试上评估了 F l e x A t t e n t i o n {\tt {
{FlexAttention}}} FlexAttention ,包括一般基准测试如V* Bench
和Magnifierbench
,以及领域特定的基准测试如TextVQA
(文本理解)和RSVQA
(遥感)。实验结果展示了与其他高分辨率方法相比表现更好,并且几乎减少了40%
的计算成本。此外,在V* Bench
上, F l e x A t t e n t i o n {\tt {
{FlexAttention}}} FlexAttention 相比于商业聊天机器人如GPT-4V
,获得了更高的分数。
Preliminary
对于高分辨率视觉语言模型,将其高分辨率图像输入定义为 I H R I_{HR} IHR ,文本输入定义为 T T T 。此外,定义低分辨率图像标记为 f L R f_{LR} fLR ,高分辨率图像标记为 f H R f_{HR} fHR ,文本标记为 f T f_{T} fT 。VLM
的隐藏状态用 H ∈ R N × D H \in \mathbb{R}^{N \times D} H∈RN×D 表示,其中 N N N 为序列长度, D D D 为隐藏状态大小。隐藏状态 H H H 包含 N i N_i Ni 个低分辨率图像标记,后跟 N t N_t Nt 个文本标记。定义 f S H R f_{SHR} fSHR 为从 M M M 个高分辨率图像标记 f H R f_{HR} fHR 中选取的子集。
自回归的大型语言模型(LLMs
),如LLaMA
,在大多数视觉语言模型中发挥关键作用,因为它们负责接收图像和文本标记作为输入并生成答案序列。自回归LLM
由多个堆叠的解码器层构成。每个解码器层包含两个子层。第一个是自注意力模块,第二个是前馈(FFN
)层。在每两个子层周围使用skip
连接,接着是层归一化(LN
)。简而言之,每个子层的输出为 LN ( x + SubLayer ( x ) ) \text{LN}(x+\text{SubLayer}(x)) LN(x+SubLayer(x)) 。
自注意力是解码器层的基本模块。对于自注意力,给定输入的隐藏状态 H ∈ R N × D H \in \mathbb{R}^{N\times D} H∈RN×D ,首先会利用线性投影层将