vLLM Speculators: 用於推測解碼的並行草擬
vLLM Speculators: 用於推測解碼的並行草擬
vLLM 與 Speculators 專案已推出三種並行草擬演算法——P-EAGLE、DFlash 和 DSpark——的開源支援,以克服傳統自回歸推測解碼的延遲瓶頸。透過在單次前向傳遞中預測完整的候選詞元區塊,這些方法將草擬延遲與推測詞元數量解耦,使得可以使用更具表達力的推測模型,並減少對手動參數調校的需求。
自回歸草擬的限制
傳統的推測解碼框架,例如 EAGLE 和 MTP,透過利用驗證模型的內部隱藏狀態來提升詞元接受率。然而,像 EAGLE-3 這樣的進階版本仍然依賴 自回歸草擬,其中推測模型必須為每個生成的詞元執行一次獨立的前向傳遞。
這種順序需求帶來了兩個主要的生產挑戰:
- 模型大小限制: 為防止草擬過程消耗驗證過程中節省的時間,推測模型必須保持極小且輕量。
- 運營複雜性: 由於草擬成本隨著詞元數量線性增加,工程團隊必須根據具體使用情況和實時伺服器負載,不斷調整推測長度(K)。
並行草擬:架構轉移
並行草擬透過在單次前向傳遞中並行預測候選詞元區塊,消除了順序執行。這種轉變帶來了兩個主要優勢:
- 表達力提升: 由於推測模型僅在每個區塊運行一次,開發者可以使用更大、更深的架構來捕捉更複雜的上下文,並在不增加延遲的情況下實現更高的接受率。
- 調校簡化: 將草擬成本與區塊長度解耦,消除了在伺服器負載波動時對推測參數進行超調校的運營負擔。
儘管早期的概念如 Medusa 和 PARD 已經探索過並行草擬,但 P-EAGLE、DFlash 和 DSpark 將此並行執行與深度驗證狀態條件結合。
P-EAGLE、DFlash 和 DSpark 的技術比較
這三種演算法都利用驗證模型的隱藏狀態來生成並行草擬,但它們在架構實現和訓練策略上有所不同。
P-EAGLE
P-EAGLE 將驗證模型的隱藏狀態作為輸入特徵,並同時將其映射到多個未來位置,以一步驟輸出一序列的候選詞元。為管理訓練成本,它使用 區塊稀疏化,以衰減的速率在前瞻維度(K)上捨棄詞元,將優化重點放在最關鍵的即時詞元上。
DFlash
DFlash 將驗證模型的隱藏狀態進行投影,並直接注入到推測模型的 KV-cache 中。這種方式在不增加輸入序列長度的情況下,將推測模型的注意力機制條件化為驗證模型的狀態,並利用區塊擴散生成候選詞元。在訓練階段,DFlash 使用 序列長度稀疏化,僅在序列上的隨機錨點計算區塊預測,以保留 GPU 記憶體。
DSpark
DSpark 在 DFlash 的基礎上增加了兩項增強:
- 自回歸校正頭: 一個輕量級的頭,使未來詞元能夠更強烈地條件化於過去詞元,結合並行吞吐量與序列一致性。
- 信心頭: 一種機制,在詞元到達驗證器之前對草擬詞元進行評分,僅轉發那些可能被接受的詞元,以減少浪費的驗證計算並提升吞吐量。
推論效能與基準測試
並行草擬演算法在各種模型和任務上相較於 EAGLE-3 展示了顯著的效能提升:
| 模型 | 演算法 | 使用案例 | 硬體 |
|---|---|---|---|
| Qwen3-8B | P-EAGLE | 數學推理 (GSM8k) | 1xA100 |
| Qwen3-30B-A3B | DFlash | 程式碼 (HumanEval) | 2xA100 |
| gemma-4-31B-it | DSpark | 程式碼 (HumanEval) | 2xA100 |
與 vLLM 的生產整合
並行草擬透過 Speculators 存儲庫整合到 vLLM 中。此生態系統提供了一個統一的框架來訓練和評估這些模型。使用者可以在 vLLM 初始化期間透過在 speculative-config 標誌中指定模型和方法來啟動基於並行的推測引擎:
vllm serve Qwen/Qwen3-30B-A3B \
--tensor-parallel-size 2 \
--reasoning-parser qwen3 \
--speculative-config '{
"model": "RedHatAI/Qwen3-30B-A3B-speculator.dflash",
"num_speculative_tokens": 7,
"method": "dflash"
}'
因為推測解碼使用拒絕採樣來保持驗證模型的輸出分布,最終輸出品質在數學上與標準解碼保持相同。