跳转到主要内容

KV Cache Hit Ratio 修正模型:从直觉到统一公式

在固定配置下把 KV prefix hit 映射到 compute、cache load、overlap、TTFT 与 Delivered/Physical TPM

· 约 6 分钟阅读

KV prefix hit 同时减少重复计算、增加或复用 cache 读取,并可能改变瓶颈位置。端到端模型不能只把 TTFT 或 TPM 乘一个 1-h;它要把 compute、load、overlap、fixed 与 decode 分开。

30 秒复习
  • 一句话:Hit 的收益取决于省下的 prefill compute 能否覆盖 cache load;Delivered TPM 通过总 chip-time 传导,Physical TPM 还要修正计入的 token 分子。
  • 三个判断:Attention 与逐 token 线性算子缩放不同;load 必须按来源层级和 per-rank bytes 计;Delivered TPM 与 Physical TPM 的分子含义不同。
  • 核心模型TTFT = T_fixed + T_compute(h) + T_load(h) - α·min(T_compute,T_load),再与 T_decode 合成总 chip-time。
  • 边界:这是固定配置下的一阶敏感性/兼容模型,不替代目标 hit 下的原生仿真、显存重算与候选配置重排;输入缺失时应返回不可比较,而不是补零。

适用边界:固定配置分析,不替代原生重跑

本页适合解释单个既有配置在 hit 变化下的方向、兼容历史上缺少 KV 建模的结果,或作为 native 实现的对照近似。它不证明后处理与仿真可交换:

Correct(Simulate(h=0))Simulate(h>0)\operatorname{Correct}(\operatorname{Simulate}(h=0)) \ne \operatorname{Simulate}(h>0)

KV hit 会改变有效 token 数、算子 shape、MoE 通信 payload、显存与 Batch 约束、overlap 关系,并可能改变最优 TP/DP/EP/MoE-TP 配置。因此生产模拟器必须把 hh 作为场景输入,在模型层重新执行算子、通信、显存和候选配置搜索;编排层不应根据 breakdown 展示标签二次推断物理缩放。完整的参数归属与验收规则见模拟器建模指南

1. 本页接收什么、输出什么

输入至少包括:

  • 连续 prefix 的 token hit ratio hh
  • 0-hit prefill breakdown;
  • 命中 payload 的驻留层级与 per-rank bytes/token;
  • 有效传输带宽与 overlap 假设;
  • decode chip-time 及 ISL/OSL 口径。

输出是同一 workload identity、同一并行配置、同一可行性边界下的 TTFT 与 TPM 近似修正。它不能用于跨配置重排,也不能复用 0-hit 下已经失效的 Batch 或显存结论。若 hh 是“命中请求比例”而不是“命中 token 比例”,必须先转换,二者不能直接代入同一公式。

2. Compute:按算子作用域缩放

KV Cache Hit 对 Prefill Causal Attention 计算面积的影响

Dense causal interaction 的剩余区域近似为 1h21-h^2;完整几何推导及适用条件见 Causal Attention 命中面积。这里直接使用它,不再重复证明。

Attention vs FFN 计算量对比

有可用 breakdown 时:

Tcompute(h)=Tattn-interact,0(1h2)+Ttoken-linear,0(1h)+Tother,0fother(h)\begin{aligned} T_{\text{compute}}(h) &=T_{\text{attn-interact},0}(1-h^2)\\ &\quad+T_{\text{token-linear},0}(1-h)\\ &\quad+T_{\text{other},0}f_{\text{other}}(h) \end{aligned}
Bucket一阶缩放说明
causal QK/AV interaction1h21-h^2suffix 仍访问 cached prefix
QKV/O projection、FFN/MoE1h1-h只为 miss suffix 重算
communication/runtime单独建模可能固定、分段或随 batch 改变

若 trace 只给一个混合 “attention” bucket,不能确定其中 projection 与 interaction 的占比。此时应保留区间或校准系数,而不是假装分解精确。

3. Load:命中不等于免费驻留

KV Cache Hit 对 Prefill TTFT 与 TPM 的影响

若命中的 prefix 已在 GPU HBM,额外 transfer 可以接近零;若在 Host、NVMe 或远端 cache,需要加载到执行设备。令 NloadN_{\text{load}} 为本次确实迁移的 hit tokens:

Tload(h)=Nload(h)×Skv/token/rankBeffective/rankT_{\text{load}}(h) =\frac{N_{\text{load}}(h)\times S_{\text{kv/token/rank}}} {B_{\text{effective/rank}}}

简单场景可令 Nload=hNN_{\text{load}}=hN,但共享驻留、局部命中、分层 cache 或压缩传输都会改变它。

MHA/GQA 的 per-rank payload 可从 KV Cache 的全局逻辑公式出发,并按已确认的 TP layout 修正;MLA、CSA/HCA 必须使用各自 schema。不要把全模型 bytes 除以单卡带宽,也不要把理论链路峰值当有效带宽。

4. Overlap 与 TTFT

α[0,1]\alpha\in[0,1] 表示 load 与可变 compute 的可重叠程度:

Toverlap(h)=αmin ⁣(Tload(h),Tcompute(h))T_{\text{overlap}}(h) =\alpha\min\!\left( T_{\text{load}}(h), T_{\text{compute}}(h) \right) TTFT(h)=Tfixed+Tload(h)+Tcompute(h)Toverlap(h)\operatorname{TTFT}(h) =T_{\text{fixed}} +T_{\text{load}}(h) +T_{\text{compute}}(h) -T_{\text{overlap}}(h)
α\alpha解释可变部分
0不重叠的保守复刻Tload+TcomputeT_{\text{load}}+T_{\text{compute}}
1充分重叠的上界max(Tload,Tcompute)\max(T_{\text{load}},T_{\text{compute}})

α\alpha 不是硬件常数。它受 chunk、prefetch、scheduler、并发和依赖链影响,应由 trace 或实验校准;配置目标只能标为假设。

5. 从 TTFT 到两种 TPM

设同一规范化请求的:

C(h)=P(h)+DC(h)=P(h)+D
  • P(h)P(h):hit 修正后的 prefill chip-time。
  • DD:decode chip-time。

若 prefix hit 不改变输出长度与 decode 执行,DD 可暂视为固定;若 scheduler、cache contention 或 batch 形态同时变化,必须重测。

口径公式回答的问题
Delivered TPM(ISL+OSL)×60000C(h)\frac{(\mathrm{ISL}+\mathrm{OSL})\times60000}{C(h)}单位 chip-time 向用户交付多少 token?
Physical TPM(ISL(1h)+OSL)×60000C(h)\frac{(\mathrm{ISL}(1-h)+\mathrm{OSL})\times60000}{C(h)}按“新算 token”口径折算多少 token?

单位要求 C(h)C(h) 使用毫秒;若使用秒,分子应为 60。两种分子不可混用:

  • cached input 仍属于用户请求,所以 Delivered TPM 保留完整 ISL。
  • Physical TPM 去掉未重新执行的 prefix token,但它只是 token 记账口径;suffix 对 cached prefix 的 attention 与 cache load 仍消耗硬件,不能把它当能耗或 FLOPs 真值。

高 OSL 或 decode 占比高时,prefill 即使显著缩短,端到端 TPM 增益也会被 DD 稀释。

6. 数据不足时如何退化

若没有算子 breakdown,可用单线性近似:

Tcompute(h)(1h)T0T_{\text{compute}}(h)\approx(1-h)T_0

若进一步假设充分 overlap,并定义全量 cache load 与 0-hit compute 的时间比:

δ=NSkv/token/rankBeffective/rankT0\delta=\frac{N S_{\text{kv/token/rank}}} {B_{\text{effective/rank}}T_0}

则可写成趋势模型:

Θ(h)Θ0max(1h,δh)\Theta(h) \approx\frac{\Theta_0} {\max(1-h,\delta h)}

它只用于说明“compute 下降、load 上升”的交叉点。相比完整模型,它没有显式固定开销、算子差异和 decode,不能用于承诺绝对容量或 SLO。

7. 从 measured hit 修正到 target hit

若压测已经在 hmh_m 下完成,而目标是 hth_t,应使用同一校准模型分别求总 chip-time:

C(h)=P(h)+DC(h)=P(h)+D TPMdeliveredt=TPMdeliveredm×C(hm)C(ht)\operatorname{TPM}^{t}_{\text{delivered}} =\operatorname{TPM}^{m}_{\text{delivered}} \times\frac{C(h_m)}{C(h_t)}

再按目标 hit 转为 Physical TPM:

TPMphysicalt=TPMdeliveredt×ISL(1ht)+OSLISL+OSL\operatorname{TPM}^{t}_{\text{physical}} =\operatorname{TPM}^{t}_{\text{delivered}} \times \frac{\mathrm{ISL}(1-h_t)+\mathrm{OSL}} {\mathrm{ISL}+\mathrm{OSL}}

这个相对修正要求模型、ISL/OSL、并行配置、并发和 cache 层级一致。若这些条件变化,不能把 hit 差异当唯一自变量。

8. 校准与误用检查

在输出结果前确认:

  1. hh 是 token-weighted 连续 prefix hit,还是其他统计?
  2. baseline 是 0-hit,还是已含 measured hit?
  3. attention bucket 是否拆出 projection?
  4. payload 是全局还是 per-rank,是否包含 Scale/对齐?
  5. 命中数据已经在 HBM,还是需要 Host/远端加载?
  6. 有效带宽和 α\alpha 来自实测还是配置假设?
  7. 输出是 Delivered 还是 Physical TPM?
  8. decode 是否确实可视为不变?
  9. 当前用途是固定配置敏感性分析,还是需要重新搜索候选配置?

缺失项应明确标记 missingunavailablenot_comparable。估算值与校准值也应分栏展示。

相关页面