Not All Tokens Are Worth Caching: Learning Semantic-Aware Eviction for LLM Prefix Caches
本文介绍了 SAECache,这是一种语义自适应前缀缓存驱逐策略,它通过多队列架构和在线学习利用不同 token 类型的不同复用价值,在显著改善大语言模型服务效率的同时消除了对人工参数调优的需求。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你经营着一家非常繁忙的高端咖啡店(即大型语言模型或LLM),每天服务数百万顾客。为了快速制作咖啡,你有一个特殊的“记忆货架”(即GPU 显存),用于存放已启动订单的预制原料和指令。这被称为前缀缓存(Prefix Caching)。
如果新顾客点了一杯拿铁,其内容与之前的订单 90% 相同,你就不需要重新研磨咖啡豆或加热新牛奶;只需从货架上取出预制基底即可。这使得第一口咖啡(即首个 Token)几乎瞬间呈现。
然而,你的货架非常狭小。你无法永远保留每一个预制基底。最终,你必须丢弃一些物品以腾出空间给新订单。这就是淘汰策略(Eviction Policy)。
问题所在:“一刀切”的错误
长期以来,咖啡店经理们使用一条简单的规则:“最先丢弃最旧的物品。”(即LRU策略)。
该论文指出这是一个糟糕的想法,因为货架上的物品并非同等珍贵。
- 系统提示(System Prompt): 想象一份“标准菜单”,每位顾客都能看到。它永不改变。由于每个人都会点它,因此它极具价值。
- 思维链(Chain-of-Thought): 想象一位顾客关于为何想要一杯拿铁的杂乱内心独白。这仅对那一个人和那一刻有用。它对下一位顾客几乎毫无用处。
旧规则将“标准菜单”和“杂乱独白”完全等同对待。如果独白比菜单稍新一点,旧规则就会为了腾出空间给独白而丢弃菜单。这是一场灾难,因为下一位顾客会立即需要菜单,而独白对他们毫无用处。
解决方案:SAECache(智能经理)
作者创建了一个名为SAECache的新系统。将其想象为一位智能经理,他不仅查看物品上次被触碰的时间,还查看物品本身是什么。
以下是其工作原理,使用简单的类比:
1. 四个专用 bins(多队列架构)
SAECache 不再使用一个大货架,而是将货架组织为四个不同的 bins,每个 bin 都有各自的规则:
- “垃圾”Bin: 存放几乎从不复用的物品(如杂乱的独白或饮品的最后步骤)。这些会最先被丢弃。
- “模板”Bin: 存放标准指令和系统提示(如菜单)。由于这些被频繁复用,因此会被非常小心地保留。
- “聊天”Bin: 存放人们来回对话的会话。
- “代理”Bin: 存放 AI 正在执行工作的复杂任务(如编程或使用工具)。
2. “价值评分”(语义感知加权)
经理不只是猜测哪个 bin 重要。它会学习!
- 如果经理丢弃了一个“系统提示”,随后立即又有人请求它,系统就会学到:“哎呀!我丢弃了有价值的东西。下次我应该给系统提示更高的评分。”
- 如果它丢弃了一个“思维链”而无人再请求,它就会学到:“干得好!那是垃圾。我会继续给它低评分。”
这一切都是自动发生的,就像经理根据顾客实际购买的东西调整货架,而无需人类告知该做什么。
3. “时间机器”(自适应计时)
系统还会学习人们回来的时间。
- 聊天会话可能有很长的停顿(就像顾客喝咖啡休息)。
- 代理会话可能非常快速且急促。
系统会学习每种类型会话的特定“心跳”。它知道,如果一个聊天会话 10 分钟未返回,可能已永远消失。但如果一个代理会话 10 秒未返回,可能只是在思考。它会实时调整淘汰规则,以匹配交通的节奏。
结果:更快的咖啡,更少的浪费
该论文将这位新经理与旧的“最先丢弃最旧”规则以及其他智能但僵化的系统进行了测试。
- 速度: 在繁忙的混合环境中,新系统使第一口咖啡的出现速度提高了 1.4 到 2.7 倍。
- 适应性: 当顾客类型发生变化时(例如,如果店铺突然从聊天者变为更多单次订单顾客),旧系统会崩溃。而新系统能立即适应。
- 效率: 通过不囤积垃圾(如杂乱的独白)并安全保留有价值的东西(如菜单),它节省了海量的“浪费”显存。
总结
简而言之,该论文指出:不要将所有内存块同等对待。 仅仅因为两件事在同一时间被触碰,并不意味着它们同样有用。通过教会计算机理解数据的含义(这是菜单?这是笑话?这是工具?)并让其从自身的实时错误中学习,我们可以使 AI 更快、更高效。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。