Kimi K3 在 vLLM 中的效能優化
vLLM 已針對 Kimi K3 實施了一系列全面的效能優化,實現了高達 2.8 倍的吞吐量提升,並將首字延遲 (TTFT) 降低了高達 85%。這些改進是透過解決整個服務堆疊中的瓶頸來實現的,包括 KDA 遞迴狀態、LatentMoE、MXFP4 專家核心 (expert kernels) 以及投機解碼 (speculative decoding)。
Serving 效能增益
在 B300 節點 (CUDA 13.3) 上使用 8K/1K 工作負載、TP8 以及八個 token 的 DSpark 投機解碼進行測量的優化結果顯示,將 vLLM v0.27.1 與 9 月 13 日的主分支提交 (82a85dc1) 進行比較時,有顯著的增益。
| Concurrency | v0.27.1 平均延遲 (s) | 0913 main 平均延遲 (s) | v0.27.1 吞吐量 (tok/s) | 0913 main 吞吐量 (tok/s) | v0.27.1 平均 TTFT (ms) | 0913 main 平均 TTFT (ms) |
|---|---|---|---|---|---|---|
| 1 | 12.37 | 5.30 (−57.2%) | 83.3 | 183.3 (+120.0%) | 2262.9 | 376.3 (−83.4%) |
| 4 | 23.67 | 10.50 (−55.6%) | 166.7 | 416.7 (+150.0%) | 2314.9 | 640.5 (−72.3%) |
| 16 | 55.90 | 22.17 (−60.3%) | 258.3 | 725.0 (+180.6%) | 7601.1 | 1121.0 (−85.3%) |
關鍵技術優化
Adaptive Scheduling Budget
為防止低請求數時 max_num_batched_tokens 未被充分利用,vLLM 引入了自適應調度 token 預算 (adaptive scheduled-token budget)。此策略確保在請求數較少時,單個請求不會被拆分到多次前向傳播呼叫中,從而在 8K/1K 工作負載下將 TTFT 降低了 55%–65%,並將吞吐量提升了高達 41.5%。
Internal KDA Prefix Checkpoints
先前,Mamba 風格的 prefix cache 拆分需要對短後綴進行第二次完整的模型傳播。vLLM 現在支持在單次 prefill pass 中進行 checkpoint 匯出。對於 8K 輸入,這允許一次 FlashKDA 呼叫即可處理所有 8,000 個 token 並在同一次遞迴中於 token 7,680 處匯出 checkpoint 狀態,從而避免了對 attention、MoE、routing 和 TP collectives 的第二次傳播。這將 TTFT 降低了 9%–25%。
Zero-Copy Mixed KDA Batches
包含投機與非投機 token 的混合 batch 之前每層都需要多次 index_select 和 index_copy_ 操作。vLLM 實施了連續的零拷貝切片 (zero-copy slices) 和直接輸出寫入,這在 concurrency 4 和 16 時將吞吐量提升了 5.2%–7.7%。
Deferred MXFP4 Finalization
透過將 MXFP4 top-k finalization 融合進 latent-tail kernel,vLLM 移除了一个 kernel launch 並且避免了寫入與重讀中間 tensor 的需求,從而將端到端延遲降低了約 5%。
進階記憶體與狀態管理
ReplaySSM for 狀態重建
投機解碼通常需要在每個 draft position 於 KDA 遞迴狀態中寫入狀態,以便進行回滾 (rollbacks)。ReplaySSM 透過緩衝最近的 SSM inputs 並僅在 commit point 處重建被接受的狀態,優化了這一點。對於在 Model Runner V2 上的 Kimi K3,這在 TP8 下將有效快取容量 (effective cache capacity) 提升了 10.97%,且不影響準確度。
PD Disaggregation 與 Hybrid State Offload
vLLM 現在支持 Kimi K3 的 PD disaggregation 與 cache offload,這需要轉移 MLA KV 與 KDA 狀態。由於 KDA 狀態是按 head 和 dimension 進行分片 (sharded) 的,且 Mamba align block tables 可以是稀疏且可變的,vLLM 利用 Mooncake 來存儲由調度器選擇的邊界狀態,並將其固定 (pin) 直到每個 rank 上的非同步寫入完成。
Decode Context Parallelism (DCP)
由於 Tensor Parallelism (TP) 會在每個 rank 上複製 MLA latent KV,因此它不會增加 KV-cache 容量。Decode Context Parallelism (DCP) 則是在序列維度上對 KV-cache 進行分片。對於 Kimi K3 的融合 MLA 路徑,DCP 使用 Symmetric-memory A2A 進行輸出/LSE 歸約 (reduction),並使用 NVLS multicast 進行 query 收集 (gathering)。
在 120k-token 工作負載 (114k shared prefix, 6k suffix, 6k suffix, 400 output tokens) 下,KV-cache 容量從 1.93M 提升至 19.75M tokens,而 concurrency 1 時的 TPOT p50 從 13.8 ms 降低至 10.5 ms。
更廣泛的實施 Erforts
效能提升是透過涉及記憶體佈局、序列與管線並行 (pipeline parallelism)、KDA prefill 以及強化小 batch GPU 路徑的廣泛工作所達成的。這包括集成了 DeepEPv2 與 DeepGEMM MXFP4 以及 sequence-parallel GEMM 路徑,如 GitHub issue #50587 所記錄的。