V4 KV Layout:Classical + State 双池

← 中文导读 · ← 仓库首页(EN) · ← 演进总览 §5.3 KV layout · ← 基础设施线导读 · CSA/HCA 算法专文 · V4 梗概 §推理 infra · 并列 HiSparse · 并列 磁盘 Prefix Cache · 上游 ESS 论文arXiv:2606.19348 §3.5.1 — DeepSeek-V4 演进总览 §5.3 只保留梗概;layout 细节以本文为准


一句话

V4 推理引擎不再用「每层每 token 一条同质 latent」,而是把 CSA/HCA 压缩 entry 放进按 $\mathrm{lcm}(m,m')$ 对齐的 Classical KV cache,把 SWASliding Window Attention,滑动窗口注意力)+ 未凑满压缩块的 tail buffer 放进每请求固定大小的 State cache——两类池子尺寸、生命周期、读写模式不同,是后续 HiSparse offload 与磁盘 prefix 的内存布局前提

答疑SWA(Sliding Window Attention) — 最近约 128 token 的精确未压缩 K/V,与 CSA/HCA 分池,eviction 与 prefix 策略独立


为什么 V3/V3.2 的单一 layout 不够

代际Cache 形态问题
V3 / V3.1同质 MLA latent,每层每 token 同 shape1M token 下 HBM 与带宽双瓶颈
V3.2 ESSIndexer-Cache + Latent-Cache 两类,但仍是 每 token 一条ESS 只 offload Latent;layout 仍是 DSA 的 per-token 流
V4CSA 4:1、HCA 128:1、SWA、Indexer、tail 五类对象压缩比 $m{=}4$、$m'{=}128$ 不同 → 块对齐、尾缓冲、SWA 窗口必须 分池管理(见下)

答疑为何要分池?块对齐与尾缓冲 — Classical 只存满块不可变 entry;State 存 tail + SWA;$\mathrm{lcm}(4,128){=}128$ 统一两种压缩边界

算法侧五类 entry 见 CSA/HCA 专文 §4 · V4 梗概演进总览 §5.3 表格;本文只讲引擎如何把它们落进内存

V4 异构 KV:Classical KV cache + per-request state blocks (paper sec 3.5.1)

图示详情


Classical KV cache

服务对象:已凑满压缩块的 CSA entry(stride $m{=}4$)与 HCA entry(stride $m'{=}128$)。

说明
对齐粒度按 $\mathrm{lcm}(m,m') = \mathrm{lcm}(4,128) = 128$ token 对齐的压缩块
为何 lcmCSA 每 4 token 一条、HCA 每 128 token 一条;同一物理块需同时满足两种压缩器的块边界,避免跨层/跨类型碎片
生命周期随 prefix 增长 append;压缩完成后 entry 不可变,适合 prefix 共享与落盘
读模式CSA:top-$k$ 稀疏读;HCA:对 ~$L/128$ 条 entry dense attend(1M context ≈ 8K entry)

Together.ai 部署解读强调:V4 的难点不在 attention kernel 本身,而在 多种 cache 对象的 batching、eviction 与 prefix 复用Serving DeepSeek-V4 §「multiple KV-cache layouts」)。


State cache

服务对象

组件含义
SWASliding Window Attention 的 精确局部 K/V;窗口约 128 token,独立 eviction
Tail buffer不足 $m$(CSA)或 $m'$(HCA)个 token 的 未压缩尾;等待凑满后再写入 Classical 池
Indexer KV(若与 state 同池实现)CSA lightning indexer 的轻量向量;与主 attention entry 维度不同
说明
分配方式每请求固定大小块(per-request state block),便于 batch 内不同序列长度对齐
生命周期SWA 随 decode 滑动更新;tail 在凑满前 可变
与 Classical 的分工Classical 存「已定型」压缩历史;State 存「仍在形成中」的局部与尾

论文 §3.5.1 的 State cache 是 SWA + tail 的归宿;部署上 SWA 往往占 per-token 体积大头(Together 早期 bring-up:全量 SWA 时 per-token KV 甚至略高于 V3 路径),因此 cache 策略(存多少、何时 evict)比压缩算法本身更决定并发容量——见 HiSparse 专文


与 ESS / HiSparse 的关系

ESS(V3.2)V4 KV layout(本文)HiSparse
层级算法已分裂 Indexer/Latent;ESS 管 offload 策略定义 Classical vs State 物理布局在 layout 之上把 inactive C4 搬出 GPU
可否叠加layout 是 HiSparse / 磁盘 prefix 的 前置依赖 CSA 4:1 entry 的 稀疏激活

V4 不是把 ESS 的 Latent-Cache 直接放大到 1M;而是 换一套异构压缩 layout 后再做分层内存(ESS §与 V4)。


基础设施线位置

方向文档
本专题(layout 基础)演进总览 §5.3
infra 线 ⑤ 子项基础设施线导读 §1
并列 offloadHiSparse · 磁盘 Prefix Cache
上游 ④ ESSESS Latent offload
算法依赖CSA / HCA · V4 梗概 · 算法线 §③

延伸

资源说明
演进总览 §5.4V3 / V3.2 ESS / V4 三代 offload 对照
Together.ai — Serving V4多 layout 并存的 serving 含义
V4 异构 KV 总览图Classical + HiSparse 分层示意图

论文arXiv:2606.19348 §3.5.1