返回首頁

模型推論與執行期

llama.cpp 為 Kimi K3 加入循環狀態回滾,推測解碼不再只能複製主機檢查點

新預發布版會替每個候選位置保存 KDA 狀態與卷積視窗,使被拒絕的草稿 token 能正確回滾。初步單機測試顯示低並行推論可加速,但狀態記憶體會隨回滾深度及服務 slot 數大幅增加。

The GGML authors · Public domain · Image source
zh-Hant

llama.cpp 預發布版 b10853 為 Kimi K3 啟用「有界循環狀態回滾」,補上混合 Transformer/循環架構使用推測解碼時的一個關鍵缺口。推測解碼會先由較小的草稿模型提出多個 token,再讓主模型批次驗證;若主模型拒絕部分草稿,執行期必須把快取恢復到最後一個獲接受的位置。傳統 Transformer 主要回退 KV cache,但 Kimi K3 的 69 個 Kimi Delta Attention 層還維護固定大小的循環狀態及 Q/K/V 短卷積視窗。只保存最終狀態會在草稿遭拒後恢復不存在的快照,造成後續計算偏離正確序列。

合併的實作會為每個可回滾位置保存卷積視窗,並重用 llama.cpp 的 recurrent-attention 輔助程式建立 KDA 狀態快照。測試涵蓋檢查點恢復、多序列分割重播與序列隔離;macOS CPU 和 NVIDIA Vulkan 的針對性測試均通過。非零填充測試尤其重要:只把 Kimi K3 加入允許清單時,零初始化快取可能掩蓋錯誤,改用 `0x3e` 填充後即可捕捉到超出容差的 logit 差異。

開發者以量化 Kimi K3、四個服務 slot、七個草稿 token 及八張 RTX PRO 6000 Blackwell 測試,回滾方案相對主機檢查點在改寫、知識與程式工作負載快約 13% 至 53%。然而這不是 placement-controlled A/B:模型配置和可用空間不同;相較完全不用推測解碼,並行度一時 TPOT 改善,但並行度四反而惡化。代價也很直接,四 slot、七個回滾位置讓循環狀態快取由約 1.77 GiB 增至 14.18 GiB。部署者下一步應量測草稿接受率、並行度與額外狀態記憶體,而不能只看單請求速度。

來源

  1. llama.cpp b10853 release
  2. Kimi K3 recurrent-state rollback implementation and measurements
  3. Kimi K3 model card