Skip to content

kv-store: unified KV cache orchestration — design + migration tracking #824

Description

@xiaguan

目标

异构 KV(full attn / MLA / SWA / linear state)统一为「组 + checkpoint」模型,把 qwen3 / glm52 各自手写的 offload 编排(qwen3 executor ~2000 行 prefetch 状态机、glm52 scheduler/offload.rs 1654 行)收编进一个共享层 openinfer-kv-store。北极星:新模型 release 当天,给 agent 一页 KV 契约文档,它能独立完成 prefix cache + offloading + P/D 接入。

设计文档:docs/subsystems/kv-cache/design.md(两类封存语义、对齐组、单索引 trade-off、KvModel trait、resolve/seal/retire 三动词、线性所有权链、取消契约、admission 水位、SaveClass QoS)。

迁移计划(绞杀式,每步合 main、bench 全绿、删旧码)

  • 骨架:设计文档 + openinfer-kv-storeresolve_prefix/seal/retire,paged only,HostTier 防腐层 + MockTier CPU 契约测试 11 项)+ 分发层 (GenerateRequest, KvPrefix)(未迁移模型收 KvPrefix::none(),行为零变化)
  • qwen3 首迁resolve_prefix 前置到分发层 tokio task,替换 remote_fetch_action 状态机与 PrefetchState 相位机,旧路径留开关至 bench 对齐(docs/conventions 回归标准)
  • glm52 D 侧:收件箱模式替换 HostRestoreState::poll_front 队头停车(push_front + break 堵整 rank FIFO 的结构性修复)
  • glm52 P/D(Handoff 对端租约仍开放):SaveClass::Handoff 租约语义对齐 pegaflow QueryLeaseId(超时回收、释放时机:D fetch 完成 vs admission 断言通过)
  • qwen35core::kv_poolBlockPool 迁移(独立,可并行);Bounded 组 slab + seal-by-copy 首发(唯一新物理能力);gemma4 照抄
  • KvModel trait 定稿(spec/arenas/repack,随 qwen3 首迁)

未决(设计修订追加到本 issue body)

  • Handoff 租约的超时回收与释放时机 —— 防腐层里对 pegaflow lease 语义定

  • miss-breaker(连续冷 miss 停止 park)是跨请求策略,qwen3 迁移时决定放 store 还是 scheduler

  • admission 水位下推进池锁内(彻底闭合 TOCTOU)是 hardening 项,骨架先用 store 侧原子

  • pegaflow fork 与否:HostTier 防腐层稳定运行后再议;QueryOutcome::Loading 的轮询套轮询是第一改造对象

  • APoSD 审查(PR feat(kv-store): openinfer-kv-store skeleton — resolve/seal/retire + KvPrefix dispatch (#824) #825 内部审查,已修 6/9)遗留两项:

    • match_and_add_prefix 按值消费 KvPrefix(hold 活到 match 之后成为类型不变量,而非注释约定)—— @ qwen3 首迁
    • cacheable_pin_percent 默认 25% 是唯一无出处的旋钮 —— @ qwen3 迁移后用 multi-turn bench 校准
  • resolve 的池压力语义已定为等待(deadline 兜底)而非即刻降级:装不下前缀的池同样过不了 admission,等待买廉价 prefill,降级买全量重算

  • glm52 全量迁移 PR feat(glm52): full migration to openinfer-kv-store — resolver pipeline, keyed tail verbs, 1P1D e2e verified (#824) #830(2026-08-02):1P1D+router e2e、GSM8K 0.99、multi-turn c16 头对头 757-769 tok/s / TTFT 258ms vs 老栈 564 / 751ms。

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleAutomatically marked after inactivity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions