# 推理服务与低成本部署:正式研究账本 > 状态:首版证据核验完成,供 Chapter 14 正文、原创图和交互实验使用。 > > 核验日期:2026-07-29 > > 锚点:Kimi K3 §4.1.4 / §5.1 / §5.3.1 / §5.4、Mooncake、DeepSeek-V2 §2、 > DeepSeek-V3 §2.1 / §3.4、DeepSeek-V3.2 §2.3、DeepSeek-V4 §2.3 / §3.5 / §5.2.1。 > > 证据纪律:Grok 只做召回;正文事实只来自 P0 论文 / 技术报告或 P1 作者官方实现。 > 所有 speedup 都保留作者的模型、硬件、负载、SLO 与基线边界,不外推为通用常数。 --- ## 0. 本章真正回答什么 训练完成只说明模型参数存在,不说明它能以可接受的成本、延迟和可靠性服务真实用户。 一个在线 LLM 请求同时穿过四层: ```text 模型结构 attention / MoE / precision / draft ↓ 单实例引擎 KV allocator / batching / prefix cache / graph ↓ 设备内核 GEMM / attention / quantization / communication ↓ 集群与产品 routing / admission / SLO / failover / cost ``` 任何一层都可能成为瓶颈。于是本章坚持四条总原则: 1. **prefill 与 decode 分账**:两者的并行度、算术强度和用户指标不同; 2. **权重与状态分账**:量化权重不等于压缩 KV Cache; 3. **吞吐与 goodput 分账**:超时后完成的 token 可能不产生产品价值; 4. **算法与实现分账**:低 FLOPs 不保证低延迟,内存流量、通信、kernel shape 和 batch 同样重要。 --- ## 1. 十八张独立问题账 | # | 账本 | 本章要回答的问题 | 最常见误写 | |---|---|---|---| | Q1 | 服务指标 | TTFT、TPOT、E2E、throughput、goodput 各测什么? | 只报 tokens/s | | Q2 | 权重显存 | 权重、scale、workspace、runtime buffer 占多少? | 参数量直接等于显存 | | Q3 | KV 状态 | 每 token 的状态怎样随层数、KV heads、精度增长? | 只看 context length | | Q4 | 分配与碎片 | 连续预留为什么浪费,分页又留下什么边角? | PagedAttention“零碎片” | | Q5 | Prefill | 长 prompt 为什么常是算力密集? | 只写成“生成第一个 token” | | Q6 | Decode | 单步生成为什么常是带宽密集? | FLOPs 少所以必然快 | | Q7 | 批处理 | request / iteration / continuous batching 有何不同? | 动态 batch 自动解决全部问题 | | Q8 | 阶段干扰 | 长 prefill 如何抬高正在 decode 的 TPOT? | 平均延迟掩盖停顿 | | Q9 | 内核 | IO-aware、融合、图捕获与 shape 调度解决什么? | FlashAttention 等于全栈 serving | | Q10 | 前缀复用 | 何时可以合法跳过 prefill? | 相同文本块都可直接复用 | | Q11 | PD 分离 | 为什么拆,KV 又怎样跨设备? | 分离一定降本 | | Q12 | 推测解码 | 接受率和 draft 成本怎样决定净加速? | 固定 2–3× | | Q13 | 量化 | W / A / KV 各自压什么,内核是否吃得到? | 位数越低越快 | | Q14 | 并行 | TP / PP / DP / EP 怎样映射到服务阶段? | 训练拓扑照搬推理 | | Q15 | MoE | 激活参数少为何仍可能贵? | 忽略权重流与 all-to-all | | Q16 | 调度与 SLO | 公平、缓存亲和、尾延迟怎样冲突? | P50 代表体验 | | Q17 | Fleet | 扩缩、迁移、过载与故障怎样处理? | 副本数等于瞬时容量 | | Q18 | 谱系 | DeepSeek / Kimi 在四层各改了什么? | 所有优化压成“模型更快” | --- ## 2. Q1:先把服务指标说清楚 设请求到达时间为 `t_arrive`,首个输出 token 到达为 `t_first`,最后完成为 `t_done`, 相邻输出 token 时间为 `t_i`: ```text TTFT = t_first - t_arrive TPOT_i = t_i - t_{i-1} E2E latency = t_done - t_arrive output throughput = 完成的输出 token / 时间 request throughput = 完成的请求 / 时间 ``` ### 2.1 指标不是同义词 - **TTFT / Time To First Token**:排队 + prefill + 首次 decode; - **TPOT / Time Per Output Token**:流式输出的节奏,也常写 ITL / inter-token latency; - **E2E latency**:TTFT 加上后续全部生成; - **throughput**:系统做了多少工作,不保证工作及时; - **goodput**:在给定 TTFT / TPOT / E2E SLO 内完成的有效请求率; - **P50 / P95 / P99**:分位数,不可由平均值替代。 DistServe 明确把 per-GPU goodput 定义为满足延迟约束的最大请求率,并在其硬件、模型、 trace 与 SLO 设置下报告最高 `7.4×`;这个数字不是“PD 分离永远 7.4×”。 一手来源:[DistServe](https://arxiv.org/abs/2401.09670) ### 2.2 输入与输出成本必须分开 输入 token 主要支付 prefill;输出 token 每增加一个都要再走一次自回归 decode。 同样是 1M token: - 1M 输入 + 1 输出; - 1K 输入 + 999K 输出; 对 GPU 时间、KV 生命周期和用户等待完全不是一回事。任何 `$ / 1M tokens` 若不区分 input / output、cache hit / miss、batch、上下文位置和 SLO,解释力都很弱。 --- ## 3. Q2–Q3:权重显存与 KV Cache 是两张账 ### 3.1 权重下界 若模型有 `P` 个参数,平均存储位宽为 `b_w`: ```text WeightBytes ≈ P × b_w / 8 ``` 这是权重本体的解析下界,不含: - 每组 scale / zero point; - embedding / lm head 的特殊精度; - CUDA graph、workspace、通信 buffer; - runtime 元数据和临时 activation; - speculative draft; - 多副本或流水 stage。 ### 3.2 标准注意力 KV 公式 对 batch `B`、已缓存 token 数 `T`、层数 `L`、KV head 数 `H_kv`、每头维度 `D_h`、 每元素字节 `s`: ```text KVBytes = B × T × L × 2 × H_kv × D_h × s └K+V┘ KVBytesPerToken = L × 2 × H_kv × D_h × s ``` 这是**架构维度推导**,不是某个框架的实测显存。 教学例: ```text L = 32, H_kv = 8, D_h = 128, BF16 = 2 bytes KV / token / request = 32 × 2 × 8 × 128 × 2 = 131,072 bytes = 128 KiB 128K tokens ≈ 16 GiB ``` 若同样模型使用 `H_kv = 32` 的 MHA,教学值会变成 `512 KiB/token`。这说明 GQA/MQA 主要改变 KV head 维度;它们没有把 attention 变成固定状态。 ### 3.3 MHA、MQA、GQA、MLA、KDA 不能画成同一种压缩 | 结构 | 随序列增长的主状态 | 保留方式 | 关键边界 | |---|---|---|---| | MHA | 每层每个 KV head 的 K/V | 全量 token KV | 最大但直接 | | MQA | 单组 K/V 供多 Q heads 共享 | 全量 token KV | KV heads 变少 | | GQA | 若干组 K/V | 全量 token KV | MHA 与 MQA 之间 | | MLA | 低维 latent KV + positional 分量 | 全量 token 的压缩表示 | 仍随 T 增长 | | KDA | 每层固定大小 recurrent state | 状态递推 | 不保留逐 token KV,但更新/回滚更复杂 | 一手来源: - [Fast Transformer Decoding / MQA](https://arxiv.org/abs/1911.02150) - [DeepSeek-V2 / MLA](https://arxiv.org/abs/2405.04434) - [Kimi Linear / KDA](https://arxiv.org/abs/2510.26692) - [Kimi K3](https://arxiv.org/abs/2607.24653) DeepSeek-V2 作者报告 MLA 相对其 DeepSeek 67B 对照减少 `93.3%` KV cache 并提高最大生成吞吐; 只能按该报告对照理解,不能写成“MLA 对任意 MHA 都固定减少 93.3%”。 --- ## 4. Q4:PagedAttention 解决的是分配,不是模型数学 连续预留方案常按最大长度为请求留一整块显存,但真实输出长度未知: ```text reserved waste = 预留但最终未使用 external fragmentation = 空闲空间存在却不连续 internal fragmentation = 最后一个分配块未填满 ``` PagedAttention 借鉴虚拟内存: ```text logical KV blocks ↓ block table non-contiguous physical blocks in GPU pool ``` 它让 KV 按需增长、可交换、可 copy-on-write 共享。vLLM 论文在其模型和 workload 上报告相对 当时系统 `2–4×` throughput,但核心机制不是减少 Transformer FLOPs。 ### 4.1 “近零浪费”不等于零 若 block size 为 `S`,请求长度 `T`: ```text blocks = ceil(T / S) allocated tokens = blocks × S internal waste = allocated tokens - T ``` 每个请求最后仍可能浪费 `0 … S-1` 个位置;还有 block table、引用计数、调度与 kernel 形状成本。 block 太小增加元数据和寻址,太大增加内部碎片。 一手来源:[Efficient Memory Management for LLM Serving with PagedAttention](https://arxiv.org/abs/2309.06180) --- ## 5. Q5–Q6:Prefill 与 Decode 是两种工作负载 ### 5.1 Prefill 一次处理整个输入序列: - Q/K/V 与 MLP GEMM 能沿 token 维并行; - 标准 dense attention 的配对随序列近似二次增长; - 长 prompt 的 TTFT 对算力、attention IO 与 prefix hit 极敏感; - 结果是后续 decode 所需的 KV / recurrent state。 ### 5.2 Decode 每步通常只新增一个 token: - 必须读取模型权重; - dense attention 还需读取历史 KV; - 单请求矩阵很“瘦”,GPU 计算单元不容易吃满; - batch 可摊薄权重读取,但同时增长 KV 容量与排队。 因此常见直觉是: ```text prefill:更偏 compute-bound decode:更偏 memory-bandwidth-bound ``` 这是常见 regime,不是硬定律。短 prompt、小模型、极大 batch、特殊 kernel、量化、MoE、稀疏/ 线性 attention 都会移动瓶颈。 Splitwise 正是基于两阶段不同的计算、内存和功率特征做 phase splitting;论文在其集群设计和 工作负载下报告 `1.4×` throughput 且成本低 `20%`,或相同成本/功率 `2.35×` throughput。 一手来源:[Splitwise](https://arxiv.org/abs/2311.18677) --- ## 6. Q7:从固定 batch 到 iteration-level scheduling ### 6.1 Request-level batching 的队头阻塞 若一个 batch 必须等最慢请求结束: ```text 短输出:早已完成却不能及时离开 新请求:必须等整个 batch 结束 长输出:决定所有人的生命周期 ``` ### 6.2 Orca 的转折 Orca 把调度粒度降到每次模型 iteration,并用 selective batching 处理不同 operation: - 已完成请求在 iteration 边界离开; - 新请求可以加入下一轮; - batch 组成随生成过程变化。 Orca 在论文的 GPT-3 175B 部署与对照下报告 `36.9×` throughput;硬件、系统代际和基线均 限定该数字。 一手来源:[Orca, OSDI 2022](https://www.usenix.org/conference/osdi22/presentation/yu) ### 6.3 Continuous batching 仍有决策 它不是一个开关,而是一组策略: - 一轮准入多少 prefill / decode token; - 是否抢占,以及 swap / recompute 哪个更便宜; - 长短请求、优先级和租户怎样排队; - batch token budget 如何限制; - 何时触发 CUDA graph 或特定 kernel; - KV 不够时驱逐谁。 FastServe 用可抢占调度降低长请求阻塞;Llumnix 进一步支持跨实例迁移请求及其 KV 状态。 一手来源: - [FastServe](https://arxiv.org/abs/2305.05920) - [Llumnix](https://arxiv.org/abs/2406.03243) --- ## 7. Q8:Chunked Prefill 在吞吐与停顿之间切账 长 prefill 整块插入 continuous batch 会让正在 decode 的请求等待。Sarathi-Serve 把 prompt 切成若干 chunk,并把 chunk 与 decode token 组成更均匀的 iteration: ```text long prefill ├─ chunk 1 + decode batch ├─ chunk 2 + decode batch ├─ chunk 3 + decode batch └─ ... ``` 收益: - 限制单轮 stall; - 提高 decode batch 的连续性; - pipeline 下减少不均匀 iteration 的气泡。 代价: - chunk 太小会增加调度、kernel launch 和中间状态成本; - chunk 太大又回到 decode stall; - 最优 token budget 依赖模型、GPU、并行度、prompt/output 分布与 SLO。 Sarathi-Serve 作者在 Mistral-7B / Yi-34B / Falcon-180B 的不同硬件设置下分别报告最高 `2.6× / 3.7× / 5.6×` serving capacity,必须逐设置引用。 一手来源:[Sarathi-Serve, OSDI 2024](https://arxiv.org/abs/2403.02310) --- ## 8. Q9:内核优化究竟省了什么 ### 8.1 FlashAttention:精确 attention 的 IO 重排 FlashAttention 用 tiling 避免显式把完整 attention matrix 往返 HBM,并在片上做在线 softmax。 它是 exact attention:结果数学上不靠丢 token 近似;速度来自 IO-aware schedule。 FlashAttention-2 改善并行和 work partition;FlashAttention-3 面向 Hopper 的异步与低精度路径。 一手来源: - [FlashAttention](https://arxiv.org/abs/2205.14135) - [FlashAttention-2](https://arxiv.org/abs/2307.08691) - [FlashAttention-3](https://arxiv.org/abs/2407.08608) ### 8.2 Decode kernel 与 prefill kernel 不是同一个最优形状 decode 的 query 很短、KV 很长;需要沿 KV 长度切分、归约并控制状态读取。FlashInfer 用组合式 KV format、JIT attention template、load-balanced scheduling 与 CUDA graph 兼容处理多种 serving shape。论文报告的 ITL 降低范围仅适用于其模型、硬件和 compiler 对照。 一手来源:[FlashInfer](https://arxiv.org/abs/2501.01005) ### 8.3 Kernel 快不等于端到端快 端到端还包含: - tokenizer、排队、RPC; - KV 分配 / hash / transfer; - all-reduce / all-to-all; - sampling、logits processing、structured decoding; - host launch、graph capture; - draft 与 verifier; - 请求迁移和故障路径。 所以 kernel microbenchmark、single-request latency 与 fleet goodput 必须分开报告。 --- ## 9. Q10:前缀缓存何时合法 ### 9.1 最安全的基本条件 可直接复用的通常是: - 同一 checkpoint / adapter; - 同一 tokenizer 与精确 token prefix; - 相容的位置编码、attention mask 与 multimodal preprocess; - 相同精度 / cache layout; - cache 对应的所有模型状态完整且未被原地修改。 “两段文本内容相同”不够。若它们前面的上下文或位置不同,K/V 也可能不同。 ### 9.2 三种复用层次 | 层次 | 代表 | 做法 | 边界 | |---|---|---|---| | 精确共同前缀 | vLLM / SGLang | block hash / radix tree | 只复用 prefix | | 批内共享前缀 | Hydragen / ChunkAttention | 共享 prefix attention,再处理 suffix | 需要共享度 | | 非前缀 chunk | CacheBlend | 复用后选择性重算部分 KV | 不是零重算 | SGLang 的 RadixAttention 把请求前缀组织为 radix tree;其最高 `6.4×` throughput 是多个 structured program workload 下的作者报告,不是 prefix cache 单机制常数。 一手来源: - [SGLang](https://arxiv.org/abs/2312.07104) - [Hydragen](https://arxiv.org/abs/2402.05099) - [ChunkAttention](https://arxiv.org/abs/2402.15220) - [CacheBlend](https://arxiv.org/abs/2405.16444) CacheBlend 的关键是:非前缀 chunk 的预计算 KV 缺失与前序 chunk 的 cross-attention,不能整块 无条件复用;它选择少量 token 重算并与 cache load 重叠。论文报告的 TTFT `2.2–3.3×` 与 throughput `2.8–5×` 只属于其模型、数据集、存储和对照。 ### 9.3 CacheGen:运输也可以是瓶颈 CacheGen 压缩并流式传输 KV context,目标是让“加载已有状态”比重新 prefill 更划算。 压缩带来的质量、编码时间、网络和存储层次必须一起核算。 一手来源:[CacheGen](https://arxiv.org/abs/2310.07240) --- ## 10. Q11:Prefill–Decode Disaggregation ### 10.1 为什么拆 共置时,prefill 与 decode: - 竞争 GPU; - 需要妥协 batch / parallelism; - 长 prefill 可抬高 decode TPOT; - 两阶段无法独立扩容。 PD 分离让 prefill pool 和 decode pool 分别选择并行度、batch 和硬件。 ### 10.2 新增的账 Prefill 完成后必须把状态交给 decode: ```text transfer time ≥ KV bytes / effective network bandwidth + serialization / layout conversion + queueing / handshake ``` 真实成本还包括: - prefill / decode TP degree 不同时的重新布局; - 目标 decode 节点的 HBM 容量; - cache hit 与 transfer hit; - NIC / PCIe / NVLink / RDMA 拓扑; - 失败重传和 stale cache; - 阶段资源比随流量变化。 ### 10.3 三个关键节点 1. **Splitwise**:用不同机器匹配 prompt / generation 的不同特征; 2. **DistServe**:围绕 TTFT / TPOT SLO 最大化 per-GPU goodput; 3. **Mooncake**:把 KVCache 当作跨 GPU、CPU DRAM、SSD 的中心资源,并加入过载 early rejection。 Mooncake 是 Kimi 的生产 serving 平台。论文作者报告: - 特定模拟长上下文场景最高 `525%` throughput increase; - 真实 Kimi workload 在相同 SLO 下多处理 `75%` 请求。 这两个数字来自不同实验,不能合成“Mooncake 固定 5.25×”。 一手来源: - [Splitwise](https://arxiv.org/abs/2311.18677) - [DistServe](https://arxiv.org/abs/2401.09670) - [Mooncake](https://arxiv.org/abs/2407.00079) - [Mooncake official repository](https://github.com/kvcache-ai/Mooncake) --- ## 11. Q12:推测解码的数学与边界 ### 11.1 核心协议 ```text draft q:便宜地提出 k 个候选 target p:一次并行评分这段候选 accept/reject:保留合法前缀,并在拒绝处校正 ``` Leviathan 与 Chen 等工作的关键不是“近似输出”,而是用修正采样保持 target distribution (在其数值假设下)。 一手来源: - [Fast Inference via Speculative Decoding](https://arxiv.org/abs/2211.17192) - [Speculative Sampling](https://arxiv.org/abs/2302.01318) ### 11.2 接受率是加速墙 每步 acceptance mass: ```text a = Σ_x min(p(x), q(x)) ``` 若用一个极简教学假设:每个 draft token 独立以概率 `a` 接受,draft 长度 `k`,一次 target verification 至少产出一个 token,则一次 target pass 的期望输出: ```text E[tokens] = 1 + a + a² + ... + a^k = (1 - a^(k+1)) / (1 - a), a ≠ 1 ``` 这只是教学模型。真实接受率随位置、上下文、采样温度、领域、树结构和 batch 变化。 若 target 单步成本 `C_t`,每个 draft token 成本 `C_d`,一次验证成本 `C_v(k)`: ```text toy speedup = E[tokens] × C_t / (k × C_d + C_v(k)) ``` `k` 太大可能增加无效 draft 与验证成本;draft 太小虽便宜,分布太差又会拉低 `a`。 ### 11.3 从小模型到多头、树和 feature draft | 路线 | 代表 | 草稿来自哪里 | 关键边界 | |---|---|---|---| | 独立 draft LM | Speculative Sampling | 小模型 | 两套权重 / cache | | token tree | SpecInfer | 多候选小模型 | 树宽与验证成本 | | retrieval draft | REST | 语料中的重复片段 | 领域重复性 | | 多预测头 | Medusa | target 上的额外 heads | 需要训练 heads | | feature autoregression | EAGLE | target 中间特征 | 模型耦合 | | dynamic tree | EAGLE-2 | 置信度调树 | 校准决定树 | | multi-layer fusion | EAGLE-3 | 低/中/高层特征 | 训练数据与实现 | 一手来源: - [SpecInfer](https://arxiv.org/abs/2305.09781) - [REST](https://arxiv.org/abs/2311.08252) - [Medusa](https://arxiv.org/abs/2401.10774) - [EAGLE](https://arxiv.org/abs/2401.15077) - [EAGLE-2](https://arxiv.org/abs/2406.16858) - [EAGLE-3](https://arxiv.org/abs/2503.01840) EAGLE-3 报告最高 `6.5×` 单场景速度、SGLang batch 64 下 `1.38×` throughput。两者口径不同, 页面必须同时展示,不挑最高数字制造错觉。 --- ## 12. Q13:量化必须分 W / A / KV | 量化对象 | 主要省什么 | 可能加速哪段 | 不能自动得到什么 | |---|---|---|---| | Weight | 权重存储与读取 | decode、GEMM | KV 变小 | | Activation | GEMM 输入/中间流量 | prefill / batched decode | 权重自动低位 | | KV Cache | 上下文状态容量与 attention 读取 | 长 context decode | MLP 权重变小 | | Router / indexer | 稀疏选择路径 | long-context selection | 主干全量低位 | ### 12.1 关键路线 - **LLM.int8**:离群维走高精度,主体 INT8; - **GPTQ**:基于近似二阶信息的一次性 weight-only PTQ; - **SmoothQuant**:等价缩放把 activation outlier 难度迁给 weights,做 W8A8; - **AWQ**:用 activation 统计识别并保护少量显著 weight channels; - **KVQuant**:per-channel key、pre-RoPE、非均匀与 dense-sparse KV; - **KIVI**:key per-channel、value per-token 的 tuning-free 2-bit KV; - **QServe**:W4A8KV4 与 kernel/system co-design。 一手来源: - [LLM.int8](https://arxiv.org/abs/2208.07339) - [GPTQ](https://arxiv.org/abs/2210.17323) - [SmoothQuant](https://arxiv.org/abs/2211.10438) - [AWQ](https://arxiv.org/abs/2306.00978) - [KVQuant](https://arxiv.org/abs/2401.18079) - [KIVI](https://arxiv.org/abs/2402.02750) - [QServe](https://arxiv.org/abs/2405.04532) ### 12.2 低位不保证更快 需要同时验证: - 硬件是否有对应 tensor core / vector path; - dequant 是否落到慢 CUDA cores; - scale / zero point 粒度; - group size 与 layout; - kernel 是否融合; - batch / matrix shape 是否进入有利 regime; - 精度回归是否覆盖实际工具、代码与长上下文任务。 QServe 正是指出云 serving 中 INT4 的 dequant overhead 可能抵消收益,并联合 W/A/KV 与 kernel 设计。其 `3×` 成本、不同 GPU 上的 throughput 数字只属于论文设置。 --- ## 13. Q14–Q15:并行与 MoE Serving ### 13.1 四种并行的服务含义 - **TP**:一层权重分到多 GPU;降低单卡权重,但每层通信; - **PP**:层分 stage;可容纳超大模型,但小 batch / 不均匀 iteration 会有 bubble; - **DP**:复制模型实例;提高独立请求吞吐,但每副本要有权重; - **EP**:专家分设备;只算所选专家,却引入 dispatch / combine all-to-all。 训练时最优拓扑不必是 prefill 或 decode 最优拓扑。 ### 13.2 MoE 的三张隐藏账 1. **权重带宽**:小 batch 时每个激活专家权重仍需从 HBM 读取; 2. **通信**:token 要到专家所在 GPU,再 combine; 3. **倾斜**:热门专家决定 tail latency,平均 token 数无济于事。 DeepEP 提供高吞吐与低延迟两类 expert dispatch/combine 路径;DeepGEMM 提供 FP8/FP4、 fused MoE 等 kernel。它们是 P1 官方实现,不等于独立 peer-reviewed 性能结论。 一手来源: - [DeepSpeed-MoE](https://arxiv.org/abs/2201.05596) - [MegaBlocks](https://arxiv.org/abs/2211.15841) - [DeepEP](https://github.com/deepseek-ai/DeepEP) - [DeepGEMM](https://github.com/deepseek-ai/DeepGEMM) --- ## 14. Q16–Q17:调度、SLO、尾延迟与 Fleet ### 14.1 吞吐最大化与 SLO 最大化不同 把 batch 填满可能提高 tokens/s,却让: - 新请求 TTFT 变长; - 长 prefill 让 decode 停顿; - 短请求被长请求阻塞; - P99 越过 SLO。 因此 goodput 要把“及时完成”写入目标。 ### 14.2 缓存亲和与负载均衡冲突 ```text route to cache owner → 少 prefill,可能形成热点 route to idle replica → 队列短,可能 cache miss move KV → 两边折中,但支付网络与迁移 ``` Preble 在其 prompt-sharing workloads 中报告平均延迟 `1.5–14.5×`、P99 `2–10×` 改善; 范围巨大本身说明 workload 的 prefix sharing 才是因变量,不能抽出一个常数。 一手来源:[Preble](https://arxiv.org/abs/2407.00023) ### 14.3 迁移与重调度 Llumnix 把正在运行请求及其 in-memory state 迁移到其他 instance,用于负载均衡、碎片整理、 优先级与 SLO 隔离。迁移不是免费:收益必须超过 KV copy、网络和同步成本。 一手来源:[Llumnix, OSDI 2024](https://arxiv.org/abs/2406.03243) ### 14.4 过载时“全接收”不是中立政策 如果到达率长期超过可服务率,队列只会增长。Mooncake 使用预测式 early rejection;K3 进一步 按请求类别设置 resource budget,让百万 token burst 不拖垮短请求。 页面必须解释: - admission control 是容量保护,不是模型能力; - rejection rate、goodput 与用户公平需要一起报告; - 平均 request 不能代表 2K 与 1M token 混合流量。 --- ## 15. Q18:DeepSeek 推理服务谱系 DeepSeek 的主线不是单一“更低精度”,而是四层协同: ```text V2:MLA 压 KV + DeepSeekMoE ↓ V3:MLA/MoE + prefill/decode 分离 + 冗余专家 + MTP ↓ V3.2:DSA 用 lightning indexer 选择少量 KV ↓ V4:CSA/HCA + heterogeneous cache + on-disk prefix + FP4 QAT ``` ### 15.1 DeepSeek-V2:先改模型状态 MLA 缓存低维 latent 表示,而非完整 head-specific K/V;DeepSeekMoE 降低每 token 激活计算。 这是模型结构层的成本改变,仍需要引擎与 kernel 才能兑现。 一手来源:[DeepSeek-V2](https://arxiv.org/abs/2405.04434) ### 15.2 DeepSeek-V3:公开写出两套部署拓扑 报告 §3.4: - prefill 最小单元 `4 nodes / 32 GPUs`; - attention `TP4 + SP + DP8`,MoE `EP32`; - 部署 `32` 个冗余专家,每 GPU 原 8 个外再放 1 个; - decode 最小单元 `40 nodes / 320 GPUs`; - attention `TP4 + SP + DP80`,MoE `EP320`; - decode 每 expert batch 通常不超过 `256 tokens`,作者称瓶颈是 memory access; - 两个 micro-batches 交错 attention 与 dispatch/MoE/combine。 这些是 DeepSeek 的 H800 / IB 生产策略,不是“小团队部署建议”。报告自己把最小部署单元很大列为限制。 MTP 在 V3 的主要目的为训练,推理可丢弃;也可改作 speculative decoding。报告结尾的 `1.8×` decode speed 是预期/探索语境,不能写成已经完整公开的通用生产基准。 一手来源:[DeepSeek-V3](https://arxiv.org/abs/2412.19437) ### 15.3 DeepSeek-V3.2:稀疏索引与真实服务成本 DSA 主 attention 从 `O(L²)` 变 `O(Lk)`,lightning indexer 仍有 `O(L²)` 但更轻。 报告 Figure 3 给出基于 H800 实际服务 benchmark、按 `$2/GPU-hour` 估算的 token-position cost; 云租价是作者设定,不是全球现价。 一手来源:[DeepSeek-V3.2](https://arxiv.org/abs/2512.02556) ### 15.4 DeepSeek-V4:PagedAttention 的假设被混合 cache 打破 V4 同时有: - SWA 的固定窗口 state; - CSA / HCA 的不同压缩比; - 未到压缩边界的 tail state; - lightning indexer 自己的 KV; - 不同 layer 的 block 数、hit / eviction policy。 因此报告设计: 1. fixed-size **state cache** 管 SWA 与未压缩 tail; 2. classical **KV cache** 管 CSA/HCA 压缩条目; 3. cache block 覆盖 `lcm(m, m')` 个原 token; 4. sparse kernel 与 layout 共设计; 5. on-disk prefix cache 对 CSA/HCA 全存,对 SWA 提供 full / periodic checkpoint / zero-cache 三种权衡。 在 1M context 的作者估算中,V4-Pro 相对 V3.2 为 `27%` single-token equivalent FP8 FLOPs 与 `10%` KV cache;V4-Flash 为 `10%` FLOPs 与 `7%` KV。只可用于同报告的架构估算对照。 FP4 QAT 覆盖 MoE expert weights 与 CSA indexer QK path;报告的 selector `2×`、`99.7%` KV recall 是特定组件指标,不能写成整个模型 2×。 一手来源:[DeepSeek-V4](https://arxiv.org/abs/2606.19348) ### 15.5 DeepSeek 官方内核生态 - [FlashMLA](https://github.com/deepseek-ai/FlashMLA):dense/sparse MLA prefill/decode、FP8 KV; - [DeepGEMM](https://github.com/deepseek-ai/DeepGEMM):FP8/FP4/BF16、MoE、indexer 等; - [DeepEP](https://github.com/deepseek-ai/DeepEP):expert dispatch/combine; - [open-infra-index](https://github.com/deepseek-ai/open-infra-index):官方基础设施索引。 仓库当前 benchmark 会随 commit、CUDA 和 GPU 变化;页面引用功能边界,不把 README 最新数字 倒灌为早期模型报告事实。 --- ## 16. Kimi / Moonshot 推理服务谱系 ```text Mooncake:KV-centric PD disaggregation ↓ Kimi K2 / K2.5:MLA + 大规模 MoE 的服务约束 ↓ Kimi Linear:KDA 固定 recurrent state ↓ Kimi K3:KDA/MLA hybrid cache + replay decode + fleet policy ``` ### 16.1 Mooncake:先把 KV 变成集群一等公民 Mooncake: - 分离 prefill 与 decode clusters; - 利用 GPU 集群中未充分使用的 CPU、DRAM、SSD; - 用 Transfer Engine 搬运 KV; - 调度器同时优化 effective throughput 与 latency SLO; - 过载时预测式 early rejection。 这条路线后来也服务 K3 的训练 activation remote offload,但训练复用不应覆盖本章的 serving 起点。 一手来源: - [Mooncake paper](https://arxiv.org/abs/2407.00079) - [Mooncake repository](https://github.com/kvcache-ai/Mooncake) ### 16.2 Kimi K2:服务约束反向影响架构搜索 K2 报告在架构对照中明确考虑 attention heads 与 active experts 的 inference overhead; 其 serving 图来自性能模拟器与 effective-parameter construction,不是真实生产 A/B。 因此页面只用 K2 说明“架构搜索包含服务成本”,不把模拟值当线上吞吐。 一手来源:[Kimi K2](https://arxiv.org/abs/2507.20534) ### 16.3 K3:两种 cache 必须在同一边界恢复 每个 K3 block 为 `3 KDA + 1 Gated MLA`: - MLA KV 随 token 增长并分页; - KDA 每层是固定大小 recurrent state; - prefix hit 只有同时恢复二者才合法。 K3 §5.4.1 把两类 page 放进统一 byte-size block pool,共享 allocation、reference counting 与 eviction; 但类型和生命周期仍不同,不能说“KDA state 就是 KV”。 ### 16.4 物理块、hash 块和 checkpoint 解耦 若 KDA state 很大,只能稀疏存 checkpoint,物理块被迫达到 `1024–6144 tokens`;若 hash granularity 也跟物理块绑定,小请求几乎无法命中。 K3 的解法: ```text physical page:可很大,例如 6144 tokens hash block:细粒度,例如 512 tokens KDA checkpoint:只在部分 hash endpoints 持久化 hit boundary:MLA prefix 命中且所有 KDA groups 都有 checkpoint 的最长边界 ``` 报告 Figure 12 的教学案例: ```text 6144-token physical page 12 × 512-token hash blocks request 前 2800 token 相同 合法 hit boundary = 2560 = 5 × 512 ``` 这是报告示例,不代表所有生产配置固定使用 6144/512。 ### 16.5 并发一致性 K3 报告明确处理: - 命中页在所有 cache groups 先 pin,再分配; - 当前 scheduling step 刚 copy / register 的 block 暂不允许匹配; - 任一 KDA group 驱逐 checkpoint,兄弟 checkpoint 原子失效; - hit state 只读,恢复到请求私有 running state,避免原地污染共享前缀。 这说明 prefix cache 的难点不只是 hash,而是“命中状态是否真的对应那个 token prefix”。 ### 16.6 KDA speculative decode 不能直接回滚 KDA state 每步原地更新。若 draft 后半被拒绝,state 已越过最后 accepted token。 逐 draft position 保存完整 state 会让 state traffic 爆炸。 K3 §5.4.2: - 只 cache 比 state 小得多的 projected inputs; - verification 后在片上 replay accepted tokens; - 写回 verified 与 bonus token state; - convolution、normalization、gate、KDA recurrence 融进同一 loop。 这与 ReplaySSM concurrent work 独立提出的思路相呼应。 ### 16.7 MTP → EAGLE-3 draft K3: - 预训练有一层 MTP; - post-training 冻结 target,只微调 draft layer 与 feature-fusion projection; - EAGLE-3 draft 融合第 1、4、最后 AttnRes block 的低/中/高层特征; - training-time draft unroll 7 steps; - 直接最小化 ```text L_LK = -log Σ_x min(p(x), q(x)) ``` 即 acceptance mass 的负对数,而非只用 KL surrogate。报告没有公开整套生产 speedup 常数, 页面不自行补数。 ### 16.8 Deployment-aware post-training K3 从 SFT 起对 MoE expert weights 做 MXFP4、expert input activations 做 MXFP8 QAT; non-expert modules 保持更高精度。RL rollout 与 training 使用同一量化 scheme,目标是减少 train–inference mismatch。 这不是“全模型 FP4”,也不是 weight-only PTQ。 ### 16.9 Fleet 两条政策 1. **cache-aware affinity** - 报告举例:典型 coding input 有 400K prefix,只增 4K prefill; - primary cluster 保 cache; - consistent hash 预分配 secondary,故障时 secondary 重做 prefill; - secondary assignments 在 fleet 分散,避免一个故障把重算压到单点。 2. **budget-based admission** - 短请求 `<2K` 与最长 `1M` 成本跨度约三阶; - 不再用“平均请求”规划; - 不同 request classes 独立 resource budget; - long-context burst 只能消耗自己的份额。 一手来源: - [Kimi K3](https://arxiv.org/abs/2607.24653) - [Kimi K3 official repository](https://github.com/MoonshotAI/Kimi-K3) - [FlashKDA](https://github.com/MoonshotAI/FlashKDA) --- ## 17. 一条清晰的历史脉络 ### Wave A · 2019–2021:先理解生成式推理的内存墙 - MQA 减少 KV heads; - Clockwork 把可预测执行与 SLO 隔离带入模型 serving; - 通用 TP/PP 与 inference engine 证明超大模型可以跨设备跑。 ### Wave B · 2022:服务粒度从“请求”降到“token iteration” - Orca iteration-level scheduling; - FlashAttention 从 IO 重排 exact attention; - LLM.int8 与 DeepSpeed-MoE 打开低精度 / 稀疏服务路线; - speculative decoding 证明可以保持 target distribution。 ### Wave C · 2023:LLM 专用内存管理形成 - FlexGen 用 GPU/CPU/disk offload 提高单 GPU throughput; - vLLM / PagedAttention 把 KV 变成分页对象; - FastServe 做可抢占; - SpecInfer、GPTQ、AWQ; - CacheGen 开始把 KV 当可压缩、可运输数据; - SGLang 把结构化程序和 radix cache 接起来。 ### Wave D · 2024:单机优化进入阶段分离和缓存网络 - Splitwise / DistServe / Mooncake; - Sarathi chunked prefill; - Hydragen / ChunkAttention / CacheBlend; - KVQuant / KIVI / QServe; - Medusa / EAGLE / EAGLE-2; - DeepSeek-V2 MLA、V3 公开部署拓扑。 ### Wave E · 2025:kernel runtime 与 model draft 更深共设计 - FlashInfer; - EAGLE-3; - FlashMLA / DeepGEMM / DeepEP; - DeepSeek-V3.2 DSA; - Kimi Linear 固定状态。 ### Wave F · 2026:混合状态、百万上下文与 fleet policy - DeepSeek-V4 heterogeneous cache + on-disk prefix + FP4; - Kimi K3 KDA/MLA joint cache、state replay、cache affinity、budget admission。 --- ## 18. 正式论文 / 系统链(62 个节点) | # | 年份 | 节点 | URL | 本章角色 | |---:|---:|---|---|---| | 01 | 2019 | Fast Transformer Decoding / MQA | https://arxiv.org/abs/1911.02150 | KV heads | | 02 | 2020 | Clockwork | https://www.usenix.org/conference/osdi20/presentation/gujarati | SLO / predictability | | 03 | 2022 | DeepSpeed-MoE | https://arxiv.org/abs/2201.05596 | MoE inference | | 04 | 2022 | FlashAttention | https://arxiv.org/abs/2205.14135 | IO-aware exact attention | | 05 | 2022 | ZeRO-Inference | https://arxiv.org/abs/2207.00032 | weight offload | | 06 | 2022 | Orca | https://www.usenix.org/conference/osdi22/presentation/yu | iteration scheduling | | 07 | 2022 | LLM.int8 | https://arxiv.org/abs/2208.07339 | outlier-aware INT8 | | 08 | 2022 | Petals | https://arxiv.org/abs/2209.01188 | distributed pipeline | | 09 | 2022 | GPTQ | https://arxiv.org/abs/2210.17323 | weight-only PTQ | | 10 | 2022 | SmoothQuant | https://arxiv.org/abs/2211.10438 | W8A8 | | 11 | 2022 | Speculative Decoding | https://arxiv.org/abs/2211.17192 | lossless draft / verify | | 12 | 2023 | Speculative Sampling | https://arxiv.org/abs/2302.01318 | modified rejection | | 13 | 2023 | AlpaServe | https://arxiv.org/abs/2302.11665 | model-parallel multiplexing | | 14 | 2023 | FlexGen | https://arxiv.org/abs/2303.06865 | GPU/CPU/disk offload | | 15 | 2023 | FastServe | https://arxiv.org/abs/2305.05920 | preemptive scheduling | | 16 | 2023 | SpecInfer | https://arxiv.org/abs/2305.09781 | tree verification | | 17 | 2023 | AWQ | https://arxiv.org/abs/2306.00978 | activation-aware W4 | | 18 | 2023 | H2O | https://arxiv.org/abs/2306.14048 | approximate KV eviction | | 19 | 2023 | FlashAttention-2 | https://arxiv.org/abs/2307.08691 | work partition | | 20 | 2023 | vLLM / PagedAttention | https://arxiv.org/abs/2309.06180 | paged KV | | 21 | 2023 | StreamingLLM | https://arxiv.org/abs/2309.17453 | streaming KV policy | | 22 | 2023 | CacheGen | https://arxiv.org/abs/2310.07240 | KV compression / streaming | | 23 | 2023 | Prompt Cache | https://arxiv.org/abs/2311.04934 | modular reuse | | 24 | 2023 | REST | https://arxiv.org/abs/2311.08252 | retrieval draft | | 25 | 2023 | Splitwise | https://arxiv.org/abs/2311.18677 | phase splitting | | 26 | 2023 | SGLang | https://arxiv.org/abs/2312.07104 | RadixAttention | | 27 | 2024 | DistServe | https://arxiv.org/abs/2401.09670 | PD goodput | | 28 | 2024 | Medusa | https://arxiv.org/abs/2401.10774 | multi-token heads | | 29 | 2024 | EAGLE | https://arxiv.org/abs/2401.15077 | feature draft | | 30 | 2024 | BurstGPT | https://arxiv.org/abs/2401.17644 | workload trace | | 31 | 2024 | KVQuant | https://arxiv.org/abs/2401.18079 | low-bit KV | | 32 | 2024 | KIVI | https://arxiv.org/abs/2402.02750 | asymmetric 2-bit KV | | 33 | 2024 | Hydragen | https://arxiv.org/abs/2402.05099 | shared-prefix batch | | 34 | 2024 | ChunkAttention | https://arxiv.org/abs/2402.15220 | prefix-aware attention | | 35 | 2024 | Lookahead Decoding | https://arxiv.org/abs/2402.02057 | parallel n-gram verification | | 36 | 2024 | Sarathi-Serve | https://arxiv.org/abs/2403.02310 | chunked prefill | | 37 | 2024 | LayerSkip | https://arxiv.org/abs/2404.16710 | self-speculative exit | | 38 | 2024 | SnapKV | https://arxiv.org/abs/2404.14469 | approximate KV compression | | 39 | 2024 | DeepSeek-V2 | https://arxiv.org/abs/2405.04434 | MLA | | 40 | 2024 | QServe | https://arxiv.org/abs/2405.04532 | W4A8KV4 | | 41 | 2024 | CacheBlend | https://arxiv.org/abs/2405.16444 | non-prefix reuse | | 42 | 2024 | PyramidKV | https://arxiv.org/abs/2406.02069 | layerwise KV budget | | 43 | 2024 | Llumnix | https://arxiv.org/abs/2406.03243 | live migration | | 44 | 2024 | Quest | https://arxiv.org/abs/2406.10774 | query-aware KV sparsity | | 45 | 2024 | EAGLE-2 | https://arxiv.org/abs/2406.16858 | dynamic draft tree | | 46 | 2024 | MemServe | https://arxiv.org/abs/2406.17565 | elastic memory pool | | 47 | 2024 | InfiniGen | https://arxiv.org/abs/2406.19707 | dynamic KV management | | 48 | 2024 | Preble | https://arxiv.org/abs/2407.00023 | distributed prompt scheduling | | 49 | 2024 | Mooncake | https://arxiv.org/abs/2407.00079 | KV-centric disaggregation | | 50 | 2024 | FlashAttention-3 | https://arxiv.org/abs/2407.08608 | Hopper attention | | 51 | 2024 | DeepSeek-V3 | https://arxiv.org/abs/2412.19437 | PD / redundant experts / MTP | | 52 | 2025 | FlashInfer | https://arxiv.org/abs/2501.01005 | inference attention engine | | 53 | 2025 | EAGLE-3 | https://arxiv.org/abs/2503.01840 | multi-layer draft | | 54 | 2025 | DeepGEMM | https://github.com/deepseek-ai/DeepGEMM | low-precision kernels | | 55 | 2025 | FlashMLA | https://github.com/deepseek-ai/FlashMLA | MLA kernels | | 56 | 2025 | DeepEP | https://github.com/deepseek-ai/DeepEP | expert communication | | 57 | 2025 | Kimi K2 | https://arxiv.org/abs/2507.20534 | architecture-cost co-design | | 58 | 2025 | Kimi Linear | https://arxiv.org/abs/2510.26692 | fixed recurrent state | | 59 | 2025 | DeepSeek-V3.2 | https://arxiv.org/abs/2512.02556 | DSA serving cost | | 60 | 2026 | Kimi K2.5 | https://arxiv.org/abs/2602.02276 | multimodal / agent traffic | | 61 | 2026 | DeepSeek-V4 | https://arxiv.org/abs/2606.19348 | heterogeneous cache / FP4 | | 62 | 2026 | Kimi K3 | https://arxiv.org/abs/2607.24653 | hybrid cache / fleet | --- ## 19. 十五张原创视觉合同 1. **四层服务栈**:模型—引擎—内核—fleet; 2. **请求时钟**:queue → prefill → first token → streaming decode; 3. **KV 公式拆箱图**:batch、length、layers、heads、head dim、bytes; 4. **MHA/MQA/GQA/MLA/KDA 状态对照**; 5. **连续预留 vs paged allocator**; 6. **prefill / decode roofline 直觉图**; 7. **request batching → iteration batching → chunked prefill**; 8. **common-prefix radix tree 与 copy-on-write**; 9. **PD 分离的计算流与 KV 运输流**; 10. **speculative draft / verify / accept / correction 状态机**; 11. **W/A/KV 量化对象分层图**; 12. **TP/PP/DP/EP 服务拓扑对照**; 13. **DeepSeek V2→V4 四层谱系**; 14. **Mooncake→K3 hybrid cache 谱系**; 15. **缓存亲和与预算准入的 fleet 双目标图**。 图表规范: - 全部为原创 HTML/CSS/SVG 重绘; - 不复制论文原图; - 每张注明“结构示意 / 解析模型 / 依据报告机制重绘”; - 作者报告数字紧邻来源与设置; - 页面颜色:蓝=状态流,铜=资源选择,绿=SLO/验证,紫=集群状态。 --- ## 20. 四联交互实验合同 ### Lab A · Memory & KV 输入: - model parameters、weight bits; - layers、Q heads、KV heads、head dim; - attention preset:MHA / GQA / MLA teaching ratio / KDA hybrid; - context length、concurrency、KV bits、block size; - GPU HBM。 输出: - weight GiB; - KV KiB/token/request; - active KV GiB; - paged internal waste; - theoretical concurrency; - 状态:FIT / KV-LIMITED / OOM。 边界:MLA ratio 与 KDA state size 为显式教学假设;不冒充具体 checkpoint 精确配置。 ### Lab B · Batch & Phase 输入: - short/long prompt mix; - decode length; - strategy:static / continuous / chunked / PD; - batch token budget、chunk size; - prefill/decode capacity; - TTFT / TPOT SLO。 输出: - analytic TTFT / TPOT; - head-of-line stall; - request throughput; - SLO goodput; - bottleneck phase。 边界:离散事件教学模拟,不是 vLLM/Sarathi/DistServe 实测复现。 ### Lab C · Speculative 输入: - draft length `k`; - acceptance `a`; - draft cost / token; - target step cost; - parallel verification cost; - mode:independent LM / Medusa / EAGLE-3 教学 preset。 输出: - `E[tokens]`; - expected accepted draft; - toy speedup; - wasted draft; - 最优 `k` 扫描; - NO GAIN 警告。 边界:独立 acceptance 是教学假设;不把 preset 当作者 benchmark。 ### Lab D · Cache & Fleet 输入: - prefix length / increment; - hit rate; - clusters; - routing:round-robin / cache-affinity; - secondary failure; - short / long budgets; - long-request burst。 输出: - avoided prefill tokens; - hot-cluster skew; - failover recompute; - short-request SLO; - admitted / rejected; - policy recommendation。 边界:K3 的 400K+4K 只作为报告案例 preset;模拟值不代表 Kimi 线上容量。 --- ## 21. 二十个正文必须纠正的误解 1. **“显存放得下权重就能服务。”** KV、workspace 和并发才刚开始。 2. **“峰值 FLOPs 能直接推 tokens/s。”** decode 常受 HBM 和通信限制。 3. **“prefill 与 decode 只是同一 forward 的长短版。”** shape、并行与指标不同。 4. **“batch 越大所有用户越快。”** throughput 与 TTFT / TPOT 冲突。 5. **“continuous batching 是一个固定算法。”** 准入、抢占和 token budget 都是策略。 6. **“PagedAttention 降低 attention FLOPs。”** 它首先改内存分配。 7. **“PagedAttention 零碎片。”** 最后 block 仍有内部碎片。 8. **“KV 只由 context length 决定。”** batch、layers、KV heads、dim、precision 都参与。 9. **“GQA、MLA、KDA 是同一种 KV 压缩。”** 它们保留的状态不同。 10. **“相同文本块就能复用 KV。”** 前序上下文与位置改变状态。 11. **“prefix hit rate 是模型属性。”** 它首先是产品流量属性。 12. **“PD 分离一定降本。”** 网络、布局转换与队列可能反噬。 13. **“4-bit 一定比 8-bit 快。”** 没有 kernel path 时可能更慢。 14. **“weight quantization 会压 KV。”** 对象不同。 15. **“speculative decoding 固定加速 2–3×。”** 接受率和 batch 决定净收益。 16. **“draft 越小越好。”** 太弱会让 acceptance 崩溃。 17. **“MoE 只激活少量参数,所以天然便宜。”** 权重带宽和 all-to-all 仍昂贵。 18. **“平均 latency 代表体验。”** burst 和长请求首先出现在 P99。 19. **“tokens/s 就是 goodput。”** 过 SLO 的 token 仍消耗 GPU。 20. **“技术报告数字可以横向排名。”** 硬件、负载、SLO 和基线必须对齐。 --- ## 22. 仍然开放的问题 1. K3 KDA/MLA unified page pool 的真实 page bytes、不同模型配置与命中分布未公开; 2. K3 projected-input replay 相对 state snapshots 的完整 latency / bandwidth 曲线未公开; 3. K3 EAGLE-3 draft 的 production acceptance / throughput / tail latency 未公开; 4. K3 budget classes、配额比例与真实 rejection traces 未公开; 5. DeepSeek-V4 三种 SWA on-disk policy 的生产选择分布未公开; 6. DeepSeek-V4 FP4 QAT 的端到端在线质量 / latency / power 消融仍有限; 7. 多模态视觉 Token、tool pauses、Agent KV retention 对传统 serving traces 的影响仍需真实数据; 8. 不同 runtime 对同一 checkpoint 的公平 benchmark 需要冻结 commit、CUDA、kernel 和 sampling; 9. 量化对 function calling、代码 diff、长 Agent 轨迹的细粒度回归证据不足; 10. prefix cache 的隐私、跨租户 side channel 与删除语义需单独安全章节。 --- ## 23. 本地核验清单 本轮完整下载并抽取 26 份新增论文 PDF/TXT: ```text 2211.17192 speculative decoding 2302.01318 speculative sampling 2303.06865 FlexGen 2305.05920 FastServe 2305.09781 SpecInfer 2309.06180 vLLM / PagedAttention 2310.07240 CacheGen 2311.18677 Splitwise 2312.07104 SGLang 2401.09670 DistServe 2401.10774 Medusa 2401.15077 EAGLE 2401.18079 KVQuant 2402.02750 KIVI 2402.05099 Hydragen 2402.15220 ChunkAttention 2403.02310 Sarathi-Serve 2405.04532 QServe 2405.16444 CacheBlend 2406.03243 Llumnix 2406.16858 EAGLE-2 2406.17565 MemServe 2407.00023 Preble 2407.00079 Mooncake 2501.01005 FlashInfer 2503.01840 EAGLE-3 ``` `2302.11665` AlpaServe 本轮 PDF 下载不完整,正式节点只依据 canonical arXiv 页面定位, 不计入“本地完整 PDF”数字。 复用已有完整缓存: - FlashAttention / FlashAttention-2; - LLM.int8 / GPTQ / SmoothQuant / AWQ; - DeepSpeed-MoE / MegaBlocks / DeepEP; - DeepSeek-V2 / V3 / V3.2 / V4; - Kimi K2 / K2.5 / Kimi Linear / K3。 --- ## 24. 章节发布闸门 - [ ] 18 张账在页面首屏可见; - [ ] 62 个正式节点逐项链接; - [ ] TTFT / TPOT / throughput / goodput 首次出现即区分; - [ ] KV 公式可由交互实验复算; - [ ] PagedAttention 不写成 FLOPs 优化或零碎片; - [ ] prefill / decode 的“常见 regime”不写成不可变定律; - [ ] prefix / non-prefix reuse 分开; - [ ] PD 收益与 KV transfer cost 同图; - [ ] speculative exactness、接受率和 toy 假设明确; - [ ] W / A / KV 量化分开; - [ ] DeepSeek V2→V4 四层谱系独立高亮; - [ ] Mooncake→K3 hybrid cache 独立高亮; - [ ] 所有作者 speedup 带设置与“作者报告”标签; - [ ] 四个实验均支持键盘 tabs; - [ ] 390px 无文档级横向溢出; - [ ] 全站链接、构建与既有专题回归通过。