专栏名称: FightingCV
一个专注于分享计算机视觉、多模态机器学习方向前沿论文,解答常见科研问题,分享好用科研工具的公众号。努力努力再努力,瑞思拜!
目录
相关文章推荐
北京厚朴中医  ·  筑基十一期招生开启——学习中医、厚朴筑基 ·  2 天前  
中国民兵  ·  新文职进入不了工作该如何办?来看 → ·  昨天  
中国民兵  ·  新文职进入不了工作该如何办?来看 → ·  昨天  
中国能源报  ·  关于举办绿电、绿证、CCER交易培训的通知 ·  昨天  
北京厚朴中医  ·  筑基十一期招生开启——学习中医、厚朴筑基 ·  3 天前  
51好读  ›  专栏  ›  FightingCV

Inf-MLLM:单 GPU 上多模态大型语言模型的高效流式推理

FightingCV  · 公众号  ·  · 2024-11-24 09:00

正文

多模态大语言模型(MLLM)以其多模态综合能力而著称,广泛应用于许多现实世界的应用中,包括 GPT-4o、自动驾驶和机器人技术。 尽管其性能令人印象深刻,但多模式输入总是会产生长上下文。 长上下文下的推理需要缓存先前 Token 的大量 Key 和 Value 状态(KV 缓存),这会带来高延迟和过多的内存消耗。 因此,在边缘设备上部署 MLLM 的流式推理具有挑战性,这在很大程度上限制了 MLLM 在实际应用中的功能和使用。 In this paper, we introduce Inf-MLLM, an efficient inf erence framework for MLLMs, which enable streaming inference of MLLM on a single GPU with inf inite context. Inf-MLLM 基于我们对 LLM 和 MLLM 中注意力模式(称为“注意力鞍”)的关键观察。 得益于新发现的注意力模式,Inf-MLLM 通过动态缓存最近的 token 和相关 token 来维护大小受限的 KV 缓存。 此外,Inf-MLLM 提出了注意力偏差,这是一种使 MLLM 能够捕获长期依赖性的新方法。 我们证明,Inf-MLLM 使多个 LLM 和 MLLM 在单个 GPU 上能够在 4M Token 长文本和 1 小时长视频的多轮对话上实现稳定的性能。 此外,Inf-MLLM 比 StreamingLLM 等现有方法表现出卓越的流推理质量,并且比 H2O 加速 2 倍。

1 简介

引入多模态大语言模型 (MLLM) (Gao 等人 2024; Alayrac 等人 2022; Li 等人 2022; Team 等人 2023) ,为大语言模型 (LLM) 提供新功能处理图像、视频、音频等不同模态的信息 (Liu 等人2024) 视频应用通常涉及较长的序列长度,这体现了 MLLM 卓越的多模态推理能力。 然而,当上下文长度超过某个阈值时,它们也会导致显着的内存消耗和模型性能下降。 这些问题在 流式 推理场景中更加严重,如图 1 所示,其中多模态输入被流式传输,并且 MLLM 必须处理长上下文或多轮转换不断地。

高效的流推理对于许多实际应用程序至关重要。 例如,OpenAI 的新旗舰模型 GPT-4o (OpenAI 2024) 展示了对视频、音频和文本流的高效推理。 但是,它不是开源的,并且不利于在没有云访问的 本地 设备上进行流式推理。 通过 API 访问云规模模型可能会引发隐私问题并产生额外成本。 对于机器人等其他边缘应用程序,云规模模型并不总是可访问的,这使得边缘的流式推理变得非常重要。 然而,由于有限的内存预算和高效率要求,在这种现实世界的边缘应用程序中部署 MLLM 具有挑战性。

图1: 流式推理过程的图示。 下图显示,Inf-MLLM 有助于现有 MLLM 处理文本和视频流,而不会出现 OOM,同时保持高质量的 Token 生成。

在本文中,我们重点关注单 GPU 上 MLLM 的高效流式推理,并总结了四个不同方面的挑战如下。

C1:二次计算复杂度 :注意力的计算复杂度与 KV 缓存大小成二次方,检索 KV 状态会产生额外的内存访问 (Dao 等人 2022; Sukhbaatar 等人 2019; Choromanski 等人2020) 随着序列长度的增长,解码速度会降低到难以忍受的程度,尤其是对于多轮对话和长视频理解。

C2:内存消耗 :对于 MLLM,维护较大的 KV 缓存以避免推理期间的重新计算,其随序列长度线性扩展。 这可能会导致内存消耗较高 (Pope 等人 2023) 对于转换为大量 Token 的多模态输入,问题更加严重。 例如,一个几分钟长的视频可以转换为数千个 Token (Jin 等人 2024; Li, Wang, and Jia 2023)

C3:上下文长度限制 :由于大多数 MLLM 都是通过预训练的 LLM 进行微调的,因此它们受到上下文窗口的约束。 当序列长度超过训练文本的长度时,性能很快就会下降,这在实际应用中是不可接受的。 因此,需要长度外推技术来处理过长的输入 (Press, Smith, and Lewis 2022;Su 等人 2024)

C4:长期记忆 :捕获长期依赖性的能力对于 MLLM 的流式推理至关重要。 然而,由于缺乏高质量的多模态数据集 (Hudson and Manning 2019; Maaz 等人 2023; Li 等人 2023b) 以及微调成本 (于等人2024) 现有视频 QA 数据集 (Xu 等人 2017a, b; Li 等人 2024a, 2023a) 包含几秒长的视频和短对话,无法增强 MLLM 在微调时的长期推理能力。

先前的研究,如窗口注意力 (Beltagy, Peters, and Cohan 2020; Jiang 等人 2023; Liu 等人 2022; Dong 等人 2022) 、H2O (Zhang 等人 2024b) 、Keyformer (Adnan 等人 2024) 和 StreamingLLM (Xiao 等人 2024) ,提高了 LLM 的推理性能,但没有一个能够同时应对所有挑战,特别是对于 MLLM 的流式推理。 尽管 H2O 和 StreamingLLM 使 LLM 能够处理超长文本,但它们要么在长文本上实现不稳定的困惑,要么在需要长期记忆的任务上失败。 详情请参见 2 部分。 此外,现有方法侧重于纯文本输入,不能直接应用于具有多模式输入的 MLLM。

为此,我们提出了 Inf-MLLM,这是一种创新的推理框架,可以在单个 GPU 上以无限文本和视频流作为输入,实现高效、高质量的 MLLM 流式推理。 我们基于我们的关键观察提出了一种有效的 KV 缓存驱逐机制,即存在具有高注意力分数的关键 Token ,例如非线性曲线中的一系列鞍点。 借用数学中鞍点的概念,我们将这些标记称为 注意力鞍点 通过缓存最相关的 Token 并逐出不相关 Token 的不太重要的 KV 状态,Inf-MLLM 提高了解码速度 (C1),减少了内存使用量 (C2),并使现有 MLLM 能够支持比其原始最大上下文长度更长的序列长度,而无需重新训练和微调(C3)。 我们观察到,简单地聚合每个标记的注意力分数会导致分数总和倾向于序列中较早的标记,从而很难选择真正相关的标记。 为了解决这个问题,我们进一步引入了 注意力偏差 来确保KV缓存不断驱逐较早的 Token 并容纳新的注意力鞍。 通过这种方式,Inf-MLLM 可以动态保留最相关的标记,并在流推理(C4)期间捕获长期依赖关系。 我们的贡献如下。

  • 我们发现了注意力鞍现象并总结了 MLLM 上注意力模式的特征。 基于此,我们提出了一种有效的 KV 缓存驱逐机制,以减少内存使用并在单个 GPU 上实现 MLLM 的高效流式推理。

  • 我们引入注意力偏差来更新 KV 缓存以进行长上下文推理。 它帮助 Inf-MLLM 处理文本和视频流并捕获长期依赖性。

  • 实验表明,Inf-MLLM 有助于对边缘设备上的多轮对话和视频剪辑进行高效、高质量的流式推理。

图2: 具有典型模式的注意力图。 我们以 MLLM 模型 Chat-UniVi-7B 中的一些层为例。

2 相关作品

KV 缓存驱逐

以前的工作通过驱逐不重要 Token 的 KV 状态来维护大小受限的 KV 缓存。 窗口注意力 (Beltagy,Peters和Cohan 2020;Jiang等人2023;Liu等人2022;Dong等人2022) 缓存最近的 Token 以降低计算复杂性和内存消耗。 然而,一旦序列长度超过缓存大小,模型性能就会下降。 H2O (Zhang 等人 2024b) 、Keyformer (Adnan 等人 2024) 和 SnapKV (Li 等人 2024b) 通过其 KV 减少内存使用逐出策略,H2O 使 LLM 能够处理无限长度的文本。 然而,由于重要标记的不正确驱逐,在一些长文本基准上的困惑度并不令人满意。 StreamingLLM (Xiao 等人 2024) 使 LLM 通过缓存初始和最近 Token 的 KV 状态来处理无限长度。 虽然 StreamingLLM 在多轮对话中随着序列的增加而保持稳定的困惑度,但它受到注意力窗口的限制,在需要长期记忆和广泛数据依赖性的任务上失败,例如长文档问答和长视频问答。 所有这些方法都处理纯文本输入。

KV缓存压缩

存在专注于压缩 KV 缓存的方法。 例如,Transformer-XL (Dai 等人 2019) 将整个上下文分割成具有可管理大小的较短片段,并引入 RNN 的递归机制来连接相邻片段。 压缩 Transformer (Rae等人2019) 通过池化或卷积压缩过去的记忆以进行远程序列学习。 Gear (Kang 等人 2024) 应用降维和量化来压缩 KV 缓存。 这些方法提供了另一个有趣的方向,以减轻大量内存消耗,同时实现良好的模型性能和高效的推理。 然而,最大上下文长度受到预训练期间确定的上下文窗口的限制。 压缩技术与 KV 驱逐方法正交。

相对位置编码

相对位置编码使 LLM 能够在推理过程中处理较长的上下文,同时对较短的文本进行训练。 两种代表性方法是旋转位置嵌入 (RoPE) (Su 等人 2024) 和 ALiBi (Press, Smith, and Lewis 2022) RoPE 引入了旋转编码方法来捕获相对 Token 位置。 ALiBi添加负值来削弱远距离标记之间的相关性,从而引入相对位置信息。 尽管有所改进,但当上下文长度超过上下文窗口约束时,它们的性能会下降 (Press, Smith, and Lewis 2022;Chen 等人 2023) 尽管最近的工作显示出更好的性能 (Peng 等人 2024; Chen 等人 2023) ,但该技术无法缓解因增加 KV 状态而导致的高内存使用率。

3 方法论

3.1 MLLM 的注意力模式

我们可视化不同层的注意力图并发现它们的特定模式,这有利于 KV 缓存选择和驱逐机制。 以Chat-UniVi-7B (Jin 等人 2024) 为例,如图 2 所示。 MLLM 的注意力图表现出几个特征。

模式一:近期 Token 关注度较高。 位于序列末尾的最近标记受到广泛关注。 这是显而易见的,因为它们在位置和语义上大多与新生成的标记相关。

模式 2:从视频转换而来的 Token 通常会收到 hi- gh 注意力分数。 我们观察到一个有趣的现象,即大量的注意力分数被分配到从输入视频转换的标记区域。 对于某些视觉语言模型 (VLM),视频的初始标记甚至共享超过 40% 的注意力分数。 我们将该特征归因于预训练过程,该过程要求模型专注于视频内容进行问答。 然而,由于多轮对话中视频的位置事先是未知的,因此需要一种有效的方法来动态识别重要的视觉标记。

模式 3:注意力分数高的职位显示为 ve- 垂直线。 除了最近的标记和关键视觉标记之外,我们发现高注意力分数也分布在分散在序列中的标记中。 这些标记需要数十或数百个解码步骤,从而在注意力图上产生短或长的垂直线。 一个特例是 StreamingLLM (Xiao 等人 2024) 命名的注意力接收器,它指的是初始 Token ,因为它们被 SoftMax 赋予了巨大的注意力分数。 与仅缓存静态初始 Token 的 StreamingLLM 不同,Inf-MLLM 可以动态识别有影响力的分散 Token ,包括初始 Token 。

模式 4:高注意力分数随着多方的关注而向前移动 回合推理正在进行。 在流式推理过程中,我们观察到高注意力分数在对话轮次中向前移动。 当新的提示出现时,注意力分数的分布发生显着变化,表明包含参与 Token 的注意力窗口应该相应更新,特别是当新一轮对话开始时。 现有方法无法捕获转移特征,只能累积用于 KV 选择的注意力分数,从而使大分数聚集在较早的标记上,而忽略了重要的较新标记。

图3: KV 缓存驱逐示意图。 当流式推理过程中出现新提示时,就会发生这种情况。

图4: 说明在流推理过程中调整注意力分数分布的注意力偏差。

注意力模式呈现具有高注意力分数的标记,这些标记与当前标记的解码最相关。 我们将这些标记称为 注意力鞍 ,借用数学中鞍点的概念。 为了识别并始终维护 KV 缓存中的注意力鞍,我们提出了以下两种技术。

  • 我们设计了一种 KV 缓存驱逐机制,以驱逐不相关的 KV 状态,同时在 KV 缓存中保持注意力鞍(模式 1、2 和 3)。

  • 我们引入注意力偏差来动态更新 KV 缓存并捕获移位特征(模式 4),从而使 MLLM 具有长期记忆。

3.2 KV缓存驱逐和更新

Inf-MLLM采用高效的KV缓存驱逐和更新机制,如图 3 所示。 在流式推理过程中,当新的提示出现时,计算提示中每个标记的 QKV 状态并将其存储在长度为 L 的检索窗口中。假设存在来自前几轮推理的 t 较早标记的 KV 状态。 通过将 L 新 Token 的查询与缓存中 t Token 的 KV 状态以及新 Token 本身的 KV 状态相乘来计算注意力分数,生成 L n 矩阵如图 3 所示。

为了识别注意力鞍座并驱逐不相关标记的 KV 状态,每个标记的注意力分数都会被累积。 由于注意力模式中垂直线的连续性,我们在检索窗口长度内(从第(t+1)行到第n行)进行局部求和以提高计算效率,而不是沿着完整的集合进行聚合注意力矩阵。 然后对求和结果进行归一化,以避免早期标记中注意力分数的累积。 这适应了注意力模式的变化特征。 之后,Inf-MLLM 选择具有 top- t 最高标准化注意力分数的标记的 KV 状态,并从缓存中逐出不太重要的 KV 状态。 更新后的KV缓存将用于本轮接下来的解码过程。 当新提示到达时,Inf-MLLM 在每个对话轮开始时调用 KV 缓存驱逐和更新机制,并且在解码步骤期间不会驱逐 Token 。 因此,KV缓存驱逐和更新的成本可以忽略不计,并且由于驱逐后参与计算的 Token 更少,因此模型的推理速度得到提高。

3.3 注意偏差

为了进一步加强KV缓存驱逐的能力,特别是在长上下文处理和多轮会话中,需要解决一些问题。 首先,由于 SoftMax 操作,尽管序列长度增加且标记数量增加,但注意力分数或权重的总和仍保持为 1。 这意味着随着推理的进行,每个token的权重逐渐下降,并且加剧了高分token的识别难度。 其次,经过多轮KV驱逐后,剩余token之间的注意力分数分布变得不均匀,并且一些token的注意力分数由于多轮积累而得到增强,如图 4 所示。 这种现象会阻止识别与当前对话轮更相关的新注意力鞍,导致不正确的 KV 驱逐,甚至在长上下文推理轮次后缓存几乎没有更新时导致模型崩溃。

为了在流推理中不断更新 KV 缓存,我们引入了注意力偏差,将注意力焦点转移到最新的上下文。 我们在图 4 中展示了它的效果,其中注意力偏差可以调整注意力分数的分布并使多轮视频对话能够继续。 在识别注意力鞍座时采用注意力偏差。 在计算出检索窗口中的平均注意力分数后,我们向它们添加注意力偏差,以促使 KV 缓存丢弃很久以前保留的标记。 随着注意力偏差的增加,KV 缓存往往会涉及更多新的 token,模型会更加关注传入的 token 以适应流场景。 由于注意力偏差相对较低,KV 缓存可以更长时间地保留先前的标记,并且模型能够捕获更长期的依赖关系。 因此,适当调整注意力偏差可以保留长期依赖性,同时确保长上下文流推理。

3.4 Inf-MLLM算法

在本节中,我们将概述 Inf-MLLM 算法。 我们强调其核心思想是根据我们观察到的注意力模式维护由最近 Token 和相关 Token 组成的大小受限的 KV 缓存,并通过检索窗口和注意力偏差实现我们的 KV 缓存驱逐机制。 我们还采用长度外推技术来处理超出模型预训练长度的超长上下文。 Inf-MLLM能够应用于文本和视频输入流式传输并需要连续处理的流场景。 算法 1 中提供了详细信息。

算法1 Inf-MLLM算法概述

输入 :注意力得分矩阵 W 𝐑 m × n ,KV状态 K , V 𝐑 n × d ,检索窗口大小 l ,相关标记数量 r ,注意偏差 b 请注意,虽然下面的算法应用于一层的 KV 缓存,但 Inf-MLLM 实际上利用 PyTorch 的并行性同时处理所有层的 KV 缓存。

输出 :KV缓存( K s , V s )

1: S = 1 l Σ W [ m l : m , 0 : n l ] S 𝐑 n l

2: d = b / ( n l ) 注意偏差参数

3: D = [ n l 1 , , 0 ] d 注意偏差

4: W = S + D 有偏差的注意力分数

5: I r = T o p k ( W , r ) 相关 Token 索引

6: I l = [ n l , , n ] 最近 Token 的索引

7: I = [ I r , I l ] I 𝐑 r + l

8: K s , V s = K [ I , : ] , V [ I , : ] 压缩KV缓存

9: 返回 ( K s , V s )







图5: 具有不同上下文长度的 Wiki-Text-103 数据集上的 LLM 困惑度比较。

4 实验

我们以纯文本和文本/视频作为输入,在 LLM 和 MLLM 上评估 Inf-MLLM。 我们对三个著名的 LLM 进行了测试,即 Vicuna-7B (Chiang 等人 2023) 、Pythia-2.8B (Biderman 等人 2023) 和 LLaMA-2-7B-32K (Together 2023) ,以及两个最先进的视频 MLLM,即Chat-UniVi-7B (Jin 等人 2024) 和 Flash-VStream-7B (Zhang 等人 2024a) 所有这些模型都采用相对位置编码,例如 RoPE (Su 等人 2024) 对于纯文本输入,我们将 Inf-MLLM 与典型基线进行比较,包括窗口注意力 (Beltagy, Peters, and Cohan 2020) 、H2O (Zhang 等人 2024b) 和 StreamingLLM (Xiao 等人 2024) 对于视频和文本输入,我们评估了使用和不使用 Inf-MLLM 的 MLLM 的流式推理性能。 所有实验均在单个 NVIDIA 4090D GPU 或 NVIDIA ORIN GPU 上进行,展示了 Inf-MLLM 在资源受限设备上的强大能力。

4.1 LLM 对超长文本的困惑

我们首先将 Inf-MLLM 与之前的方法在长文本输入的 LLM 困惑度上进行比较,如图 5 所示。 测试的 LLM、Vicuna-7B、Pythia-2.8B 和 LLaMA-2-7B-32K 的最大上下文长度分别为 2K、2K 和 32K。 应用KV缓存驱逐策略后,可以扩展上下文长度。 我们可以看到,对于高达 20K 的上下文长度,Inf-MLLM 比窗口注意力、H2O 和 StreamingLLM 具有更好的困惑度。 请注意,H2O 仅支持 Vicuna-7B,并且当超过 LLaMA-2-7B-32K 上的 2K 限制时,窗口注意力的困惑度会迅速增加。 我们还在具有最多 400 万个标记的文本上评估 Inf-MLLM,如图 5 所示。 结果表明,Inf-MLLM 授权的 LLM 在超长文本输入上表现出稳定的困惑度,大大超过了最大上下文长度约束。

4.2 长期记忆能力

为了评估长期记忆的能力,我们基于LongEval-LineRetrieval数据集 (Li*等人2023) 设计了多轮问答基准。 该数据集包含300个提示,每个提示包含多行文本,格式为“第 i n d e x 行中的REGISTER_CONTENT是 n u m b e r ”,并要求模型回答 n u m b e r 在提示符末尾给出 i n d e x 我们改变最终问题与相应答案线之间的距离来评估长期记忆的能力。

我们选择 StreamingLLM(缩写为 StrLLM)作为基线,因为它在长文本输入上优于以前的其他方法。 如表 2 所示,Inf-MLLM 在所有 Token 距离和 LLM 上都达到了更高的准确度。 这种优越性在 LLaMA-2-7B-32K 上尤其显着,我们将注意力偏差设置为 0.0001。 Inf-MLLM 保持接近 100% 的准确度,而 StreamingLLM 在不同的 token 距离下下降到低于 50%。 这种改进可归因于(i)相关标记扩大了注意力窗口的范围,(ii)注意力偏差补偿了重塑的注意力分数。 因此,与现有方法相比,Inf-MLLM 具有稳定的流性能和长期记忆。

表1: 零样本多轮视频问答任务比较(每个任务 5、10 和 300 轮)。 OOM :内存不足。 KV缓存大小为2K。 评估基于使用 GPT-3.5-Turbo-1025 的协议(准确性和分数)。

MSVD-QA MSRVTT-QA TGIF-QA

Accuracy Score Accuracy Score Accuracy Score
Models 5 10 300 5 10 300 5 10 300 5 10 300 5 10 300 5 10 300
Chat-UniVi (w/o ours) 60.0 70.0 OOM 3.8 4.0 OOM 20.0 40.0 OOM 2.8 3.1 OOM 80.0 70.0 OOM 4.4 4.0 OOM
Chat-UniVi (w/ ours) 100.0 90.0 72.7 4.4 4.1 3.9 40.0 40.0 53.3 2.6 2.8 3.34 60.0 70.0 67.0 3.6 3.8 3.90
Flash-VStream (w/o ours) 80.0 OOM 3.8 OOM 20.0 OOM 2.8 OOM 60.0 50.0 OOM 3.2 3.0 OOM
Flash-VStream (w/ ours) 100.0 90.0 65.7 5.0 4.4 3.54 20.0 40.0 54.0 1.6 2.5 3.16 60.0 40.0 63.7 3.0 3.1 3.7



















表2: LongEval-LineRetrieval 数据集上的精度比较。 值越高意味着精度越高。
Line Distance Token Distance Vicuna-7B LLaMA-2-7B-32K
StrLLM Ours StrLLM Ours
5 115 0.98 0.98 0.40 1.00
10 230 0.97 0.98 0.07 0.99
15 345 0.90 0.98 0.04 0.99
20 460 0.80 0.92






请到「今天看啥」查看全文