面向AI的真实长期记忆:比重算更快更省的5000万token记忆窗口 Real Long-Term Memory for AI: A 50-Million-Token Window That Is Faster and Cheaper Than Recompute
KV状态加密落盘、字节级零重算恢复,5000万token记忆比重算快2.8–4.3倍。
前置知识
KV 缓存(Key-Value Cache)
Transformer 自回归推理时,注意力层会为每个 token 计算 key/value 投影;为避免每生成一个新 token 就对全部前文重算注意力,推理引擎把已算出的 K、V 缓存下来,新 token 只与缓存做注意力。缓存大小与 token 数线性增长,是显存压力与 prefill 计算开销的主要来源。本文把这套缓存状态当作可持久化的数据来存取。
论文的全部操作对象就是 KV 状态:deposit 把模型算出的 KV 写盘,restore 再字节级取回。不理解 KV 缓存是什么,就无法理解零重算(cached_tokens ≈ 块大小)的确切含义。
Prefill 与 TTFT
Prefill 指对输入 prompt 做完整前向、生成 KV 缓存的过程,占长文本请求的大部分算力;TTFT(time-to-first-token)是从发出请求到吐出第一个 token 的时延,是衡量预填充开销的核心服务指标。vLLM 的 cached_tokens 统计命中缓存、无需重算的 token 数。
论文的速度/能耗对比正是「恢复已存 KV」对阵「重新 prefill 同一块文本」,用恢复 TTFT p90(12B 0.284s、31B 0.579s)与 cached_tokens ≈ 16,000 作为零重算的证据。
滑动窗口注意力(Sliding Window Attention)
一种稀疏注意力:每个 token 只与最近 $w$ 个 token 计算注意力,Gemma 4 多数层取 $w \approx 1{,}024$。KV 状态因此只需保存窗口内的部分,每 token 的 KV 字节数($2 \times n_{\text{layers}} \times n_{\text{kv heads}} \times d_{\text{head}} \times \text{bytes}$,再乘以窗口比例)远小于全注意力。本文实测 36.4 KiB/token,而全注意力约 160 KiB/token。
50M token 的 KV 店能压到 1.86 TB(12B)正是依赖 Gemma 4 的滑动窗口;换成全注意力模型同规模约需 8 TB。这是理解实验可行规模与论文适用边界的前提。
vLLM 与 KV-transfer connector
vLLM 是主流 LLM 推理服务框架,内置前缀缓存等机制,并预留 kv-transfer-config 接口允许外部组件接管 KV 的收发。本文的 GalahadConnector 以插件身份挂进 vLLM 0.31.0,在存入/恢复两个钩子上落盘与回填 KV,模型权重与注意力机制本身不变。
被测系统是「vLLM 服务 + galahad-kv 插件」的组合,复现命令(--kv-transfer-config 指定 GalahadConnector、kv_role kv_both、--max-model-len 16640)全部围绕该机制展开。
AES-256-GCM 静态加密
带认证的对称加密:每个块用密钥加密并附加认证标签,读取时若字节被篡改则解密失败。本文采用自定义 MRLNCRY1 格式(含 magic 头),每个组织一把密钥,KV 状态加密存于本地 NVMe,跨重启存活、不做驱逐。
论文区分「长期记忆」与「缓存」的四大论据(持久、私密、字节精确、超越窗口)中,加密持久存储是关键一条;防作弊协议也靠校验 MRLNCRY1 magic 与盘上字节数来防止遥测造假。
RAG 与 CAG 的对比
RAG(检索增强生成)按语义检索文本片段放进上下文窗口,每次请求都要为这些文本重新支付 prefill;CAG(缓存增强生成)预先算好固定文档集的 KV,但文档集必须整体放得进窗口。两者处理的是「文本」,本文恢复的是模型自己的 KV 状态,文本本身永不再读。
论文在 §2 和 §7 反复与 RAG/CAG/MemGPT 划清界限,抓住「恢复状态 vs 重读文本」这一本质差异,才能理解作者为什么坚持称之为长期记忆而非缓存。
研究动机
常规方式服务的语言模型在两处丢信息。第一,Transformer 只能注意上下文窗口内的 token,本文配置下窗口仅约 16k(--max-model-len 16640);一旦对话流或文档流超过窗口,更早的内容对模型彻底不可见——作者要处理的语料长达 50,000,000 token,超出窗口的部分占 99.97%。第二,KV 缓存按请求重建:即使同一段文本早已处理过,下次再发仍要重付全部 prefill,实测对一个从未见过的 16k 块做全量 prefill,Gemma 4 12B 需要 0.760 秒、521 焦耳,31B FP8 需要 1.475 秒、976 焦耳。已有缓解方案各有短板:vLLM 的前缀缓存是临时的且只对共享前缀生效;LMCache、CacheBlend 等 KV 卸载系统以明文存储、每个请求重新暂存,部分还绑定单一架构;RAG 每次请求都要把检索文本重读一遍再付 prefill;CAG 预算好的文档集仍然必须整体塞进窗口。
本文的目标是目标是给被服务的模型加一层真正的「长期记忆」:把模型为每个约 16,000 token 的块算出的 KV 状态持久化到加密的本地 NVMe,之后在任意深度都能字节级恢复、零重算,且 GPU 显存全程恒定。作者刻意用「长期记忆」而非「缓存」命名——存储是持久的、加密的(AES-256-GCM、每组织一把密钥)、字节精确的,并且覆盖窗口外极远的内容。在测量层面,论文要回答三个问题:50M token 规模上恢复是否 100% 零重算?恢复比重算节省多少时间与能耗?模型能否真的从数百万 token 之前的植入事实中给出正确答案?并要求整个实验可在单张 GPU 上被第三方独立复现和检验。
与已有工作不同的是,本文的独特切入点是把「模型算过的 KV 状态」当作一等公民的持久数据,而不是加速机制的副产物。与四类近邻工作的本质区别在于:前缀缓存临时且绑定前缀;KV 卸载系统(LMCache、CacheBlend、CacheGen、CachedAttention、InfiniGen)明文存储、逐请求暂存;RAG 与 MemGPT 操纵的是进入窗口的文本;CAG 受窗口容量约束。作者还与自己先前的工作明确拉开距离:此前 6M token 窗口的报告用的是独立测试架,本文把窗口扩大约 8 倍到 50M、改在 vLLM 下服务、KV 静态加密,并首次引入防作弊评测协议。同时刻意剥离学习式检索,使「KV 复用」这一单变量被隔离测量。
核心方法
被测系统是公开 PyPI 包 galahad-kv==1.31.4,通过 GalahadConnector 插件挂载到 vLLM 0.31.0,只暴露两个操作。存入:connector 把请求的逐块 KV 写入加密磁盘店(MRLNCRY1 格式,AES-256-GCM,每组织一把密钥)后即释放显存——效果是一个移动窗口,任一时刻只有约 16k token 的一个块驻留 VRAM,其余在盘上,因此 VRAM 曲线全程平直。恢复:在之后的请求中把存好的块 KV 嫁接回来,前向计算从该状态继续,等价于模型刚刚算完这一块,块内 token 不再重算。实验语料 50,000,000 token $= 3{,}125 \times 16{,}000$,模型为 Gemma 4 12B(bf16)与 31B(FP8),单张 H100 80GB 加本地 NVMe,温度 0。得益于 Gemma 4 约 $1{,}024$ token 的滑动窗口,实测 KV 脚印仅 36.4 KiB/token(全注意力约 160 KiB/token),50M 店为 1.86 TB 而非约 8 TB。
核心是一次观念转变:KV 状态不是易失的加速缓存,而是模型对内容的「理解本身」,可以像数据库一样持久化、加密、按需取回。恢复在字节层面精确等价于重新计算(logit 级正确性门控由配套的 Taliesin 工作单独验证),因此存一次、之后任意次免费复用。与已有方法的本质区别有三:其一,存储对象是状态而非文本——RAG 把文本放回窗口重读、每次重付 prefill,这里文本永不再读;其二,持久性——不做修剪与驱逐,3,125 块全部保留,跨重启存活,且每组织一把密钥的加密使店可以安全容纳私有材料;其三,工程位置——以 vLLM connector 形式交付,不改模型权重与架构,Gemma 4 的滑动窗口只是被利用而非被引入,任何单卡 ≥24GB 的 NVIDIA GPU 都能运行。
方法步骤详情
流程四阶段。阶段一,构建防污染语料:从 WildChat(40%)、宽松许可源代码(25%)、arXiv(20%)、教育网页(15%)流式汇集 50M 真实 token;摄入前用运行时变异器把人名、日期、金额、邮箱换成随机 nonce,使植入事实只存在于本次运行;再按每 500k token 一条植入共 100 条「金针」记录(4位代码),并在同块混入同格式异码诱饵。阶段二,盲存入:不带任何问题把 3,125 块逐块喂给 vLLM,12B 吞吐 20,839 tok/s、31B 10,700 tok/s,KV 逐块加密落盘(1.86 TB 与 6.25 TB),VRAM 全程平坦。阶段三,物理店审计:每块必须携带 MRLNCRY1 magic,盘上字节数须与 KV 脚印一致,无修剪无驱逐。阶段四,双指标探针:在 0 到 49,488,000 token 间取 100 个深度提问;指标 A 看引擎——cached_tokens $\approx$ 块大小即零重算;指标 B 看模型——是否精确吐出植入代码;能耗取 NVML 计数器扣空闲;阴性对照问块中不存在的记录,正确行为是拒绝。
技术新颖性
技术新颖性有四点。第一,规模与严格性的组合前所未有:50M token、字节级恢复、100/100 零重算、VRAM 恒定,同时首次配套防作弊协议——针对预训练污染(nonce 变异)、查询预知(盲摄入)、掉块(每块一针)、词法捷径(同格式诱饵)、遥测造假(物理店审计)五条作弊路径各设对策,此前长上下文基准鲜有如此设计。第二,测量学贡献:把「引擎性质」(零重算恢复,cached_tokens $\approx 16{,}000$)与「模型性质」(精确吐码回忆)拆成两个独立指标,避免把缓存命中与答对混为一谈。第三,工程形态:以 vLLM KV-transfer 插件交付,可复用现有服务栈;恢复时延与深度无关(12B 低三分之一深度 TTFT 0.193s 到高三分之一 0.274s),说明不是伪装的检索。第四,经济性证据:恢复 0.266s/59J 对重算 0.760s/521J(12B)、0.347s/80J 对 1.475s/976J(31B),且模型越大收益越大,给出「复用收益随模型规模扩展」的量化规律。
实验结果
结果分四组。其一,记忆精确且模型无关:两模型在 0–49,488,000 token 的全部 100 个深度上均为 100/100 零重算恢复(cached_tokens $\approx$ 16k),3,125 块全部在店无驱逐,VRAM 平坦。其二,恢复比重算便宜:12B 恢复中位 0.266s/59J 对重算 0.760s/521J,快 2.8×、省能 8.8×;31B 恢复 0.347s/80J 对 1.475s/976J,快 4.25×、省能 12.3×;深度无关:12B 低到高三分之一深度 TTFT 仅 0.193s→0.274s,31B 0.343s→0.375s,深处块与首块一样快。其三,答案质量由读的模型决定:同一批块上 12B 精确命中 82/100、31B 98/100,幻觉 0,阴性对照 0/20 编造;失误全是误读块内相似行而非记忆缺失。其四,存入是一次性成本:12B 20,839 tok/s(约40分钟)、31B 10,700 tok/s(约78分钟),盘上 1.86 TB 与 6.25 TB,每 token 36.4 与 134 KiB。
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 50M token 流上的 KV 零重算恢复(Gemma 4 12B 与 31B) | 零重算恢复率(cached_tokens ≈ 块大小) | 100/100,覆盖 0–49,488,000 token 全部 100 个深度,两模型相同 | 常规服务无持久 KV:每次请求全量 prefill(恢复率 0,16k 块需 0.760s/521J 或 1.475s/976J) | 所有深度均可零重算恢复,且 VRAM 全程平坦(70,864 MB / 75,111 MB) |
| 恢复 16k 块 vs 重算(Gemma 4 12B bf16) | 时延/能耗中位数 | 0.266 s / 59 J(TTFT p90 0.284 s) | 全量 prefill:0.760 s / 521 J | 2.8× 提速,8.8× 节能 |
| 恢复 16k 块 vs 重算(Gemma 4 31B FP8) | 时延/能耗中位数 | 0.347 s / 80 J(TTFT p90 0.579 s) | 全量 prefill:1.475 s / 976 J | 4.25× 提速,12.3× 节能;模型越大复用收益越大 |
| 深度针回忆(防作弊协议,100 针 + 诱饵 + 阴性对照) | 精确代码命中率 / 幻觉数 / 阴性对照编造数 | 12B 82/100、31B 98/100,幻觉 0,阴性对照 0/20(正确拒绝) | 16k 窗口模型对窗口外植入事实无法回答(只能幻觉或拒答) | 在深达 50M token 处恢复模型可用的事实,且零编造 |
| 常数显存下的长流处理(存入阶段) | 峰值 VRAM 与吞吐 | 12B:70,864 MB 平坦、20,839 tok/s;31B:75,111 MB 平坦、10,700 tok/s | 把 50M token 的 KV 全放显存需约 1.86 TB / 6.25 TB(不可行) | O(1) 移动窗口:单块驻留即可流式处理 50M token |
局限与改进
作者承认的限制:这不是更宽的注意力窗口——任一时刻只驻留一个块,深处内容按需恢复而非同时被注意,已处理 $\neq$ 驻留显存 $\neq$ 已恢复;这是 KV 复用而非学习式检索,按语义选段的 Blaise 模块明确不在本文范围,50M 规模上的组合留待未来;能耗测量受 NVML 计数器分辨率限制,单次探针约 0.3s 已接近分辨率,比值可靠但绝对焦耳数带较宽;存储代价实打实——12B 每 50M token 需 1.86 TB、31B 需 6.25 TB,且必须放在本地 NVMe,网络卷会使时延与能耗数字失效。我补充几点:回忆上限受模型能力约束(12B 只有 82/100),且任务只是「读出一条记录」式单针探针,未测跨块多跳推理或长文档摘要;基线只有同一系统上的全量重算,未与 CPU 内存卸载、KV 量化或 RAG 对比;系统依赖 Galahad 私有 connector 与许可证,存在供应链单点;这些数字都基于 Gemma 4 的滑动窗口架构,换全注意力模型成本结构完全不同。
独立分析的弱点
独立分析五点弱点。第一,单块驻留限制复杂查询:若一个问题需综合散布在多个块里的事实,只能串行「恢复-作答」,时延随涉及块数线性增长,0.266–0.347s 只是单块成本;改进方向是与学习式检索结合做块级调度,或让少数热块LRU 常驻。第二,评测任务偏「检索友好」:单针加诱饵证明了字节精确性,但真实长期记忆需要多跳推理、跨块汇总等组合能力;12B 的 20% 失误全是误读块内相似行,需更难的组合式探针来区分「记忆丢失」与「阅读失误」。第三,基线单一:只与同一 vLLM 全量重算比较,未对比 KV 量化存盘、CPU 内存卸载或 RAG,8.8–12.3 倍的节能幅度可能被更便宜的替代方案部分侵蚀。第四,隐私与信任的悖论:卖点是每组织一把密钥的加密记忆,但 connector 与 libgalahad.so 闭源且需许可证,组织须信任该二进制不外传 KV;应开源参考实现或提供可审计的本地构建。第五,存储伸缩性:31B 每 token 134 KiB 意味着十亿 token 语料约需 125 TB NVMe,磁盘成本随模型尺寸爆炸,盘上 KV 压缩或量化是必要的后续工程。
未来方向
作者明确留下的方向是把 Blaise 学习式检索与本窗口在 50M 规模上结合,构成「按语义选块 + 零重算恢复」的完整长期记忆系统,把本文测量的单变量机制变成端到端能力。基于成果可延伸的工作:多块驻留与代价模型调度,让高频块常驻 VRAM、冷块按需回填;盘上 KV 压缩与量化,把 36.4/134 KiB/token 压低一个数量级,使全注意力模型或十亿 token 级语料在经济上可行;分布式版本用网络卷加预取放宽本地 NVMe 限制,同时保持时延数字可信;把恢复路径进一步优化(常驻热块、CUDA graph 化嫁接)以压低 31B 的 TTFT p90 0.579s;将该记忆层接入 agent 框架,替代 MemGPT 类纯文本记忆,使智能体跨会话累积经验;以及研究「持久 KV 与后续微调的兼容性」——权重更新后旧 KV 是否仍字节等价、是否需要增量重算策略,这在持续学习场景中是绕不开的问题。
复现评估
复现材料相当完整。软件全部公开:pip install galahad-kv==1.31.4 vllm==0.31.0 datasets transformers nvidia-ml-py;需拿到 Gemma 4 权重并在 GPU 主机申请免费 Galahad 许可证,再以 --kv-transfer-config 指定 GalahadConnector、kv_role kv_both 启动 vLLM。四阶段 harness(构建加固语料、盲存入、审计加密店、双指标探针)公开可用,是只依赖 transformers、datasets、urllib 的薄 HTTP 客户端;第三方可替换数据集、模型与针设计,只要遵守 §4 协议。每个报告数字都有原始 artifact 与 SHA-256 清单(附录 B)。硬件门槛友好:任意单卡 ≥24GB NVIDIA GPU 即可,小盘少存几块也能跑通;但完整 50M 实验需 1.86–6.25 TB 本地 NVMe,能耗比值只有在 H100 级硬件上才与论文可比。总体难度中等,主要摩擦是许可证申请与权重门控,温度 0 也降低了复现随机性。
论文图表
两种模型在 0–49,488,000 token 之间 100 个深度探针上的四项指标:KV 零重算恢复均为 100/100;文本精确回忆 12B 82/100、31B 98/100;幻觉代码(吐出块中不存在的代码)均为 0;阴性对照(询问块中不存在的记录)编造率均为 0/20,即两个模型都正确拒绝。
这张表是论文核心主张的直接证据:记忆引擎本身精确且模型无关(100/100 恢复),而答案质量由读的模型决定(82 vs 98),引擎性质与模型性质被干净地分开呈现。
对比两个模型恢复已存块与全量 prefill 未见块的成本:12B 恢复 0.266s/59J 对重算 0.760s/521J(2.8× 提速、8.8× 节能),31B 恢复 0.347s/80J 对 1.475s/976J(4.25×、12.3×);另给出恢复 TTFT p90(0.284s/0.579s)与深度独立性(低到高三分之一深度 TTFT 0.193→0.274s、0.343→0.375s)。
支撑标题主张「更快、更省」的核心数据,并且显示两个重要规律:复用收益随模型尺寸增大,恢复时延与 50M token 内的深度无关。
存入 50M token 的完整开销:12B 吞吐 20,839 tok/s、峰值 VRAM 70,864 MB(全程平坦)、加密店 1.86 TB(3,125 × MRLNCRY1)、每 token 36.4 KiB;31B 吞吐 10,700 tok/s、VRAM 75,111 MB、店 6.25 TB、每 token 134 KiB。
说明复用收益的前提是一次性存入成本与磁盘占用,是评估实际部署性价比(约 40/78 分钟存入、1.86–6.25 TB NVMe)的关键对照数据。