最近大厂推出的Prompt Cache到底是个啥?
发布时间:2026/8/27 13:42:19 作者:尧图编辑部 阅读量:1,286

1. Claude模型推出Prompt Cache早在8月份Anthropic的Claude模型 API 推出了提示缓存功能现 Prompt Cache 已在Anthropic API上推出Prompt Cache可以让开发者在调用API时复用缓存的上下文从而降低成本、降低延时。根据官方文档号称可以降低90%的成本85%的延迟。今天这篇文章我们来看看 Claude API 所使用的 Prompt Cache到底是何方神圣能带来这么大的收益。2. 为什么要提出Prompt Cache大语言模型应用开发者应该都有感觉在具体应用中往往会有大量的提示词可以被复用比如System Prompt、RAG中的文档特别是长上下文、提示词模板等。正因为有这些可以被复用的提示词存在Prompt Cache就有了其存在的价值。Prompt Cache正式利用了LLM提示词中的可复用部分在内存中预算计算好并在这些部分出现在提示词中时直接复用从而降低延迟。目前在单个提示请求服务中常见的复用注意力状态 attention states的方法是 KV-Cache。而Prompt Cache则是在KV-Cache的基础上将注意力状态复用从单个提示请求扩展到了多个提示请求。而跨提示复用注意力状态存在两方面问题• 1、由于 Transformer 中的位置编码注意力状态是位置依赖的。所以只有当文本段出现在相同位置时其注意力状态才能被复用。• 2、系统必须能够高效识别出其注意力状态可能已被缓存的文本段以便复用。3. Prompt Cache到底是个啥上面部分介绍了本篇论文作者引入Prompt Cache的背景接下来我们看看Prompt Cache到底是个啥为了解决上一部分中提出的两个问题作者提出了两个思路• 1、运用“提示标记语言”Prompt Markup LanguagePML使提示的接近结构化表达。PML 将可复用的文本段明确为模块即“提示模块”。PML不仅可以已解决第二个问题还为解决第一个问题开辟了途径因为每个提示模块都能被赋予唯一的位置 ID。• 2、LLM 能够对具有不连续位置 ID 的注意力状态进行操作。提取不同的注意力状态段并将它们拼接起来以形成意义的子集。让用户能够依照需求选择提示模块甚至在运行时更新部分提示模块。3.1 Prompt Cache 原理上图展示了Prompt Cache的提示词缓存复用原理• 首先PML在模式和提示中明确了可重用的提示模块。提示模块中可以包含参数比如行程规划模块里可以包括持续时间这样的参数。• 提示模块编码预先计算了模式中所有模块的注意力状态①并将它们缓存起来以备使用。• 当提示被调用时提示缓存采用缓存推理• 检索已缓存的导入提示模块的注意力状态②• 为参数③和新文本片段④计算注意力状态• 最后将它们合并生成整个提示的注意力状态⑤这一步不仅解决最开始提出的第二个难题还为解决第一个难题开辟了途径因为每个提示模块都能被分配唯一的位置 ID。另外基于作者的经验发现LLM 能够处理具有不连续位置 ID 的注意力状态。只要令牌的相对位置得以保留输出质量就不会受到影响。这意味着能够提取不同的注意力状态段落并将它们连接起来形成新的含义。利用这一点使用户能够依据需求选择提示模块甚至在运行时替换某些含义。3.2 提示标记语言PMLSchema是定义提示模块并描述其相对位置和层次结构的文档。每个Schema都有一个唯一的标识符通过名称属性并使用module标签指定提示模块。未被module标签包围或未指定标识符的文本被视为匿名提示模块并始终包含在从该模式构建的提示中。对于 LLM 用户模式充当为提示模块创建和复用注意力状态PML通过参数化提示模块极大地提升了重用的可能性。参数是具有特定长度的命名占位符可以在模式中的提示模块中任意位置出现。通过param标签定义标签中的name和len属性分别指定了参数的名称和最大令牌数。当提示导入该模块时可以为参数指定一个值。正如前面的图中所提到的一个参数化的提示模块如行程规划和提示如何包含该模块并为其参数例如持续时间提供值如3天。增强值不会进行缓存。参数化提示模块有两个关键用途• 首先当一个提示模块与另一个模块只在某些明确定义的地方有所不同时参数允许用户在运行时提供特定参数来定制模块同时还能享受重用的好处。图2通过行程规划示例说明了这一点这对于模板化提示尤其有用。• 其次参数可以在模式中的提示模块的开头或结尾创建一个“缓冲区”允许用户在提示中添加任意文本段只要这段文本不超过它所替代的参数的令牌长度。4. 效果评估效果评估这里作者主要验证以下三个问题• 1、Prompt Cache 对首次令牌生成时间TTFT延迟和输出质量有何影响 ?• 2、Prompt Cache 内存存储开销如何 ?• 3、哪些应用适合采用提示缓存§5.6。以常规的 KV 缓存作为基线。提示缓存和 KV 缓存除了注意力状态计算环节不同其余推理流程完全相同。通过比较 TTFT 延迟来进行评估因为提示缓存和 KV 缓存在生成首个令牌后的解码延迟相同而 TTFT 延迟衡量的是生成首个令牌所需的时间。3.1 评估环境在两种 CPU 配置上对提示缓存进行评估• 英特尔 i9-13900K搭配 128GB DDR5 RAM速度达 5600 MT/s• AMD Ryzen 9 7950X搭配 128GB DDR4 RAM速度为 3600 MT/s。针对 GPU 基准测试部署了三块 NVIDIA GPU:• 与英特尔 i9-13900K 配对的 RTX 4090• 在 NCSA Delta 上托管的虚拟节点 A40 和 A100它们各自配备了 16 核 AMD EPIC 7763 和 224GB RAM。选用多个开源大型语言模型LLM包括 Llama2、CodeLlama、MPT 和 Falcon。使用 LongBench 套件来评估 TTFT 的改进情况和输出质量的变化。LongBench 涵盖了从 4K 到 10K 上下文长度的精选子样本包含来自 6 个类别、21 个数据集的摘录涉及多文档问答、摘要和代码完成等任务。将 LongBench 数据集中的文档比如维基页面和新闻文章定义为提示模块。把特定任务的指令当作未缓存的用户文本。3.2 基准数据集上的延迟改进3.2.1 GPU推理延迟测试在 GPU 评估中采用了两种内存设置将提示模块存储在 CPU 或 GPU 内存中。黄色条代表从 CPU 内存加载提示模块蓝色条则表示在 GPU 内存中的情况。由于 LongBench 样本的长度相近平均为 5K 令牌所以各数据集呈现出一致的延迟趋势。无论是使用CPU还是GPU内存所有数据集和GPU上的TTFT延迟都显著减少CPU内存下减少1.5至3倍GPU内存下减少5至10倍。使用提示缓存可能实现的延迟减少的最大和最小范围。实际的延迟减少幅度将根据使用内存类型的多少而有所不同。3.2.2 CPU 推理延迟上图展示了 Prompt Cache在Intel和AMD CPU上分别实现了高达70倍和20倍的延迟降低。这种差异可能源于系统内存带宽的不同Intel CPU配备了5600MT/s的DDR5 RAM而AMD CPU则使用了3600MT/s的DDR4 RAM。正如所料对于那些未缓存提示比例较高的数据集例如TriviaQA延迟表现得更为明显。值得注意的是与GPU推理相比CPU推理从Prompt Cache中获得了更显著的性能提升。主要是因为CPU在进行注意力计算时的延迟较大尤其是在处理较长序列时例如与GPU相比其FP16/FP32浮点运算性能较低。Prompt Cache在资源受限的环境中如边缘设备或GPU资源受限的云服务器上对于优化推理性能尤为有效。3.3 Prompt Cache对准确性的影响将Prompt Cache应用于三种不同transformers架构的LLMLlama2、MPT和Falcon。上表展示了准确度基准测试结果Prompt Cache能够维持输出的精确性。采用确定性采样策略即每一步都选取概率最高的令牌确保有无提示缓存的测试结果具有可比性。在所有数据集上使用提示缓存的输出准确度与基准线保持一致。3.4 理解延迟改进理论上Prompt Cache相较于常规KV缓存在TTFT延迟上应展现出平方级的降低。原因是Prompt Cache的内存复制开销随序列长度线性增长而自注意力计算的复杂度却与序列长度呈二次方关系。为验证这一理论对一个包含不同序列长度的合成数据集进行了测试测试中假设所有提示均已缓存。利用Intel i9-13900K CPU和两款GPUNVIDIA RTX 4090和A40搭载Llama2 7B模型对比了提示缓存与常规KV缓存的TTFT延迟。测试结果显示无论是CPU还是GPU使用CPU内存存储提示模块时提示缓存的延迟优势随着序列长度的增加而呈平方级扩大。如上图KV缓存的延迟随序列长度呈二次方增长而提示缓存的内存复制成本则线性增长。表明提示缓存的延迟优势随着序列长度的增加而显著扩大尤其在CPU上更为明显因为CPU在注意力计算上的延迟更高而提示缓存的开销无论是GPU中的主机到设备内存复制还是CPU中的主机到主机内存复制差异并不显著。此外随着模型参数规模的增长KV缓存的计算负担也随之增加。例如从7B模型升级到13B模型在3K令牌长度下延迟增加了220毫秒而提示缓存仅增加了30毫秒。这是因为LLM的复杂度也随着隐藏维度的增加而呈二次方增长。以注意力计算的FLOPS为例其计算公式为6nd^2 4nd用于预填充操作。这表明提示缓存相对于KV缓存的优势随着模型规模的增长而呈二次方扩大。在端到端延迟方面由于提示缓存仅减少TTFT随着生成令牌数量的增加其对完整LLM响应所需时间的影响逐渐减小。例如在RTX 4090上使用Llama 7B模型处理3K上下文时提示缓存将TTFT从900毫秒缩短至90毫秒而令牌生成时间或TTST在KV缓存和提示缓存之间保持一致平均每令牌32毫秒不受令牌长度影响。尽管如此更快的响应时间对于提升用户体验和整体端到端延迟具有积极作用。例如提示缓存将TTFT从900毫秒缩短至90毫秒意味着在同一时间段内可以生成额外25个令牌。此外提示缓存还允许在同一批次内共享注意力状态。根据工作负载特性提示缓存可以通过利用减少的内存占用来实现更大的批次大小从而提高整体吞吐量。例如如果有100个请求每个请求包含2K令牌的提示且所有提示共享相同的1K令牌模块那么提示缓存结合分页注意力等方法可以将内存占用减少50%允许更大的工作批次大小从而提高吞吐量。3.5 内存使用情况提示缓存所需的内存开销与缓存的令牌总数成比例关系。如上表所示在假设采用16位浮点数精度的前提下每个令牌的内存开销。以Falcon 1B这类轻量级模型为例缓存一个包含1K令牌的文档大约需要180MB的内存。若存在数百个提示模块总内存消耗可能达到数十GB这在服务器级GPU的内存容量范围内。然而对于Llama 70B这样的大型模型缓存一个1K长度的模块每个文档将占用高达2.5GB的内存这使得CPU内存成为存储提示模块的唯一可行选择。基于这些考量未来在提示缓存技术的研究中注意力状态的压缩方法仍然是一个值得探索的领域。最后的最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】