KVMem 长上下文内存管理原理

24GB 的显卡,上下文却跑到了 512K。不是显存变多了,是把"全部历史驻留显存"这件事给改了。

问题:显存墙

跑长上下文,最直观的墙就是显存。模型权重放进去之后,上下文越长,KV cache 越大,最后总会撞到"显存不够"的天花板。

传统 Full-KV 的做法是:整段历史的 KV 全部长期待在 GPU 里。逻辑上下文能多大,完全由显存容量决定。

KVMem 的思路

KVMem 不要求所有历史 KV 都常驻 GPU。它的核心逻辑是:

这样逻辑上下文可以远远超过显存容量本身能承载的范围。它解决的问题不是"让模型变快",而是**"用有限的显存,维持远超显存容量的上下文"**。

为什么对 24G 显卡特别有吸引力

7900XTX 算力猛、带宽高,但只有 24GB 显存——"威猛但显存略短"。对这张卡来说,KVMem 方向的价值远大于对 48G/80G 显存的卡:它把显存短板直接绕过去了。

7900XTX 单卡实测(KVMem × daniel-mtp 组合)

把负责快的 daniel-mtp 和负责大的 KVMem 放到一起,单张 24GB 卡的成绩:

Context Prefill Decode
64K 774 t/s 28.0 t/s
128K 724 t/s 27.8 t/s
256K 706 t/s 27.9 t/s
512K 696 t/s 27.9 t/s

注意看:从 64K 到 512K,decode 几乎不掉速(28 → 27.9)。传统 Full-KV 在这个跨度上 decode 会明显衰减,因为 KV 越来越大、越来越挤。KVMem 把工作集控制在有限大小,所以 decode 基本不受上下文长度影响——这才是它的真正价值。

关键参数

--kvmem
--kvmem-budget 32768
--kvmem-gen-reserve 16384
--kvmem-block-tokens 128
--kvmem-query-policy user

适合谁