英特尔推 KV Cache 分层卸载与硬件压缩方案
Agent 长任务把 KV Cache 推上台面:英特尔用分层卸载加 QAT 硬件压缩,腾出显存服务更多并发请求。
Agent 任务动辄跑几十轮,KV Cache——推理中缓存的注意力 Key/Value 中间结果,用来免去重复计算历史 Token——越积越厚,显存装不下就得重算 Prefill、拖慢首 Token 延迟。英特尔把缓存分层卸载到 CPU 内存与 SSD,并用 QAT 专用硬件压缩,重排存储格式后可省 20%–30% 空间。
正文摘录
把记忆交给 CPU,大模型会变快 一个 Coding Agent 改跨十几个文件的 bug,需要反复读代码、查资料、跑测试。前几轮交互可能还很顺畅,但任务继续跑下去,系统要处理的历史信息也会越积越多。 当成千上万个 Agent 同时这样干活,运营方就可能遇到一个头疼的问题:服务器还在跑,能接住的并发却越来越吃紧,有些请求连吐出第一个 Token 都要等上好一会儿。 因为大模型每生成一个新的 Token,都还要继续用到前文的信息。为了不用每次从头计算,系统会把前面已经算好的中间结果保存起来;会话越聊越长,这份记忆自然也就越堆越厚。 一旦显存装不下,部分缓存被清走,等 Agent 下一轮又需要这些历史信息时,就可能重新做一遍 Prefill。前面明明已经算过的东西,又得花 GPU 时间再算一次。 尤其是到了 Agent 时代,AI 很少干一问一答的事儿,更多是那种反复需要思考、规划和行动的任务,期间会不断积累会话历史、检索证据、工具结果和中间状态等等。 于是乎,一个过去藏在大模型推理内部、普通用户几乎感知不到的东西,就这样被推到了台面儿上——KV Cache。 它的特点,说起来就一个字:大。但运营方又不能为了省空间,任由已经算过的内容反复占用 GPU 重算。所以,长上下文推理要算的这笔账,也就从算力延伸到了存储、搬运和复用。 对于采用因果自注意力的 Transformer 模型来说,前面处理过的 Token,会在注意力层中留下对应的 Key 和 Value。模型生成后续 Token 时,还能继续使用这些结果。推理系统把它们缓存起来,就有了 KV Cache。 你可以把它理解成模型读书时做的笔记。后面再遇到需要联系上文的地方,模型可以调用笔记,省去对已有 Token 的重复计算。 所以,我们这里说的记忆,指的是 推理过程中留下的中间状态,模型的权重并没有因此发生变化。