vLLM AgentX 發布:優化現實世界中的代理服務
TL;DR
vLLM 引入了一套協調的 KV 缓存、平行處理和排程改進,將代理服務提升至每 GPU 秒 130K 個總 token,並在服務成本上相比 Opus 5 API 定價實現 14.6×–106× 的優勢。
代理工作負載特徵
- 中位數會話長度:43 轉。
- 中位數輸入上下文:142K token;中位數輸出:444 token。
- 前綴快取命中率:>96%。
- 44% 的會話包含子代理,中位數為四次子代理執行。
這些數字來自 SemiAnalysis 的 AgentX 基準測試,該測試捕捉了現實世界中的程式碼助理追蹤資料。每一轉都會將最新的工具結果附加到累積的上下文中,因此輸入持續增長,僅新增短暫的預填入,而大部分請求都是先前見過的前綴。
服務代理的核心挑戰
- 前綴快取壓力 – 每一轉都必須重播完整對話,導致跨 GPU 和副本的頻繁 KV 快取卸載。
- 執行效率 – 長上下文與緊密的延遲 SLO 要求更高的每 token 吞吐量和更低的解碼延遲。
- P/D 比例選擇 – 不同的上下文長度和快取命中率使得在併發情況下難以選擇最佳的預填入-解碼(P/D)平衡。
全棧優化方法
vLLM 在三個層面(資料、執行、控制)解決這三個挑戰。
資料層 – 溫熱、接近計算的 KV 快取
混合 KV 快取管理器
- 使用統一的記憶體頁面作為所有注意力類型(完整、滑動視窗、線性)的配置單位。
- 維護單一共享的 block pool,允許根據併發性和前綴重用模式動態重新配置。
- 以壓縮佈局取代每類型的碎片化配置(例如 DeepSeek V4 的 92 個張量),在啟用 FP4 索引時可減少約 10% 的填充與 P/D 傳輸開銷。
分層 KV 快取卸載
- 整合 Mooncake Store 作為具有 CPU 記憶體與磁碟層的分散式 KV 快取池。
- 支援模型對齊,適用於稀疏、壓縮與線性注意力。
- 實作兩種保留策略以保留高命中率前綴:
- 基於間隔的保留 – 每一轉保存提示結尾的快取。
- Marconi 風格的選擇性保留 – 當前綴第二次被觀察到時保存檢查點。
- 優化(PR #46188, #45444, #45659, #47317)降低了 CPU 查詢成本,並將工作移出排程器的關鍵路徑。
執行層 – 更快的 token 生成
模型特定的平行處理
- Kimi K3 – 使用 解碼上下文平行處理(DCP) 取代張量平行處理。DCP 沿序列維度切分 KV,降低解碼延遲並提升 KV 容量。對稱記憶體緩衝區融合查詢收集與部分輸出歸約,將每層延遲降低約 13%。
- DeepSeek V4 – 預填入上下文平行處理(PCP)在長提示(32K 提示)上表現優於 TP(2.65× 加速)。混合工作負載的預設為資料+專家平行處理(DEP),因為 DCP 會產生過多通訊開銷。
混合流量排程
- 頭部阻塞緩解 –
--long-prefill-token-threshold限制每步的 token 數量(例如 512),使短快取轉換可與長預填入交錯,提升每 GPU 秒總 token 數最多達 93%,P90 互動性提升約 2.3×。 - DEP 預填入節奏對齊 –
--prefill-schedule-interval將預填入在各 rank 上同步到相同引擎步驟,釋放中間步驟專用於純解碼,減少鎖步停頓。
控制層 – 最佳 P/D 分離
- 階段 1:飽和分析 – 在不同平行處理策略與 GPU 數量下,基準測試僅預填入與僅解碼配置,以取得每秒最大請求量限制。
- 階段 2:P/D 探索 – 結合最佳預填入與解碼配置,調整 P/D 比例,測量完整部署下的延遲-成本權衡。
開源核心貢獻
- MiniMax M3 – CuteDSL 長上下文索引器(+3%–31% 延遲),MSA top-k 路徑(最差情況加速最高達 4×),預測性驗證路徑(解碼吞吐量提升 20%)。
- Kimi K3 – GEMM 與 reduce-scatter 融合,潛在尾部 MoE 融合(延遲降低約 5%)。
- DeepSeek V4 – MXFP4 MoE 與 HCA 壓縮改進,多串流 C4A,基於叢集的 top-k。
所有補丁均可在 vLLM 倉庫中公開取得。
AgentX 上的效能結果
| 模型 | GPU / 併發數 | 每 GPU 秒總 token 數(TPGS)@ P90 > 50 tok/s | P90 互動性 |
|---|---|---|---|
| DeepSeek V4 Pro 1.6T | 12 GB300 GPU / 256 | 83K | 58.3 tok/s |
| MiniMax M3 428B | 2 B300 GPU / 24 | 70K | 74.2 tok/s |
| Kimi K3 2.8T | 16 GB300 GPU / 48 | 11.8K | 62.7 tok/s |
與 Opus 5 的成本比較(保守快取命中假設):
| 模型 | GPU TCO/小時 | 相當於 Opus 5 成本/小時 | 成本優勢 |
|---|---|---|---|
| DeepSeek V4 Pro | $27.72 | $2,926 | 106× |
| MiniMax M3 | $4.52 | $384 | 85× |
| Kimi K3 | $36.96 | $538 | 14.6× |
優勢來自 >96% 的前綴快取重用,將快取 token 轉化為所有三種模型中的低成本運算。
學到的教訓(「苦澀」的)
- 流水線平行處理 適用於冷啟動、長預填入,但會為熱啟動、前綴密集的轉換增加延遲;不應作為代理流量的預設選項。
- DCP 不具通用性,對具有複雜稀疏注意力堆疊的模型(例如 DeepSeek V4)不適用;平行處理必須匹配模型架構。
- 僅負載平衡不足 – 會話感知的黏性路由可維持快取局部性,並在短轉換間隔下優於激進的佇列深度平衡。
未來路線圖
- 控制層路由 – 將第一轉(長新預填入)與後續轉(高快取重用)分離,避免頭部阻塞。
- 代理提示 API – 接受關於會話結構、工具呼叫延遲與分支點的元資料,以指導排程與快取驅逐。
- 可程式化 KV 快取 – 提供自訂預取、驅逐與軟鎖定策略的介面。
- 基於會話的 KV 遷移 – 在轉換間閒置時間預取 KV 狀態至下一工作節點,以隱藏傳輸延遲。
致謝
本工作由 Inferact 主導,並獲得 vLLM 社群、SemiAnalysis(基準設計與基礎設施)、以及硬體合作夥伴 NVIDIA 和 AMD 的廣泛貢獻。