摘要
大型语言模型 (LLM) 在处理长上下文输入方面表现出了非凡的能力,但代价是增加了计算资源和延迟。我们的研究提出了一种新颖的方法来解决长上下文瓶颈,以加速 LLM 推理并降低 GPU 内存消耗。我们的研究表明,LLM 可以在生成查询答案之前,在早期层识别相关标记。利用这一见解,我们提出了一种算法,该算法使用 LLM 的早期层作为过滤器来选择和压缩输入标记,从而显着减少后续处理的上下文长度。我们的方法 GemFilter 在速度和内存效率方面与现有技术(如标准注意力和 SnapKV/H2O)相比,展现出显著的改进。值得注意的是,与 SOTA 方法相比,它实现了 2.4 倍的加速和 30% 的 GPU 内存使用率降低。在“大海捞针”任务上的评估表明,GemFilter 显著优于标准注意力和 SnapKV,并在 LongBench 挑战中表现出相当的性能。GemFilter 简单、无需训练,并且广泛适用于不同的 LLM。至关重要的是,它通过允许人类检查所选输入序列来提供可解释性。这些发现不仅为 LLM 部署提供了实际益处,而且还增强了我们对 LLM 内部机制的理解,为 LLM 设计和推理的进一步优化铺平了道路。我们的代码可在 \url{https://github.com/SalesforceAIResearch/GemFilter} 获取。