详细内容或原文请订阅后点击阅览
预填充一次,扇出:多代理 LLM 管道的 KV 快照共享
停止重新计算相同的上下文。了解如何使用 copy-on-fork KV 快照构建 C++ 运行时,以消除多代理管道中冗余的 LLM 预填充。帖子“预填充一次,扇出:多代理 LLM 管道的 KV 快照共享”首先出现在《走向数据科学》上。
来源:走向数据科学幽默但真实的 SwarmKV 之旅 — KV 快照扇出、fork 主机缓冲区复制,以及如何通过对 llama.cpp 的温和处理使双代理分析管道速度加快约 1.95 倍(第二个分支的激活延迟速度加快 52 倍)。
。每个部分都从代理法学硕士管道中删除了一种冗余工作。第 1 部分(本文)消除了多余的预填充。第 2 部分解决冗余等待问题 — 50 个微代理如何通过时间切片共享一个 GPU。第 3 部分使用自定义 CUDA Top-K 内核在 GPU 上保留 RAG 检索。第 4 部分在切换过程中保持代理状态,以便下一个代理永远不会出现冷启动问题。
要点
问题:当多个代理读取同一份文档时,默认的服务堆栈会使每个代理重新运行完全相同的预填充。多余的密集注意力传递纯粹是浪费。
修复:运行一次预填充,将 KV 缓存序列化到主机缓冲区,对每个分支进行 memcpy,并在解码之前恢复它。 “计算一次,扇出。”
收据:在使用了 7 年的 GTX 1080 上,双代理管道的端到端速度提高了 48.69%(约 1.95 倍),第二个代理的激活延迟下降了 98.09%(约 52 倍),消除了 8,685 毫秒的冗余计算。
关键点:这不是一个新算法。这是系统工程,与 LTE 以来 5G 蜂窝塔每 80 毫秒做出一次“广播共享状态一次”的决策相同。
Github 仓库:https://github.com/AnubhabBanerjee/swarmkv
(在我们开始之前先坦白一下:我是从 5G/6G RAN 工程背景开始了解这一点的。事实证明,向许多下游消费者分散共享计算与自 LTE 广播 SIB1 以来蜂窝塔每 80 毫秒所做的事情惊人地接近。下面有一个完整的章节 - 第 8 节 - 但这也是我首先写这篇文章的原因。)
架构心智模型——阅读时保持打开状态。
下面的所有内容都只是对该行的一部分的注释。
