arXiv'26 | Cross-Model KV Transfer:小模型算好的 KV Cache,大模型直接接着用
arXiv’26 | Cross-Model KV Transfer:小模型算好的 KV Cache,大模型直接接着用
原文:Cross-Model KV Cache Transfer in LLM Families: A Closed-Form Linear Mapping for Prefill Reuse
1. 前言:先把背景交代清楚
你有没有想过这样一个问题:同一个对话里,为什么从小模型切换到大模型,前面聊过的内容要整个重新算一遍?
现在的线上系统越来越离不开”模型家族”这个概念:Qwen3 有 4B/8B/14B/32B 一整排,Llama 3.1 有 8B/70B。于是很多玩法应运而生——级联调度(简单问题走小模型、难题升级到大模型)、会话中途换模型(前几轮便宜模型顶着,用户开始问硬核问题了再切大模型)。这些玩法有一个共同的隐形税:每次切换,接收方模型都要把累积的上下文从头 prefill 一遍。
而 prefill 的产出物是什么?就是 KV Cache。所以这个问题可以抽象得非常干净:能不能把 A 模型算好的 KV Cache,直接变换成 B 模型能用的 KV Cache?
方向是双向都有用的:小→大是质量升级(升级后不用重算),大→小是成本降级(长上下文阶段切回小模型)。今天就聊这篇 arXiv 2608.03893,它给了一个相当清爽的答案:同一家族的两个模型之间,KV Cache 近似差一个线性映射——而线性映射有闭式解,不需要训练。
在 Qwen3 14B→32B 上,转换后的 KV 直接给 32B 用,五个 benchmark 平均保住 97.6% 的准确率;32K token 的上下文,重新 prefill 要 6975ms,KV 转换只要 277.6ms,快 25 倍。
先说它是站在哪些工作上的。我之前写过两篇 KV 复用的文章:《KVCOMM:让多 Agent 系统的 KV Cache 真正通起来》讲的是同一个模型内部,多个 Agent 共享相同前缀的 KV,省掉重复 prefill,TTFT 砍掉 7.8 倍;《SemShareKV》更进一步,用 LSH 做语义级的 KV 共享——不是前缀相同才能复用,意思相近的段落也能共享。这两篇的共同前提都是”同一个模型“,而这篇 Cross-Model KV Transfer 解决的正是最后一块拼图:跨模型的 KV 空间对齐。
2. 关键观察:跨模型的 KV 有线性结构
这个方法能成立,全靠一个实证观察:同一家族里,两个模型的 KV Cache 之间存在显著的线性关系。
具体做法:在 Qwen3 14B→32B 上,把源模型的(去掉 RoPE 的)key/value 作为自变量、目标模型的作为因变量做回归拟合,会发现:
- 单个源层就能解释目标 key 方差的 56%、value 的 32%;
- 用贪心前向选择(greedy forward selection)挑出最相关的多个源层后,解释度升到 key 79%、value 65%;
- 源层数 k 从 1 加到 4 收益最大,k=6 时 R² 已经到”全层拟合”的 92.3%;
- key 比 value 好预测(R² 高约 0.2),而且 RoPE 会污染拟合——把位置编码剥掉再拟合,”哪几层源最相关”的对角结构立刻清晰起来。

这个观察我想多念叨两句:同一家族的模型本来就是同一份数据、相近的配方练出来的,中间层学到的表征高度同构不奇怪——但把它量化到”一个 per-head 线性映射就能搬家 97% 的信息”,还是很提气的。它意味着家族内模型的 KV 空间不是各自为政的黑箱,而是一组可以互相线性翻译的坐标系。
3. 方法:每头一个闭式 Ridge,三件事拼起来
整套 mapper 是梯度免费的,三个组件:
(1)Per-head Ridge 回归。对目标模型的每个 (layer, head),K 和 V 各学一个独立的线性映射,Tikhonov 正则 λ=0.01,直接闭式解。没有反向传播,没有训练循环。
(2)跨层源选择。不是拿同层对同层,而是给每个目标层挑出”最有预测力”的 top-k 个源层(按 head 平均 R² 排序),把这些层的 KV 拼起来做回归。消融里这是贡献最大的组件。
(3)Content-space(RoPE)因式分解。源 key 先剥掉自己的 RoPE,在无位置空间里做线性映射,再套上目标模型的 RoPE:
\[\hat{K}_t = (K_s R_{\Theta_s}^{-1} W_K + b_K)\, R_{\Theta_t}\]这一步让映射与上下文长度、RoPE 配置解耦——校准时用短序列,推理时可以套在长上下文上。value 本身不编码位置,直接映射。
校准开销:500 条 FineWeb-Edu 序列(各 1024 token),每对模型在一个 8×H100 节点上拟合 47–87 分钟,一次拟合终身受用。适用范围说清楚:同家族、KV head 数和 head dim 匹配、dense full attention 的模型对——GQA 结构不同或 MLA 这种 latent 压缩的还不行。

4. 效果:能保住多少?能省多少?
4.1 保真度(Table 1,目标模型 standalone 准确率的百分比)
| 迁移方向 | k | 平均保真 | 备注 |
|---|---|---|---|
| Qwen3 14B→32B | 8 | 97.6% | HellaSwag 甚至 101.0% |
| Qwen3 8B→32B | 12 | 87.5% | GSM8K 掉到 68.8% |
| Llama 3.1 8B→70B | 20 | 72.8% | GSM8K 只有 18.2% |
| Ministral 3 3B→8B | all | 76.2% | |
| Ministral 3 3B→14B | 20 | 44.2% | 基本不可用 |
| Ministral 3 8B→14B | 12 | 41.6% | 基本不可用 |

规律很清楚:同代、尺寸相近的家族成员之间效果最好(Qwen3 14B→32B 就是甜点),跨得越远越崩。这个边界本身就有工程价值——级联调度系统可以据此决定哪几档之间值得开 KV 转移。
4.2 延迟(Table 5)
Qwen3 14B↔32B、32K token:重新 prefill 6975ms vs mapper 277.6ms = 25×(小→大);大→小是 2952.7ms vs 427.1ms = 7×。整个 64–32K 区间、七个迁移对、70 个测试格里 mapper 全部更快,范围 2.7×–25.1×。

4.3 多轮对话会不会漂?
CoQA 十轮多轮 handoff(14B↔32B 交替):小→大的差距从第 1 轮到第 10 轮只扩大 1.7 个百分点,大→小每轮线性漂移 0.33pp——十轮之内不会级联崩坏,这对”会话中途换模型”是关键的安全垫。
4.4 闭式解不够的地方,MLP 来补
一个很诚实的结果:ridge 在它擅长的对上和 MLP 打平(97.6% vs 97.3%),但在失败的对上 MLP 能救回来很多(Ministral 3B→14B:68.0%→92.3%,+24.3pp)。更妙的是论文的归因:决定保真度的不是误差大小,而是误差落在哪个子空间——MLP 的增益恰恰来自把残差从 attention 敏感的方向上挪开。attention 输出的 cosine 相似度与最终保真度的相关性(r=+0.57)远好于校准 R²(r=−0.20),这个”预测器”本身就是个有用的小贡献。
5. 我的 Take
KV Cache 复用这条线,从”同模型同前缀”(prefix caching)→”同模型语义共享”(SemShareKV)→”多 Agent 共享”(KVCOMM),现在补上了”跨模型搬运”这最后一块。工程上它服务的场景非常具体:家族内级联 + 会话中途换模型,而且 25× 的 prefill 节省是真金白银的 TTFT。
限制也摆得明明白白:只适用于 dense attention 家族对、跨代/压缩比大的对会崩。但”闭式解 + 一次性校准”这个形态我觉得是对的——它把跨模型 KV 复用从”研究问题”压成了”部署时的一次性成本”。哪天主流推理框架里出现 --kv-transfer-adapter 这种参数,我不会意外。
如果这篇文章涉及的 KV Cache、LLM 推理优化你想系统深入,可以看看我之前出版的《动手学AutoML:从 NAS 到大语言模型优化实战》,书里有专门一章讲 LLM 推理效率与 KV Cache 优化,和本文的 prefill 复用是同一套工程背景。
