EPIC: Efficient Position-Independent Caching for Serving Large Language Models

📄 arXiv: 2410.15332v3 📥 PDF

作者: Junhao Hu, Wenrui Huang, Weidong Wang, Haoyi Wang, Tiancheng Hu, Qin Zhang, Hao Feng, Xusheng Chen, Yizhou Shan, Tao Xie

分类: cs.LG, cs.CL, cs.DC, cs.PF

发布日期: 2024-10-20 (更新: 2025-05-27)


💡 一句话要点

EPIC:高效的位置无关缓存,用于加速大型语言模型的服务。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大型语言模型 上下文缓存 位置无关缓存 检索增强生成 推理加速

📋 核心要点

  1. 现有上下文缓存技术依赖于请求间的精确前缀匹配,限制了在检索增强生成等场景下的KV向量重用。
  2. EPIC引入位置无关缓存(PIC)的概念,允许KV向量的模块化重用,无需精确前缀匹配,提升缓存效率。
  3. EPIC通过LegoLink算法减轻了文档开头的“注意力沉没”效应,在保证精度的前提下,显著提升了TTFT和吞吐量。

📝 摘要(中文)

大型语言模型(LLMs)在广泛的应用中展现出强大的能力,但随着请求(提示)变得越来越复杂,如何高效地服务这些模型变得极具挑战性。上下文缓存通过重用跨请求重复的token的键值(KV)向量(中间表示)来提高服务性能。然而,现有的上下文缓存需要请求之间完全匹配的前缀,这限制了在诸如少样本学习和检索增强生成等场景中的重用,在这些场景中,不可变的内容(例如,文档)在请求之间保持不变,但前面有不同的前缀。位置无关缓存(PIC)通过实现KV向量的模块化重用(而不管前缀如何)来解决这个问题。我们形式化了PIC,并通过引入EPIC(一种包含我们新的LegoLink算法的服务系统)来改进先前的工作,该算法减轻了每个文档开头的“注意力沉没”效应,从而以最小的计算量保持准确性。实验表明,与现有系统相比,EPIC在首个token生成时间(TTFT)方面实现了高达8倍的改进,吞吐量提高了7倍,且精度损失可忽略不计或没有。

🔬 方法详解

问题定义:现有的大型语言模型服务系统,在处理具有重复内容但前缀不同的请求时,无法有效利用上下文缓存。传统的上下文缓存需要请求之间具有完全相同的前缀才能重用KV向量,这在检索增强生成等场景中造成了资源浪费,因为文档内容不变但用户query不同,导致前缀不匹配。

核心思路:论文的核心思路是引入位置无关缓存(PIC),允许KV向量的模块化重用,而无需考虑请求的前缀是否完全匹配。通过将KV向量与它们所代表的内容解耦,可以跨不同的请求重用相同的KV向量,从而提高缓存效率和加速推理过程。

技术框架:EPIC系统包含以下主要模块:1) 请求解析模块,用于识别请求中的可缓存内容(例如,文档)。2) KV向量存储模块,用于存储和管理KV向量。3) 位置无关缓存模块,用于根据内容匹配来查找和重用KV向量。4) LegoLink算法模块,用于解决PIC引入的“注意力沉没”问题。整体流程是:接收请求 -> 解析请求 -> 查找缓存 -> 重用KV向量 -> 生成token。

关键创新:最重要的技术创新点是位置无关缓存(PIC)的概念和LegoLink算法。PIC打破了传统上下文缓存对精确前缀匹配的依赖,实现了KV向量的模块化重用。LegoLink算法通过在文档开头引入额外的注意力机制,减轻了由于位置信息丢失而导致的“注意力沉没”效应,保证了模型的准确性。

关键设计:LegoLink算法的关键设计在于在每个文档的开头添加一个可学习的“link” token,该token充当一个“锚点”,引导模型正确地关注文档内容。具体实现细节包括:link token的初始化方式、注意力权重的计算方式以及如何将link token融入到现有的Transformer架构中。此外,缓存的替换策略(例如,LRU)和缓存大小也是影响性能的关键参数。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,EPIC在首个token生成时间(TTFT)方面实现了高达8倍的改进,吞吐量提高了7倍,且精度损失可忽略不计或没有。与传统的上下文缓存系统相比,EPIC在处理具有重复内容但前缀不同的请求时,表现出显著的优势。这些结果验证了PIC和LegoLink算法的有效性。

🎯 应用场景

EPIC可以广泛应用于需要高效服务大型语言模型的场景,例如检索增强生成、少样本学习、对话系统等。通过提高缓存效率和加速推理过程,EPIC可以降低服务成本,提升用户体验,并支持更大规模的并发请求。未来,EPIC可以进一步扩展到支持更复杂的缓存策略和更灵活的KV向量管理,以适应不断变化的应用需求。

📄 摘要(原文)

Large Language Models (LLMs) show great capabilities in a wide range of applications, but serving them efficiently becomes increasingly challenging as requests (prompts) become more complex. Context caching improves serving performance by reusing Key-Value (KV) vectors, the intermediate representations of tokens that are repeated across requests. However, existing context caching requires exact prefix matches across requests, limiting reuse cases in settings such as few-shot learning and retrieval-augmented generation, where immutable content (e.g., documents) remains unchanged across requests but is preceded by varying prefixes. Position-Independent Caching (PIC) addresses this issue by enabling modular reuse of the KV vectors regardless of prefixes. We formalize PIC and advance prior work by introducing EPIC, a serving system incorporating our new LegoLink algorithm, which mitigates the inappropriate "attention sink" effect at every document beginning, to maintain accuracy with minimal computation. Experiments show that EPIC achieves up to 8x improvements in Time-To-First-Token (TTFT) and 7x throughput gains over existing systems, with negligible or no accuracy loss.