Working Around the Compute Ceiling: Byte-Exact Memory in Galahad Makes LLM Reading a One-Time Cost LLM Reading a One-Time Cost
Sietse Schelpe
cs.CL, cs.AI, cs.IR, cs.LG, cs.PF
2026-09-30
Galahad 给三个推理引擎加了字节级 KV 记忆,重复文本直接加载已算状态:97k token 召回 100/100、每题 0.6 秒 200 焦,12k 截断基线 10/100、8 秒。
LLM 推理服务把每个请求当独立计算。对同一份文档问第十个问题,引擎照样从第一个 token 起把全文重新跑一遍 prefill(生成前把整个 prompt 过一遍模型的阶段)。长 prompt 下,这一步主导首 token 延迟,也吃掉每请求能耗的大头。
标题里的 compute ceiling 来自 Vishal Sikka(Infosys 前 CEO)等人的论证:transformer 每 token 计算量有上界,复杂度超界的任务模型做不了也验不了。Galahad 不抬这个天花板,它问的是天花板下的预算有多少花在重复劳动上。答案不好看:七个真实数据集上,98.7% 的 prompt token 是模型已经读过的文本。vLLM、SGLang 的 prefix cache(公共前缀缓存)只在 GPU 内存里生效,内存一紧就被逐出,重启即失效;LMCache、Mooncake 把它延伸到 CPU 和磁盘,但「昨天读过的文档今天从头再算」仍是常态。客服助手对同一批手册回答几百个问题,coding agent 每步重发同一批仓库文件,算力都花在为同一段文字反复付费上。
Galahad 的主张:推理成本的计量单位应该是新文本,不是总文本。
Galahad 是一个 Linux 共享库,以 KV connector 接 vLLM、HiCache 后端接 SGLang、slot 存取接 llama.cpp,不改权重不改引擎源码。里面两块记忆相互独立:
最关键的设计是 fail-closed:任何记录缺失、损坏或校验不过,引擎就重算那一块,请求照常完成,原则是 serve without memory, never with wrong memory。这不是洁癖,vLLM 的 issue tracker 里报过前缀缓存返回略有偏差的状态、无声改变生成结果的事故,所以 Galahad 把验收标准定成比特级一致。
主实验把 100 条编造事实(假名字加随机数字)藏进 13 篇维基百科文章,共 96,726 token,用 Gemma 4 31B(4-bit)在 RTX A6000 上做改写式召回提问。基线用 12,000 token 窗口,只能看到语料最后 12%:
| 配置 | 答对 | 秒/题 | 焦耳/题 |
| llama.cpp,无 Galahad(截断 12k) | 10/100 | 9.25 | 2,754 |
| llama.cpp,Taliesin | 98/100 | 3.01 | 572 |
| llama.cpp,Taliesin + Blaise | 100/100 | 0.64 | 213 |
| vLLM,Taliesin + Blaise | 100/100 | 0.59 | 200 |
| RAGFlow v0.27.2(调过检索) | 77/100 | – | – |
Taliesin 单独上:每题平均 53,219 个 prompt token,99.5% 来自记忆加载,处理的 token 是截断基线的 5.5 倍,还快 3.1 倍、省 79% 能耗。整份语料只存一次,96 秒、27.8 kJ,13 个问题后能耗回本。
正确性是这篇最硬的部分。Gemma 4 12B 经进程重启、盘上恢复、热加载三条路径后,262,144 个输出 logit 全部比特一致;KV 状态在 A6000 与 RTX 4090 之间互迁,64 个贪心 token 全同;Llama 3.1 70B 等四种架构两次 prefill 字节级相等(SHA-256);Gated DeltaNet 混合架构加张量并行也通过。
七个没见过的数据集(工单、客服日志、乱码 PDF、SWE-bench Lite、The Stack、AgentBench、WebArena,349 题)上,Taliesin 单独答对 94–95%,加 Blaise 是 91–92%,每题快 3–10 倍。服务端:H100 跑 Qwen3-30B-A3B,16 会话并发 8,吞吐从 2.643 升到 3.424 turns/s(+29.6%);故意让三分之一加载失败,仍有 2.716,高于基线。TTFT(首 token 延迟)在七种 GPU 上全部下降,RTX PRO 4500 上快 2.91 倍。vLLM 下 30/30 个模型能存能载;284B 的 DeepSeek-V4-Flash 双 H200 上 98/100,每题 0.133 秒、143 焦。
磁盘是真正的账单:这份语料占 17.1–17.2 GB(SGLang 要 39.0 GB)。换来的是显存平坦,块流式进出、用完即弃:5.97M token 语料 5/5 探测命中,访问 0.6 秒内,显存不到 25 GB。
对一切反复回到同一批文档的负载(客服、代码、法务、agent),每请求成本从总文本量降到新文本量,且这个下降靠精确复用换来,不靠近似压缩。它也改了模型选型:带精确记忆的小模型能回答本来要超长上下文模型才答得了的问题,而长上下文模型用得并不均匀。接入是三个运行时一个共享库;fail-closed 让最坏情况退回今天的无记忆推理,比「更快但偶尔错」的系统好上线。
冷水照泼:单作者、公司产品、非商业免费 beta、专利待批,全部实验由作者在租用 GPU 上完成,没有第三方复现。
论文自己承认的:Blaise 的选择方法、存储格式、安全设计都因专利未披露,可复现性受限;乱码 PDF 集 50 题有 9 题的答案在上游文本抽取阶段就丢了,记忆层救不回来;Blaise 是在召回测试上开发出来的,没见过的数据上它把正确率从 94–95% 拉低到 91–92%,挑漏了就没有任何模型能补救。
读下来另有几处站不住。表格里 vLLM 和 SGLang 的 Taliesin-only 行(15.56 秒、22.02 秒)比无 Galahad 基线还慢,论文只以「旧版后端,当上界看」带过,说明 KV 加载路径在部分引擎上还不成熟。30/30 的模型覆盖只是存、载、命中的遥测,不是正确率。比特级核验集中在 12B/31B 量级和较短 prompt,284B 只给了召回分数。约 17 GB/97k token 的磁盘占用随语料和模型规模走,论文只给了可配置的磁盘预算,没算大规模部署的账。