Elastic KV Cache for LLM Serving:A Working Reclamation Mechanism, and Why Chunked Prefill Already Closes the Gap
本文提出并评估了一种在无需修改驱动程序的情况下,在解码阶段动态回收预留内存的弹性 KV cache 机制,最终发现由于预填充延迟对分块大小并不敏感,且内存预留量在张量并行下会自然减少,该方法相比现有的分块预填充策略所带来的性能提升微乎其微。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下有一座图书馆,其中最珍贵的书籍并不存放在书架上,而是由一位正在阅读它们的图书管理员手持着。在人工智能的世界中,特别是在大型语言模型生成文本时,这些“书籍”被称为键值缓存(key-value cache)的数据片段。这些数据对于模型记住它刚刚说过的话以继续写出下一句话至关重要。“图书管理员”是计算机芯片,而“书架”则是其有限的内存。为了让图书馆顺畅运行,系统必须决定为图书管理员当前的阅读任务预留多少空间,以及为新请求留出多少空余空间。如果图书管理员正在阅读一本冗长且复杂的书,他们需要一个巨大的专用工作区。但一旦他们读完这本书并开始写简单的笔记,那个巨大的工作区就会空置,占用原本可以用于其他书籍的空间。
多年来,工程师们一直面临着一个艰难的选择。为了处理最复杂的请求,他们必须在一天开始时预留出一块庞大的、固定的内存储备。这块储备就像是一个 VIP 区,每当系统仅处理简单任务时,它都会保持锁定且空置状态。研究人员提出的问题很简单:能否将这个空置的 VIP 区解锁,并在闲暇时将其空间借给普通书架,然后在复杂的请求到达之前将其重新锁定?如果他们能做到这一点,他们就能在不购买新家具的情况下,在书架上放置更多的书籍。本文描述了构建一种实现这一目标的机制的过程,并提出了一个令人惊讶的发现:虽然该机制运作完美,但它原本旨在解决的问题已不复存在。
研究人员在一种特定类型的计算机芯片上构建了一个精巧的系统来管理这种内存。他们并没有尝试移动数据(因为这会减慢速度),而是将内存视为一个灵活的容器。他们创建了一个虚拟空间,可以同时容纳两套不同的物理数据。其中一套始终存在,而另一套是“弹性”储备,可以在几毫秒内被附加或分离。当系统仅处理简单任务时,他们将弹性储备附加到主池中,瞬间为图书馆提供了更多空间。当复杂的请求到达时,他们会在眨眼之间将储备分离,使内存返回到最初的锁定状态,以便复杂的任务能够顺利运行而不崩溃。工程师们证明,这样做是必要的,因为如果他们试图让储备始终处于解锁状态,系统会在复杂的请求到达时因内存不足而崩溃,无法完成工作。
然而,建造机器只是故事的一半。研究人员随后测试了使这台机器变得必要的内核假设:即使用较小的文本块来处理复杂请求会导致速度极慢,从而迫使操作者使用大块文本并浪费内存。他们设计了一个受控实验,在一个已经在处理许多简单请求的系统中输入长而复杂的提示词。他们对比了在使用小块与大块的情况下,系统开始回答这些长提示词所需的时间。结果令业界感到震惊。两者之间的速度差异几乎微乎殆捷,仅约为 1%。其原因在于结构性因素:复杂任务受限于计算机计算的速度,而非内存的大小。将任务分解成更小的部分并不会让它变慢,它只是将同样的工作量分布到了更多的步骤中。与此同时,简单的任务非常轻量,永远不会挤占复杂任务的空间。
这一发现改变了整个项目的价值。研究人员表明,获取更多内存的最佳方式不是构建一个复杂的弹性系统,而是简单地为复杂任务使用更小的块。这种方法回收的内存比弹性系统所能提供的还要多,而且无需任何额外的工程投入,也不会有崩溃风险。此外,他们发现随着这些人工智能模型变得越来越大,并且需要多块芯片协同工作,浪费的内存量也会急剧减少。在最强大的配置中,曾经被认为是巨大空置空间的“VIP 区”实际上只占总内存的极小部分,这使得回收它的努力变得更加没有意义。
论文最后为这项技术在何时仍可能有用绘制了一张精确的地图。它只会在非常特定且罕见的情况下发挥作用:即模型较小、请求极其漫长,且系统未使用多块芯片来分担负载时。对于当今绝大多数的应用场景,工程师们已经通过简单地改变工作调度方式解决了这个问题。研究人员发布了他们的弹性内存工具作为可重用的软件供他人使用,但他们也明确表示,对于当今重要的工作负载而言,速度与容量之间的差距已经弥合。该机制确实有效,但使用它的机会已经消失了——这在这样一个往往由下一个重大突破的承诺所驱动的领域中,是一个罕见且诚实的结论。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。