GemFilter 是一种用于加速长文本输入的 LLM 推理并降低内存消耗的新型 AI 方法,其利用 LLM 早期层识别关键信息的能力,从而显著压缩输入序列,并在保持性能的同时,实现高达 2.4 倍的加速和 30% 的内存使用减少。
论文介绍
大型语言模型 (LLMs) 已成为众多 AI 系统中不可或缺的一部分,在各种应用中展现出卓越的功能。然而,随着对长上下文输入处理需求的增长,研究人员在优化 LLM 性能方面面临着重大挑战。处理扩展输入序列的能力对于增强 AI agent 的功能和改进检索增强生成技术至关重要。虽然最近的进展已将 LLM 处理输入的能力扩展到高达 1M 个 token,但这需要付出巨大的计算资源和时间成本。主要挑战在于加速 LLM 生成速度并减少长上下文输入的 GPU 内存消耗,这对于最小化响应延迟和提高 LLM API 调用的吞吐量至关重要。尽管 KV 缓存优化等技术改进了迭代生成阶段,但 prompt 计算阶段仍然是一个显著的瓶颈,尤其是随着输入上下文长度的增加。这引发了一个关键问题:研究人员如何在 prompt 计算阶段加速速度并减少内存使用?
之前加速具有长上下文输入的 LLM 生成速度的尝试主要集中在 KV 缓存压缩和驱逐技术上。已经开发了诸如选择性驱逐远程上下文、使用注意力接收器进行流式 LLM 以及动态稀疏索引等方法来优化迭代生成阶段。这些方法旨在减少与 KV 缓存相关的内存消耗和运行时间,特别是对于较长的输入。
一些技术,例如 QuickLLaMA 和 ThinK,对 KV 缓存进行分类和修剪,以仅保留必要的 token 或维度。其他技术,例如 H2O 和 SnapKV,则侧重于保留对累积注意力有显著贡献或根据观察窗口必不可少的 token。虽然这些方法在优化迭代生成阶段已显示出希望,但它们没有解决 prompt 计算阶段的瓶颈。
另一种方法涉及通过修剪上下文中冗余信息来压缩输入序列。但是,此方法需要保留大部分输入 token 以维持 LLM 性能,从而限制了其进行有效压缩的有效性。尽管取得了这些进展,但在 prompt 计算和迭代生成阶段同时减少运行时间和 GPU 内存使用的挑战在很大程度上仍未得到解决。
来自威斯康星大学麦迪逊分校、Salesforce AI Research 和香港大学的研究人员提出了 GemFilter,这是一种对 LLM 如何处理信息的独特见解。这种方法基于以下观察结果:即使在生成答案之前,LLM 也经常在早期层中识别相关 token。GemFilter 利用这些早期层(称为“过滤器层”)来显着压缩长输入序列。
该方法的工作原理是分析来自这些早期层的注意力矩阵,以提取回答查询所需的信息。例如,在 LLaMA 3.1 8B 模型中,第 13 层到第 19 层可以有效地总结所需信息。这使得 GemFilter 可以在仅针对这些过滤器层对长上下文输入执行 prompt 计算,从而将输入 token 从多达 128K 个压缩到仅 100 个。
通过根据这些早期层中的注意力模式选择 token 子集,GemFilter 在处理时间和 GPU 内存使用方面都实现了大幅减少。然后将选定的 token 输入到完整模型中进行推理,然后是标准生成函数。这种方法解决了 prompt 计算阶段的瓶颈,同时保持了与迭代生成阶段中现有方法相当的性能。
GemFilter 的架构旨在通过利用早期层处理来优化 LLM 性能,以实现高效的 token 选择。该方法利用来自早期层(特别是“过滤器层”)的注意力矩阵来识别和压缩相关的输入 token。此过程涉及分析注意力模式,以选择包含任务所需基本信息的一小部分 token。
GemFilter 架构的核心是其两步法:
- Token 选择:GemFilter 使用来自早期层(例如,LLaMA 3.1 8B 中的第 13 层)的注意力矩阵来压缩输入 token。它从注意力矩阵的最后一行中选择前 k 个索引,有效地将输入大小从潜在的 128K 个 token 减少到大约 100 个 token。
- 完整模型推理:然后,通过整个 LLM 处理选定的 token 以进行完整推理,然后是标准生成函数。
这种架构使 GemFilter 能够在 prompt 计算阶段实现显着的加速和内存减少,同时保持迭代生成阶段的性能。该方法在算法 1 中进行了阐述,该算法概述了 token 选择和处理的具体步骤。GemFilter 的设计因其简单性、缺乏训练要求以及跨各种 LLM 架构的广泛适用性而引人注目,使其成为提高 LLM 效率的通用解决方案。
GemFilter 的架构围绕两遍方法构建,以优化 LLM 性能。核心算法(在算法 1 中详细介绍)包括以下关键步骤:
- 初始前向传递:该算法仅在输入序列 T 上运行 m 层 transformer 网络的前 r 层。此步骤生成第 r 层(用作过滤器层)的查询和键矩阵(Q® 和 K®)。
- Token 选择:GemFilter 使用来自第 r 层的注意力矩阵选择 k 个最相关的 token。这是通过从注意力矩阵的最后一行(表示最后一个查询 token 和所有键 token 之间的交互)中识别 k 个最大值来完成的。
- 多头注意力处理:对于多头注意力,选择过程会考虑所有注意力头的矩阵的最后一行之和。
- Token 重新排序:然后对选定的 token 进行排序以保持其原始输入顺序,确保正确的序列结构(例如,将token 保留在开头)。
- 最终生成:该算法仅使用选定的 k 个 token 运行完整的前向传递和生成函数,从而显着减少了输入上下文长度(例如,从 128K 个 token 减少到 1024 个 token)。
这种方法使 GemFilter 能够通过利用早期层信息进行 token 选择来有效地处理长输入,从而减少 prompt 计算和迭代生成阶段的计算时间和内存使用。
GemFilter 在多个基准测试中均表现出色,展示了其在处理 LLM 长上下文输入方面的有效性。
在 Needle in a Haystack 基准测试中(该测试测试 LLM 从大量文档中检索特定信息的能力),GemFilter 的表现明显优于标准注意力(所有 KV)和 SnapKV 方法。对于输入长度分别为 60K 和 120K 个 token 的 Mistral Nemo 12B Instruct 和 LLaMA 3.1 8B Instruct 模型,均观察到了这种优越的性能。
在 LongBench 多任务基准测试(评估跨各种任务的长上下文理解)中,即使仅使用 1024 个选定的 token,GemFilter 的表现也与标准注意力相当或更好。例如,GemFilter-2048 的性能优于 Mistral Nemo 12B Instruct 模型的标准注意力。GemFilter 还表现出比 H2O 好得多的性能,以及与 SnapKV 相当的性能。
值得注意的是,GemFilter 在有效压缩输入上下文的同时实现了这些结果。当使用 1024 个 token 时,它会将输入 token 减少到平均 8%,而当使用 4096 个 token 时,它会将输入 token 减少到 32%,而精度下降可以忽略不计。这种压缩能力,加上其过滤关键信息和提供可解释摘要的能力,使 GemFilter 成为优化 LLM 在长上下文任务上的性能的强大工具。
GemFilter 在计算效率和资源利用率方面均有显着提高。与 SnapKV 和标准注意力等现有方法相比,GemFilter 实现了 2.4 倍的加速,同时将 GPU 内存使用量分别减少了 30% 和 70%。这种效率提升源于 GemFilter 独特的三阶段处理方法,其中仅在初始阶段处理长输入上下文。后续阶段对压缩输入进行操作,从而节省了大量资源。使用 Mistral Nemo 12B Instruct 和 Phi 3.5 Mini 3.8B Instruct 模型进行的实验进一步证实,与最先进的方法相比,GemFilter 在运行时间和 GPU 内存消耗方面具有优越的性能。
这项研究提出了 GemFilter,这是一种增强 LLM 推理以处理长上下文输入的稳健方法,解决了速度和内存效率方面的关键挑战。通过利用早期 LLM 层识别相关信息的能力,GemFilter 在现有技术的基础上实现了显着改进。该方法的 2.4 倍加速和 30% 的 GPU 内存使用量减少,以及其在 Needle in a Haystack 基准测试中的卓越性能,都突出了其有效性。GemFilter 的简单性、免训练性质以及对各种 LLM 的广泛适用性使其成为一种通用的解决方案。此外,它通过直接 token 检查增强的可解释性为 LLM 内部机制提供了宝贵的见解,有助于 LLM 部署的实际进步和对这些复杂模型的更深入理解。
论文下载
- 论文地址:https://arxiv.org/abs/2409.17422
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。