KVCMAS: Efficient KV cache Correction for Shared Context in Multi-Agent Systems
Hyesung Jeon, Hyeongju Ha, Seoyoung Lee, Beomseok Kang, Jae-Joon Kim
cs.LG
2026-09-28
KVCMAS用低秩锚点在线修正跨agent的KV缓存偏差并沿工作流链式传递,32K共享上下文、8 QPS下TTFT比不共享快2.0倍,峰值显存比KVComm最多降3.7倍。
多agent系统里,规划、工具调用、批评往往共用一套模型权重,只靠不同的角色prompt分工。新角色不用训练,部署便宜。硬伤是agent各自的前缀会改写同一段共享上下文的KV cache。用户问题、检索结果、工具返回、上游输出都堆在共享段里,内容相同,缓存对不上,每个agent都得把这段重新prefill一遍。
直接拿上一个agent的cache复用,精度会塌:MMLU从不共享的67.54掉到裸复用的36.45。选择性重算只修一部分layer或token。DroidSpeak、CacheBlend、RelayCaching分别按层或token重算。附录在同样预算下测覆盖率,至少一半复用误差落在没重算的位置;MathVista和Video-MME上按偏差或attention选token,大约只清掉20%误差,跟随机选接近。想修干净就得再跑模型。delta修正把目标cache和reference的差估出来直接加上去。GraphFlow一类只对见过的上下文关系有效,新请求对不上,MMLU 36.38,接近裸复用。KVComm用在线锚点池能跟上动态上下文,但base cache和修正按全维度存,8K和32K并发直接OOM。这些delta方法还要在工作流外单独prefill一份无前缀reference;第一个agent的近似修正会写进输出,变成后面所有人的共享上下文。
KVCMAS来自首尔大学ECE,两件事一起做。
跨agent的cache偏差挤在低维里。图2把有效秩定义成保住90%奇异值能量的最小秩,agent间delta低于32,远小于完整特征维。base cache同样低秩,略高一点。每个锚点对base cache和delta做截断SVD,存成L×r和r×D两个因子。注意力仍看全维度KV;匹配和修正用低秩重构。锚点内存从O(V N L D)降到O(V N r(L+D))。Llama-3.1-8B、BF16、4K token段、20个锚点、4个消费agent,全维度锚点状态单这一项大约50 GiB。
第二条是链式修正。第一个agent完整dense prefill,拿到精确cache。后续每条边上,源agent已经物化的共享段cache就是reference,不再另造无前缀缓存。目标cache等于位置对齐后的源cache,加上按相似度加权的低秩delta。匹配不可靠则回退dense prefill,并用精确结果更新锚点。图3显示,相对无前缀reference,链式在各层和A0→A1→A2→A3这条执行序上累计误差都更低。
从agent i到j的共享段,流程是:
默认r=32。agent特有前缀不跨agent共享,只修共享段。
评测复用KVComm的多agent框架(AgentPrune加GPTSwarm):三个任务agent加一个reflection agent。Llama-3.1-8B跑MMLU和GSM8K,Qwen2.5-Coder-7B跑HumanEval,LLaVA-OneVision-7B跑MathVista和Video-MME。LLM目标ρ约0.8,VLM约0.6。精度三次平均,延迟在A100 80GB、1 QPS下测。
| 方法 | MMLU | GSM8K | HumanEval | MathVista | Video-MME |
| NonShared | 67.54 | 85.60 | 86.96 | 55.90 | 53.00 |
| FullShared | 36.45 | 29.42 | 80.75 | 50.20 | 37.25 |
| RelayCaching | 60.68 | 77.94 | 83.23 | 50.50 | 44.92 |
| KVComm | 62.57 | 80.14 | 85.09 | 53.50 | 51.56 |
| KVCMAS | 65.45 | 79.53 | 84.47 | 53.80 | 52.36 |
五个任务里三个在共享方法中最高,GSM8K和HumanEval比KVComm低不到0.7个百分点。相对不共享仍有缺口,GSM8K差6.07点,缺口最大。峰值显存上,GSM8K的KVComm是59.18 GB,KVCMAS是16.10 GB,约3.7倍;MMLU是52.40对16.06。
并发serving用受控四agent轨迹,挂在vLLM、A100上。32K共享token、8 QPS、delta修正ρ=0.8时,p50 TTFT为61.95秒,NonShared为125.89秒,快2.0倍,比次快的GraphFlow低27%。KVComm在8K和32K OOM。把链式换成无前缀reference、其余不动,同一负载下p50和p90 TTFT都高出约34%;MMLU从65.45掉到59.01,Video-MME从52.36掉到50.83。生成token积到6K、8 QPS时,相对NonShared的p50和p90分别快2.3倍和2.4倍。
A6000 48GB单流32K上,KVComm锚点估435.6 GB,KVCMAS约29 GB。秩从16提到32精度还有收益,再往上边际很小,(128,128)会OOM。锚点从10加到20,MMLU 65.45到65.80,Video-MME 52.36到53.15。agent数按2/4/8、轮数按2/4/8往上加,第一次dense prefill被摊销,KVCMAS在对照的共享方法里TTFT一直最低。
这是给同一套权重、不同角色prompt的多agent serving用的,异构模型和LoRA变体不在范围内。共享上下文长、并发高、agent多、轮次多,少付的重复prefill更明显。实现挂在vLLM上,有代码。
相对KVComm,省锚点池显存和那一次额外的reference prefill;相对选择性重算,省对选中token或layer再跑模型的计算。精度没有回到dense prefill。这是7至8B上的渐进系统改进。已经在做KV共享、却被全维度锚点卡住的人可以跟。
正文没有独立的局限节,边界要从实验设置里读。
精度全面低于不共享的dense prefill,GSM8K缺口最大。Video-MME三条可复用边里有一条cache偏差一直很大,全程走dense prefill,ρ卡在约0.65,阈值再松也抬不上去。τ按任务调,MMLU用0.29,Video-MME用0.60,换负载不能直接抄。
只测了7至8B、prompt特化、共享权重。异构模型、adapter、更大模型没做。精度评测平均轨迹大约2K到7K token,32K数字来自受控serving轨迹,不是同一套准确率实验。锚点SVD发生在该hop产出第一个token之后,按定义不计入TTFT,只进端到端延迟和吞吐。GraphFlow对照拿掉了原论文的图调度,只留预构建修正:拿来当完整系统对比并不公平,用来说明预构建修正搞不定动态上下文则够用。