Reference · Runtime ledger
Kimi K3 vLLM 推理状态台账
当输出不对、cache 命中异常或 speculative decode 回滚失败时,用这张表先确认“谁拥有它、什么时候写、下一步谁读”。版本固定到 vLLM f4b161d7。
请求持久状态
| 状态 | 所有者 | prefill 写入 | plain decode | 随长度增长 |
|---|---|---|---|---|
| KDA recurrent state | 请求 × KDA 层 × TP rank | 保存 prompt 末尾 state | 读取后原地前进一步 | 否 |
| KDA Conv4 state | 请求 × KDA 层 × TP rank | 保存 Q/K/V 最近 3 项 | shift 并追加新输入 | 否 |
| MLA latent KV | 请求 × MLA 层 × token/page | 每 prompt token 写 576 维 latent | 追加一项并查询全部可见页 | 是,O(T) |
| prefix/cache metadata | 请求/调度器 | 建立长度、hash、page 与 slot 映射 | 长度 +1,分配/复用 slot | 按 block/page |
| RecoverSSM 记录 | spec 请求 × KDA 层 | 通常不需要 | 仅启用对应 speculative 路径时使用 | 依配置与 draft 长度 |
只在当前 forward 内存在
| 临时量 | 典型 shape | 最后消费者 | 为何不能算作 cache |
|---|---|---|---|
| AttnRes buffer | [T,8,7168] | 最终深度聚合 | 新 token 会重建自己的深度来源 |
| KDA Q/K/V/decay/gate | [T,96,128] 等 | KDA core/output projection | 只把最终 recurrent/conv state 提交 |
| MLA prefill K/V | [T,96,192]/[T,96,128] | prefill attention | 持久页只存 [T,576] latent |
| router logits | [T,896] FP32 | Top-16 routing | 下一 token 重新路由 |
| expert activation | [T×16,3584/3072] | combine | 属于本层 channel mixing workspace |
| LM logits | 选中位置 [N,160000] | sampler | 采样后无需作为模型历史读取 |
prefill / decode 分派
| 模块 | prefill | plain decode |
|---|---|---|
| KDA | ShortConv + FlashKDA 或 chunk fallback;提交末尾 state | fused conv update + recurrent KDA + norm/gate;原地提交 |
| MLA | 临时展开 K/V,运行 causal attention,latent 插页 | W_UK_T BMM1 → latent MQA → W_UV BMM2 |
| AttnRes | buffer 第一维覆盖所有 packed prompt token | 只为本轮 decode token 建 buffer |
| LatentMoE | 按所有 packed token 路由 | 按当前 decode token 路由;小 batch 更偏 memory-bound |
一个 token 的提交边界
调度器确定本轮输入 token 和其逻辑位置,准备 KDA state index 与 MLA slot mapping。
token 穿过全部 93 层;每个 KDA 层更新自己的 state,每个 MLA 层追加自己的 latent。
临时 AttnRes、Q/K/V、router 和 expert workspace 在相应消费者完成后可复用。
最终 hidden 进入 LM head;sampler 从 logits 选出下一个 token。
新采样 token 尚未进 cache,必须作为下一轮输入再次完成上述流程。
排错不变量
不变量 1:同一请求提交到所有 69 个 KDA cache group 的逻辑长度必须一致;不能让某层停在 D、另一层已经到 E。
不变量 2:同一请求的 24 个 MLA 层各有独立 latent page 序列;它们 shape 相同但数值和权重空间不同。
不变量 3:prefill 采样出 E 后,cache 仍截止 D;只有消费 E 的 decode forward 才提交 E。
不变量 4:speculative 验证拒绝 suffix 时,KDA state 必须恢复到最后接受 token 的边界;不能只回收 MLA slots。