音乐
暂未播放
跨模型 KV 缓存转移(Cross-Model KV Transfer):闭式线性映射与 Prefill 复用

背景:模型家族切换与 Prefill 的重税#
生产环境中的大语言模型(Large Language Model, LLM)服务正在向”模型家族”(model family)演进:同一家公司发布同一架构、多个尺寸的模型,例如 Qwen3 的 4B/8B/14B/32B、Llama 3.1 的 8B/70B、Ministral 3 的 3B/8B/14B。家族成员共享核心架构选择(tokenizer、注意力类型、训练数据),但层数、隐藏维度、训练配方随规模而不同。
围绕模型家族,业界发展出三种很自然的调度玩法:
- 成本-质量级联(cost-quality cascading):简单请求走小模型省钱,检测到难题时升级到大模型;
- 会话中途切换(mid-conversation switching):对话前几轮用便宜模型顶着,用户开始问硬核问题后再切到更强模型;
- 家族内路由(routing):一个路由器(router)在家族成员之间动态选择模型。
这三种玩法有一个共同的隐形税:每次切换,接收方模型都必须把累积的上下文从头做一遍预填充(prefill)。prefill 是把整段 prompt 并行前向计算一遍、产出 KV 缓存(Key-Value Cache)和第一个 token 的阶段,其成本随模型参数规模和 prompt 长度线性增长。长对话场景中上下文可能累积到数万 token,切换一次模型,首 token 延迟(time-to-first-token, TTFT)直接多出数秒。
一个常被忽略的事实是:prefill 的计算产出物本质上就是 KV 缓存。“重新 prefill”和”重新算一遍 KV 缓存”是同一件事。前缀缓存(prefix caching)只能在单个模型内部复用 KV——同模型、同前缀的请求之间共享;换一个模型,此前所有计算全部作废。
这就引出一个干净的问题:A 模型算好的 KV 缓存,能不能直接变换成 B 模型期望的格式,让 B 跳过 prefill 直接解码? 这个需求是双向的:小模型 → 大模型是质量升级(升级后不用重算累积上下文),大模型 → 小模型是成本降级(长上下文阶段切回小模型以降低逐 token 解码成本)。
NVIDIA 团队(Taekyung Heo、Ritchie Zhao、Bita Darvish Rouhani 等人)于 2026 年 8 月 4 日将题为《Cross-Model KV Cache Transfer in LLM Families: A Closed-Form Linear Mapping for Prefill Reuse》的论文发布在 arXiv 上(preprint),正是解决这个问题。论文的核心结论出人意料地简单:同一家族的两个模型之间,KV 缓存近似相差一个线性映射;而线性映射有闭式解,只需要在少量校准数据上解一次岭回归,完全不需要梯度训练。
问题形式化与”匹配 KV”的概念#
先给出论文的符号体系。设源模型 S 有 Ls 层,目标模型 T 有 Lt 层,两者都使用分组查询注意力(Grouped-Query Attention, GQA),KV 头数分别为 nkvs、nkvt,每头维度分别为 dhs、dht。对长度为 T 的输入序列 x=(x1,…,xT),源模型第 l 层第 h 个 KV 头产出 keys 和 values:
Ksl,h,Vsl,h∈RT×dhs源模型的完整 KV 缓存记为 CS,目标模型的记为 CT。由于家族内共享 tokenizer,同一序列在两个模型中的长度相同。
论文把研究对象限定在一类特殊的转移对上:匹配 KV 对(matched-KV pair)——源与目标的 KV 头数相等(nkvs=nkvt)、每头维度相等(dhs=dht),即使层数 Ls=Lt、参数量差好几倍。本文研究的三对家族全部满足这个条件(Qwen3 的 8 头 × 128 维、Llama 3.1 的 8 头 × 128 维、Ministral 3 的 8 头 × 128 维)。匹配 KV 意味着源与目标在同一层同一头之间可以逐分量对齐,这是后面线性拟合能成立的结构前提。
任务是找一个映射 f:CS→C^T,使得目标模型用 C^T 代替自己的 CT 解码时,下游任务输出尽量不变:
mτ(T(x;C^T))≈mτ(T(x;CT))其中 τ 是下游任务,mτ 是该任务的评测指标。论文把 f 分解为每个目标(层,头)各自的 key 映射 fKl,h 和 value 映射 fVl,h。注意论文用目标模型的下游准确率来度量迁移质量,而不是用重建误差——这是全文最关键的评测立场,后面会看到它带来了怎样的结论。

(图源:论文 Figure 1,NVIDIA, 2026)
前人方法的四个短板#
跨模型 KV 复用此前已有若干工作,论文用四个判据横向对比(见论文附录 A 的 Table 6):
| 方法 | 无梯度 | 跨规模 | 传输 KV 值 | 闭式解 |
|---|---|---|---|---|
| C2C(Cache-to-Cache, ICLR 2026) | ✗ | ✓ | ✓ | ✗ |
| LatentAlign(K-V 缓存对齐, arXiv 2026) | ✗ | ✓ | ✓ | ✗ |
| IAM(注意力模式映射, ACL 2025) | ✓ | ✓ | ✗ | ✗ |
| DroidSpeak(NSDI 2026) | ✓ | ✗ | ✓ | ✗ |
| 本文方法 | ✓ | ✓ | ✓ | ✓ |
逐一说明:
- C2C(Cache-to-Cache)为每个模型对训练一个神经融合器(neural fuser),把两个模型的 KV 融合。它需要逐对做梯度训练,成本高、泛化差。
- LatentAlign(Latent space communication via K-V cache alignment)为每个模型学习一个适配器(adapter),把各自 KV 投射到一个共享的潜空间。同样需要训练。
- IAM(Efficient inference through attention mapping)不搬运 KV 值,而是把小模型的注意力模式(attention pattern)代入大模型。它确实无梯度,但传的是模式不是缓存,复用程度有限。
- DroidSpeak(KV cache sharing across fine-tuned model variants)只在架构完全相同的微调变体之间共享 KV(比如同一个 base 模型和它的 SFT 版本),不支持跨规模迁移,8B → 70B 这种不行。
“无梯度”这个判据的重要性在于部署形态:一个 P 模型的家族有 P(P−1) 个有向转移对,如果每对都要训练一个网络,这个方法只能停留在论文演示层面;而如果映射是闭式解,每对只需要”跑一次最小二乘”级别的拟合,部署成本完全不同量级。
除了这四类,还有三条正交的研究线与本文可组合:模型内部的跨层 KV 复用(如 CLA、xKV,挖掘同一模型各层表征的冗余)、prefill 加速(如 Speculative Prefill、SwiftKV),以及跨模型线性表征对齐(如 Platonic Representation Hypothesis 系列工作)。它们各自的机制不同,与本文的映射器可以叠加使用。
核心观察:跨模型 KV 存在显著的线性结构#
整个方法能成立,压在一个实证观察上:同一家族内两个模型的 KV 缓存之间存在显著线性关系。论文先不做任何复杂映射器,而是用最简单的单源层线性回归去探测这个结构。
探测方法如下。对缓存类型 C∈{Krope,Kstripped,V}(Krope 是模型实际使用的带旋转位置编码的 keys,Kstripped 是剥掉位置旋转后的 keys,V 是 values),对每个”源层 l′、目标层 l、头 h“三元组,在 token 级别拟合一个普通最小二乘回归(Ordinary Least Squares, OLS):用源模型该层该头的每个 token 特征向量 Csl′,h∈Rdhs 预测目标模型对应位置的 Ctl,h∈Rdht:
C^tl,h=Csl′,hW+b,W∈Rdhs×dht,b∈Rdht用决策系数(coefficient of determination, R2,即方差解释率)度量拟合质量,再对 nkvt 个目标头取平均,得到每个(源层,目标层)对的 head 平均 R2,画成热力图。

(图源:论文 Figure 2,Qwen3 家族)
热力图揭示了四个定性规律:
- 线性拟合度很高:单层线性回归就能解释目标 KV 方差的大部分,最可预测的目标层上,Qwen3 14B→32B 的 Kstripped 单格峰值 R2=0.81,较弱的 8B→32B 也有 0.65。对角线附近的单元显著高于随机水平。
- 越相近的模型,对角线越清晰:架构与深度差距越大,线性结构越弥散。
- RoPE 污染拟合:剥掉 RoPE 之后对角线显著变锐利,说明位置编码和内容耦合会干扰线性关系——这直接催生了映射器的第三个组件(RoPE 因式分解)。
- K 比 V 更可预测:两者 head 平均 R2 通常差约 0.2。直觉是:key 承载的主要是”检索信息”(这个 token 应该被谁注意到),在同族模型里检索结构高度保守;value 承载的是”内容信息”,模型规模变大后内容表征会重新组织,漂移更大。
定量地说,在 Qwen3 14B→32B 上,单个源层平均解释目标 keys 的 56% 方差、values 的 32% 方差;把多个源层拼起来后上升到 79%(K)和 65%(V)。
需要多少个源层?#
单源层探测只回答”有没有线性结构”,还要回答”一个目标层需要从源模型的几层取信息”。论文用贪心前向选择(greedy forward selection)回答:从 R2 最高的单个源层起步,每轮加入让联合 R2 提升最大的下一个源层,画出 k=1 到 k= 全部源层的曲线。

(图源:论文附录 B Figure 5)
结论非常集中:收益集中在 k=1→4,k=6 就达到全层 R2 的 92.3%(K)/ 87.7%(V),之后边际递减。在 Qwen3 14B→32B 上,k=1 只达到 k= 全部时 R2 的 66%(Kstripped)和 42%(V)。也就是说,互补信息分布在不同源层之间,单一源层远不够用,但也没有必要用全部源层。
为什么同族模型的 KV 会有这种线性结构?论文没有给出理论证明,但直觉是清楚的:家族模型由同一份数据、相近的 tokenizer、相近的训练配方练成,中间层学到的特征空间高度同构——尤其 key 这种低频检索结构,几乎是”家族指纹”级别的保守量。把这种结构量化成”一个 per-head 线性映射能搬走 97% 的信息”,本身就是有价值的实证贡献。
映射器设计:per-head 闭式岭回归#
有了线性结构的证据,映射器的形态就确定了。对每个目标(层 l,头 h),训练一个独立的线性映射(K 和 V 各一个),三者合一构成完整方案:
- 逐头岭回归(per-head ridge regression)——闭式解、无梯度;
- 跨层源选择(cross-layer source selection)——每个目标层从 top-k 个最有预测力的源层取输入;
- RoPE 因式分解(content-space mapping)——在无位置空间里做映射,让拟合与上下文长度解耦。

(图源:论文 Figure 3)
组件一:逐头岭回归#
源与目标在层数、头维度上可能不同(匹配 KV 保证头数与头维度相同,但层数不同),所以映射按目标(层,头)逐对拟合:
K^tl,h=XKlWKl,h+bKl,h,V^tl,h=XVlWVl,h+bVl,h其中 XKl 是把 k 个被选中源层(见组件二)的 key 特征拼接得到的矩阵,WKl,h∈R(k⋅nkvs⋅dhs)×dht 是权重矩阵。
拟合过程:把 N 个校准 token 堆成设计矩阵 X∈RN×(knkvsdhs) 和响应矩阵 Y∈RN×dht,使用带 Tikhonov 正则的岭回归(ridge regression),闭式解为:
W∗=(X⊤X+λI)−1X⊤Y这里有两个”为什么”值得讲透。
为什么用 ridge 而不是纯 OLS? 纯 OLS 的解是 W=(X⊤X)−1X⊤Y。但两个原因让 X⊤X 接近奇异:其一,top-k 选出的源层是按”最相关”挑出来的,彼此特征高度相关;其二,k 较大时特征维度可以达到数万,而校准 token 数有限。此时 (X⊤X)−1 数值上会爆炸。加上 λI 之后逆矩阵被稳定化,而 λ=0.01 的正则强度对拟合偏差的影响可以忽略。论文在附录 C 里对 λ 做了跨四个数量级的扫描(0 到 1),结果非常平坦——只有 λ=1 这种离谱值才崩(HellaSwag 掉 15.79 个百分点)。这个超参很”钝”,不挑。
为什么能把 bias 单独提出来? 求解前先把 X、Y 各自中心化(减去均值),这样 W∗ 估计的是斜率,截距事后由 b=Yˉ−XˉW∗ 恢复。中心化还让 X⊤X 变成协方差形式,数值上更稳。
计算量去哪了? 拟合的瓶颈是形成 X⊤X,复杂度 O(Nds2)(ds=knkvsdhs 是源特征维度),而它只依赖源层选择、不依赖具体头——所以每个目标层只算一次,该层所有头共享。这正是”整对模型拟合只要 47–87 分钟”的来源:Qwen3 14B→32B 约 52 分钟、Llama 3.1 8B→70B 约 50 分钟、Ministral 8B→14B 最慢 87 分钟,全部在单台 8×H100 节点上完成,全程无反向传播。精度上前向用 bfloat16、协方差矩阵用 float32、分析用 float64。
head 之间零共享:每个 (l, h) 一个独立的 WKl,h 和 WVl,h,不跨头、不跨 K/V 共享参数。线性映射本来就便宜,没必要共享。
拟合好的映射器体积有公式可算:K 和 V 合计 2Ltnkvt(knkvsdhs)dht 个参数。六对模型的映射器参数总量 1.01–3.36 B、存储 4–12 GB。这个量级不小,但不随序列长度或缓存大小增长,而且不需要常驻 GPU——推理时每个目标层只是一次批量矩阵乘,服务栈可以把映射器放在 CPU 内存或磁盘上,按需调入活跃的模型对。
组件二:跨层源选择#
第二个反直觉的设计:目标层的 KV 不是从源模型的”同层”映射,而是从”最有预测力”的 k 个源层拼接映射。注意这与直觉相反——两个模型的第 20 层表征不一定最相似(深度、宽度都不同),真正该问的是”目标第 20 层的 K 能被源模型的哪几层线性表出”。
具体流程:对每个目标层 l,先用组件一前的单源探测算出所有(源层,目标层)的 head 平均 R2(对 Kstripped 和 V 平均),按 R2 取 top-k 个源层 {l1,…,lk},把它们的 KV 特征拼接成输入:
XKl=[Kˉsl1∥Kˉsl2∥⋯∥Kˉslk]其中 Kˉsli∈RT×(nkvs⋅dhs) 是源层 li 全部 key 头的拼接;XVl 同理。同一目标层的所有头共享同一组源层选择,这让跨头信息流动成为可能(头维度小于特征拼接维度时尤其重要)。
为什么不是每层单独挑?两个细节:一是贪心前向选择(每轮加联合 R2 提升最大的层)是分析工具,生产映射器用固定 top-k(按单源 head 平均 R2 排序),可并行、可复现;二是 k 是按”模型对”整体调的超参,在 {1,2,4,6,8,10,12,16,20,24,all} 中扫描,选择使 ARC-C、HellaSwag、WinoGrande、MMLU 四个对数似然基准平均最高的值,GSM8K、CoQA 和延迟测量不参与选择(天然留出)。注意”选 k 的基准同时出现在结果里”这一点,论文在附录 H 用留一基准重选做了上限测量:k 变化最多让单个基准的准确率动 2.49 pp(均值 0.30 pp)。
消融实验(表 2)显示跨层源选择是三个组件中贡献最大的单项:k 从 8 砍到 1,ARC-C 从 61.60 崩到 27.65、困惑度(perplexity)从 7.33 崩到 22.73——单层信息量远不够,跨层拼接才是主力。
组件三:RoPE 因式分解(content-space mapping)#
第三个组件解决”位置编码污染”。标准旋转位置编码(Rotary Position Embedding, RoPE)对 queries 和 keys 施加随位置变化的旋转:缓存里存的是旋转后的 keys krope(t)=RΘ(t)kcontent。如果直接拿带 RoPE 的 keys 拟合映射器,会把”位置分布”也学进权重里:校准用的 1024 token 短序列对应特定的一组旋转角,学出的权重就绑死在这个位置分布上,换上下文长度就失效。
做法是”剥掉 → 映射 → 重穿”三段式:
K^t=(KsRΘs−1(t)WK+bK)RΘt(t)- RΘs−1(t):源模型 RoPE 的逆旋转。RoPE 是正交旋转,求逆就是转置,精确且免费;
- WK:在无位置空间里做线性映射。校准过程中,目标侧的真实 keys 也先剥掉目标 RoPE 再作为回归目标 Y,所以权重完全 position-free;
- RΘt(t):最后套上目标模型自己的 RoPE——两个模型 RoPE 配置不同也没关系,位置在最后一步才穿上。
Values 不编码位置,直接 V^t=VsWV+bV。
这一步的必要性有硬数据(表 2 的”−inference RoPE”行):推理时只做”剥-映射”而不重穿目标 RoPE(拟合与推理的位置处理不一致),MMLU 从 78.09 崩到 25.79(随机水平)、GSM8K 崩到 4.17;而 HellaSwag 只掉约 5 pp——因为 HellaSwag 这类局部语言建模任务对位置不敏感,MMLU/GSM8K 这类需要全局结构的任务会立刻暴露位置错位。这个对比也提醒:评测基准选不对,坏掉的组件根本测不出来。
那为什么不在拟合和推理时都保留 RoPE(论文叫”全耦合”变体,表 2 的”−all RoPE”行)?消融显示在 1024 token 的校准分布上它和完整方案落在噪声以内。论文的取舍理由是泛化性:解耦方案按构造适用于任意上下文长度(服务场景要支持到 32k token)和不同的 RoPE 配置,而耦合方案把权重绑死在拟合时的位置分布上。
校准数据的量级#
全部拟合只依赖 500 条 FineWeb-Edu 序列 × 1024 token,stride-4 子采样后每个目标头约 128K 个 token 级观测。论文对校准做了系统敏感性测试(附录 C):样本数 50 条就差 1.6 pp、200 条后饱和;校准语料域是唯一真正有成本的轴——用 CodeAlpaca 校准比 FineWeb-Edu 掉 5.24 pp(HellaSwag),Wikipedia 只掉 1.05 pp,且跨七个基准的逐格扫描显示 Wikipedia 校准的 retention 平均保持 99.4%、CodeAlpaca 95.9%。
实验:保真度、消融、延迟与漂移#
设置#
三个匹配 KV 家族、六个小→大转移对:Qwen3 8B/14B→32B、Llama 3.1 8B→70B、Ministral 3 3B/8B→14B 和 3B→8B。参数量比从 1.8× 到 8.8×(Llama 3.1 是参数量差距最极端的对),深度比 1.2× 到 2.5×。全部为稠密全注意力(dense full-attention)模型,所以每个目标层都接收映射后的 KV。
五个准确率基准(ARC-Challenge、HellaSwag、WinoGrande、MMLU 5-shot、GSM8K 8-shot chain-of-thought)加上 WikiText-2 困惑度和多轮对话基准 CoQA。核心指标是保留率(retention):
retention=目标模型独立 prefill 的准确率转移后准确率×100%由于不同基准的随机基线(chance floor)不同(ARC-C/HellaSwag/MMLU 是 25%、WinoGrande 50%、GSM8K 约 0%),论文还报告基线归一化保留率(floor-normalized retention),把随机基线定为 0%、目标独立运行定为 100%:
retentionnorm=accstandalone−chanceacc−chance×100%归一化专治”低分对看起来还有 40%“的错觉——WinoGrande 是最典型的例子:Llama 8B→70B 在其上原始保留率 87.1%,归一化后只剩 58.5%。
主结果:两档分明的六个对#
六对模型在各自选定的 k 下,平均保留率从 42% 到 98% 分布极宽,形成两个明显的档:
| 家族 | 转移对 (k) | Avg 保留率 | Avg(归一化) | ARC-C | HellaSwag | WinoGrande | MMLU | GSM8K |
|---|---|---|---|---|---|---|---|---|
| Qwen3 | 14B→32B (8) | 97.6% | 96.3% | 101.0% | 97.6% | 98.5% | 95.0% | 95.6% |
| Qwen3 | 8B→32B (12) | 87.5% | 80.7% | 94.0% | 95.2% | 91.0% | 88.5% | 68.8% |
| Llama 3.1 | 8B→70B (20) | 72.8% | 62.9% | 90.9% | 94.4% | 87.1% | 73.3% | 18.2% |
| Ministral 3 | 3B→8B (all) | 76.2% | 65.9% | 90.6% | 93.3% | 91.3% | 69.4% | 36.6% |
| Ministral 3 | 3B→14B (20) | 44.2% | 14.7% | 43.6% | 68.0% | 74.0% | 32.0% | 3.2% |
| Ministral 3 | 8B→14B (12) | 41.6% | 11.1% | 40.7% | 58.7% | 74.2% | 32.7% | 1.6% |
(数据来源:论文 Table 1)
Tier 1(四个成功对,保留 73–98%):Qwen3 14B→32B 平均保留 97.6%,ARC-C 甚至超过目标独立运行(101.0%);Llama 3.1 8B→70B 是参数量比最极端的对(8.8×),HellaSwag 保留 94.4%,但 GSM8K 只有 18.2%——推理类任务(GSM8K)对 KV 扰动远比语言建模类任务(HellaSwag)敏感,这个规律在六对中一致。Tier 2(两个失败对):Ministral 3B→14B 和 8B→14B 平均保留只有 42–44%,归一化后掉到 11–15%,基本不可用。
两档对照说明:匹配 KV 与成功强相关,但不保证成功。Qwen3 14B→32B(4×)成功而 Ministral 3B→14B(4.7×)失败,说明除了架构还有更深层的因素在起作用——这正是下一节要回答的问题。
消融:哪个组件最重要?#
在保留率最高的 Qwen3 14B→32B 上逐件拆除(表 2):
| 配置 | ARC-C | HellaSwag | WinoGrande | MMLU | GSM8K | PPL |
|---|---|---|---|---|---|---|
| 完整(k=8, ridge, content-space) | 61.60 | 80.70 | 68.98 | 78.09 | 90.98 | 7.33 |
| − 推理期 RoPE 重穿 | 44.97 | 75.39 | 56.59 | 25.79 | 4.17 | 7.70 |
| − 全部 RoPE(拟合+推理都耦合) | 61.09 | 80.73 | 68.59 | 77.70 | 90.98 | 7.35 |
| − RoPE − 跨层选择(k=1) | 27.65 | 44.81 | 51.78 | 26.07 | 0.38 | 22.73 |
| − RoPE − 跨层选择 − ridge | 36.43 | 62.26 | 51.22 | 51.26 | 1.44 | 9.86 |
(数据来源:论文 Table 2)
三个结论:跨层源选择是最大贡献者(k=8→k=1 让 ARC-C 掉 34 个点、PPL 恶化 3 倍);RoPE 解耦的必要性高度依赖基准(推理期不重穿只伤 HellaSwag 约 5 pp,却把 MMLU/GSM8K 打到随机水平);ridge 正则对完整方案贡献不大(去掉 ridge 反而某些项回升——因为 λ=0.01 本来就很弱),但它在极端配置(k=1、RoPE 耦合)下起到稳定作用。
MLP 补位:非线性映射能救回失败对#
线性 ridge 在失败对上不行,自然的追问是:换成非线性映射器能不能救回来?论文给每个(目标层,头,K|V)训练一个两隐藏层各 1024 单元、ReLU 激活的 MLP(Adam、学习率 1e-3、20 轮、batch size 4096、MSE 损失),作为 ridge 的即插即用替代品,在四个覆盖”成功到失败”区间的对上对比:
| 转移对 | Ridge 保留率 | MLP 保留率 | Δ |
|---|---|---|---|
| Qwen3 14B→32B | 97.6% | 97.3% | −0.3 pp |
| Ministral 3B→8B | 93.3% | 91.8% | −1.5 pp |
| Ministral 3B→14B | 68.0% | 92.3% | +24.3 pp |
| Ministral 8B→14B | 58.7% | 95.5% | +36.8 pp |
(数据来源:论文 Table 3,HellaSwag 保留率)
两个观察:ridge 已经成功的对上,MLP 反而略差(−0.3 到 −1.5 pp);ridge 失败的对上,MLP 大幅回血(+24.3 到 +36.8 pp),四个对全部站上 90%。结论是:跨模型 KV 关系本来就线性时,线性映射就够;MLP 只在 ridge 失效处有用,而不是全面碾压。
什么决定了迁移质量:误差的落点,不是误差的大小#
论文最反直觉的发现在这里。校准 R2 是直觉上最自然的”迁移质量预测器”——如果它能预测结果,部署前只凭拟合质量就能筛选模型对。但跨六个匹配 KV 对、双向共 12 次评估,R2 与下游保留率几乎不相关(Pearson r = −0.20)。铁证是两组对照:
- Llama 3.1 8B→70B 校准 RK2=0.84,小→大保留 94% HellaSwag,大→小只有 37%;
- Ministral 3B→8B 同样的 RK2=0.84,两个方向都保留 93%。
同样的拟合质量,下游结果天差地别。原因在于:R2 平等地加权所有维度上的平均重建误差,但注意力并不平等——attention 用目标的 queries Q 去打分 keys,再按注意力权重加权 values。真正决定下游行为是否保留的量,是注意力输出(attention output)本身。论文直接测它:映射 KV 与真实 KV 各自产生的注意力输出之间的余弦相似度(cosine similarity),逐层逐头平均。12 次评估中,注意力输出余弦与 HellaSwag 保留率的相关性 r = +0.57,明显优于 R2。
余弦在”模型对”粒度上总结了注意力保真度,但还不能解释”为什么相似 R2 的映射器产生不同的余弦”。论文引入误差集中度(error concentration)指标,看残差落在每个头的哪个子空间。对 K:把映射器的逐 token K 误差 e=K^−K 投影到目标模型该头 query 矩阵 Qh 的右奇异向量 vi 上,按对应奇异值平方 σi2 加权,再除以全部分量上的平均误差:
cK=T1∑t=1Tdh1∥et∥2T1∑t=1T∑iσi2(et⊤vi)2对 V:按该位置的真实注意力权重 at 的平方加权逐位置误差,再除以逐位置平均误差:
cV=T1∑t=1Tdh1∥et∥2T1∑t=1Tat2∥et∥2两个量都逐头平均。直觉:集中度大于 1 表示误差落在 attention 读取的方向上,小于 1 表示误差落在 attention 忽略的方向上。ridge 在失败对上 RK2 深达 −3.22 到 −7.81(校准域拟合完全不外推),且误差高度集中在 attention 敏感子空间;MLP 把 RK2 拉回零附近(虽仍为负)、把 K 集中度平均压低约 2.5、注意力输出余弦平均抬高约 0.45,HellaSwag 保留率随之上涨 24–37 pp。而在 ridge 本已成功的对上,这些量几乎不动——只有当错放的误差大到足以”绑住”注意力时,重新分布误差才改变下游结果。这也解释了为什么”误差重分布”本身不充分:Ministral 3B→8B 的 MLP 在两个量上都改善,HellaSwag 反而掉了 1.5 pp。
多轮切换:误差会不会复利?#
会话中途切换场景是”源和目标交替”的:切到 32B 生成几轮,再切回 14B 继续,再切回去。每轮切换都经过一次映射,映射误差会不会逐轮累积成级联失败?论文用 CoQA 测了 100 段约 15 轮的对话、覆盖五个领域,以每轮回答的 F1 相对目标独立运行的差距定义漂移(drift):

(图源:论文 Figure 4,Qwen3 14B↔32B)
结果令人安心:小→大方向第 1 轮到第 10 轮差距只扩大 1.7 pp(映射器保持稳定,而 32B 的独立准确率上限还在上升);大→小方向每轮线性漂移 0.33 pp。两个斜率都太小,十轮内不会级联崩坏——这是”会话中途换模型”能上线的安全垫。不过大→小的线性漂移在极长会话中仍会累积,论文提示这值得后续关注。在此任务上调整 k 最多改变漂移 2.0 pp。
延迟账:2.7–25× 的 prefill 节省#
省下的成本最终要落到延迟上。论文在 Qwen3 14B↔32B 上对比端到端”重新 prefill”与”KV 缓存转移”的延迟(表 5):
| 序列长度 | 映射器 S→L | 重新 prefill S→L | 加速比 | 映射器 L→S | 重新 prefill L→S | 加速比 |
|---|---|---|---|---|---|---|
| 64 | 14.0 ms | 61.7 ms | 4× | 11.6 ms | 39.2 ms | 3× |
| 8K | 67.8 ms | 1154.8 ms | 17× | 101.9 ms | 501.0 ms | 5× |
| 32K | 277.6 ms | 6975.3 ms | 25× | 427.1 ms | 2952.7 ms | 7× |
(数据来源:论文 Table 5;8×H100、bf16、eager 模式,无 torch.compile/CUDA graphs)
32K token 上下文、小→大方向:重新 prefill 要 6.98 秒,映射器只要 278 ms。扩大到七对模型、64 到 32,768 token 共十个序列长度、双向共 70 个测量格,映射器在每一格里都快于重新 prefill,加速比范围 2.7×–25.1×:
| 家族 | 转移对 | 映射器 @32K | 重新 prefill @32K | 加速比范围 |
|---|---|---|---|---|
| Qwen3 | 14B→32B | 278 ms | 6,975 ms | 4.4–25.1× |
| Qwen3 | 8B→32B | 392 ms | 6,975 ms | 4.3–17.8× |
| Llama 3.1 | 8B→70B | 777 ms | 11,562 ms | 4.5–14.9× |
| Ministral 3 | 3B→14B | 396 ms | 2,465 ms | 3.8–6.2× |
| Ministral 3 | 3B→8B | 438 ms | 1,764 ms | 2.7–4.0× |
| Qwen3 | 32B→14B | 427 ms | 2,953 ms | 3.3–6.9× |
| Llama 3.1 | 70B→8B | 216 ms | 1,652 ms | 2.8–7.6× |
(数据来源:论文附录 G Table 16)

(图源:论文 Figure 9,8×H100 bf16)
两个观察:大→小方向省得少(3.3–7.6×)——小模型的 prefill 本来就便宜,能省的基数小;这也符合业务直觉:升级方向的收益(用户等不起大模型 7 秒 prefill)恰恰是最大的。短序列段映射器延迟存在固定地板(14.0 ms 来自 Python 分发开销和跨 GPU 搬缓存),随序列长度增长远慢于重新 prefill——因为映射器的计算量只依赖源特征维度,与序列长度近似线性且系数小。
留出验证与诚实性检查#
两个补充实验值得注意。其一,用从未参与 k 选择的三个基准(PIQA、BoolQ、ARC-Easy)测选定配置(表 18):四个 Tier 1 对保留率 96.8–99.9%,两个 Tier 2 对 59.3–63.7%——档位结构在留出集上复现。其二,留一基准重选 k:18 个折中 12 个 k 不变,变化的折中最多动 2.49 pp——k 选择对结果的贡献有界。
工程落地与社区实现#
论文发表两周内,社区已经出现了第一个开源实现:kvbridge(GitHub 仓库 Sidd03192/kvbridge,标题直白:“用小模型 prefill,用大模型作答”),配套在 Hugging Face 上发布了训练好的映射器权重 Siddharth85/kvbridge-qwen3-1.7b-to-qwen3-4b(Qwen3 1.7B → 4B,top-k=12,500 条 FineWeb-Edu 序列 × 1024 token、stride-4 子采样、λ=0.01,样本内 R2:K 0.813、V 0.718,权重 bfloat16)。用法是典型的”一把梭”:
1from kvbridge import Mapper, transfer2
3mapper = Mapper.from_pretrained("Siddharth85/kvbridge-qwen3-1.7b-to-qwen3-4b")4small_cache = small(prompt_ids, use_cache=True).past_key_values5big_cache = transfer(small_cache, mapper)6big.generate(input_ids=prompt_ids, past_key_values=big_cache, max_new_tokens=128)部署形态上有几个论文明确的工程判断:
- 映射器不必常驻 GPU:推理时每个目标层只是一次批量矩阵乘,可以把映射器放在 CPU 内存或磁盘上按需调入。按 PCIe Gen4/Gen5 的 25–50 GB/s 带宽估算,4–12 GB 的映射器调入耗时 80–480 ms,每次切换只付一次,且可分摊到该模型对的后续所有请求。
- 有向映射:岭回归拟合是方向性的,14B→32B 和 32B→14B 是两个不同的映射器。P 模型家族最多需要 P(P−1) 个有序对映射器,按平均 6.5 GB 计,3/4/5 模型家族分别约 39/79/131 GB——增长是平方的,但预算在磁盘或主机内存,不进显存。
- 与既有机制的叠加关系:前缀缓存解决”同模型、同前缀”的复用,跨模型 KV 转移解决”同家族、跨模型”的复用;同模型跨层复用(CLA/xKV)挖掘层间冗余;投机式 prefill(speculative prefill)用轻量草稿模型估计 token 重要性跳过冗余计算。这些机制相互正交,可以组合进同一套服务栈。
- 适用边界要诚实:方法要求匹配 KV(头数与头维度一致)、稠密全注意力、家族内迁移。GQA 配置不匹配、MLA(Multi-head Latent Attention)这类把 KV 压缩进潜空间的注意力、混合注意力架构(滑动窗口/局部注意力)、注意力-循环混合架构(如 Nemotron 3 携带 SSM 状态)都不在适用范围。
局限方面,论文自己列了四条:校准只用 FineWeb-Edu 单一语料域(医疗/法律等单域校准的代价未被界定);k 在报告基准上选择(虽然有界);匹配 KV 是经验前提而非理论要求(未测试不匹配 KV 对);范围限于稠密全注意力的家族内迁移。此外,注意力输出余弦是事后诊断(需要先拟合映射器才能算),一个能”拟合前”预测可迁移性的信号仍有待发现。
小结#
这篇论文的价值可以压缩成四句话:
- 发现:同一家族内,跨模型的 KV 缓存存在显著线性结构——Qwen3 14B→32B 上单个源层解释 56% 的 key 方差、32% 的 value 方差,多层拼接后到 79%/65%。
- 方法:per-head 闭式岭回归 + 跨层 top-k 源选择 + RoPE 因式分解,500 条校准序列、单节点 8×H100、47–87 分钟、无梯度,得到 1.01–3.36 B 参数的映射器。
- 结果:六个匹配 KV 对中四个保留 73–98% 的目标独立准确率,映射比重新 prefill 快 2.7–25×,多轮切换十轮内无级联漂移;MLP 非线性扩展在失败对上再救回最多 37 pp。
- 方法论教训:R2 不能预测跨对迁移质量(r = −0.20),注意力输出余弦可以(r = +0.57)——决定保留率的是残差落在 attention 敏感子空间的多少,而不是误差总量。这为后续所有”KV 压缩/量化/复用”类工作树立了评测标杆:拟合质量要看下游、看子空间,不能只看重建指标。
对生产系统而言,它把”跨模型 KV 复用”从研究问题压成了部署时的一次性成本:一对模型跑一次闭式求解 + 一次磁盘存放。级联调度、会话中途切换、家族内路由这三类玩法从此可以免掉最贵的那次重复劳动。当然,“家族”的假设并不总成立(Ministral 的两个失败对就是证明),它买到的是家族内廉价切换,不是万能 KV 翻译器——但就这个受限场景而言,97.6% 的保留率与 25× 的 prefill 节省,是一笔划算的账。
参考资料#
- Cross-Model KV Cache Transfer in LLM Families: A Closed-Form Linear Mapping for Prefill Reuse(arXiv:2608.03893)
- kvbridge:跨模型 KV 缓存转移的开源实现(GitHub)
- kvbridge-qwen3-1.7b-to-qwen3-4b:训练好的映射器权重(Hugging Face)
- HE Xin 的论文解读:小模型算好的 KV Cache,大模型直接接着用
- EdgeGate 工程博客:重建误差无法预测行为(Your Model Matches the Reference. That Doesn’t Mean It Still Works.)
- DroidSpeak: KV Cache Sharing Across Fine-tuned Model Variants(NSDI 2026)
- Latent Space Communication via K-V Cache Alignment(LatentAlign, arXiv:2601.06123)
- RoFormer: Enhanced Transformer with Rotary Position Embedding(RoPE 原始论文, arXiv:2104.09864)
- SGLang: Efficient Execution of Structured Language Model Programs(前缀缓存的代表实现, arXiv:2312.07104)
- xKV: Cross-layer SVD for KV-cache Compression(arXiv:2503.18893)
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分内容可能已过时
评论区
分享你的想法,与大家交流讨论
音乐
暂未播放



