推論與執行期
llama.cpp b10731 為 Qwen3.8-Flash-Next 補上循環狀態回滾,MTP 推測解碼不再反覆搬移完整狀態
llama.cpp 修正 Qwen3.8-Flash-Next 在草稿 token 被拒絕時無法正確回滾 SSM 與卷積狀態的問題。單張 RTX PRO 6000 測試顯示程式碼解碼由 123 增至 183 token/s,但結果仍侷限於特定量化、草稿頭與單一工作槽。

llama.cpp 的 b10731 預發行版合併 Qwen3.8-Flash-Next 循環狀態回滾支援,處理 MTP(multi-token prediction)推測解碼原本可能「越加速越慢」的路徑。MTP 先由草稿頭預測多個 token,再交給目標模型一次驗證;若只接受部分草稿,目標模型必須退回第一個遭拒 token 前的狀態。對具有 SSM/循環快取的 `qwen4exp` 架構而言,這不只是縮短一般 KV cache。
修正前,llama.cpp 會把該情況標記為 `SEQ_RM_TYPE_FULL`,每輪推測都將完整循環狀態序列化到主機記憶體。專案說明指出,既有 recurrent cache 雖已配置 `n_rs_seq + 1` 個快照平面,模型專用的 `build_conv_state_at()` 卻只寫入目前平面;直接啟用回滾會形成 SSM 狀態正確、卷積歷史錯誤的不一致狀態。新實作替每個可回滾位置保存一份較早一個 token 的快照,同時涵蓋 delta-net QKV 與 PLE 卷積狀態,因而能在裝置端恢復正確歷史。
維護者在 RTX PRO 6000、單一服務槽、`n-max=3` 與 Qwen3.8-Flash-Next UD-Q4_K_XL 條件下測試:加入修正後,程式碼輸出達 183 token/s、一般文字達 144 token/s;修正前分別為 123 與 83 token/s,而完全不用草稿頭為 108 token/s。這也說明先前一般文字路徑的 MTP 實際比直接解碼更慢,瓶頸來自狀態搬移,不是草稿接受率本身。
這項更新尚不能外推為所有硬體均有 1.5 至 2 倍增益。測試只涵蓋一張 GPU、一個量化版本和單工作槽;多槽併發、不同 `n-max`、CPU/Vulkan/ROCm 後端,以及額外 2.5GB Q4 草稿頭的記憶體成本都可能改變結果。部署者也應注意 b10731 標為預發行版,先以固定提示比較 token 完全一致性、接受率、裝置至主機流量和尾端延遲,再決定是否投入正式服務。