2026 年 11 月 2 日至 3 日,llama.cpp 合併兩項統一 KV 快取改動。11 月 2 日的 b12059 合併 #29510,把多序列統一 KV 快取從稠密 KQ mask 改為 kv_rows 切片,以提升 flash attention 效率:每個序列維護一份 cell 點陣圖,按置位順序生成… 看完整事件
llama.cpp 多序列統一 KV 快取改用 kv_rows 切片
llama.cpp 合併 #29510,多序列共享的統一 KV 快取改用 kv_rows 切片,取代稠密的 KQ mask,以提升 flash attention 的效率。每個序列維護一份 cell 點陣圖,按置位順序生成 cell 列表,並在 seq_pos_inc/dec 時增量更新,刪除 cell 時不必重建;被 SWA 對所有 token 隱藏的 cell 會從列表中剔除。
統一 KV 快取不再回退到稠密 KQ mask,多序列併發(如多槽位草稿)在 llama.cpp 本地推理中可直接受益,且改動已隨 macOS、Linux、Windows、Android 各平台建置發布。
原標題:b12059
閱讀原文
| 評分 | 50 / 55(平均 52,門檻 60) |
|---|---|
| 狀態 | 未入選 |
原文
相關報導
llama.cpp 將無快取注意力的 KV 維度填充到 256,修復 Flash Attention 回退 CPU
llama.cpp b11576 把無快取注意力路徑的 KV 維度填充到 256,修復了該路徑下 Flash Attention 回退 CPU 的問題。
llama.cpp 重構稀疏注意力 K 池選擇,與 kq_mask 形狀解耦
llama.cpp 讓 qwen4exp (QSA) 與 glm5-next 的稀疏注意力選擇不再跟隨 kq_mask 的形狀,改為在 KV cache 單元上按 [n_kv, n_tokens] 建置,到 attention 前才拆成 K 檢視的流。這樣 dense mask 可以自行改變佈局(例如按序列的行列表),不必改動稀疏層。同時刪掉了 build_fused_top_k_mask 中未使用的引數。
llama.cpp SYCL 新增量化 KV 快取的 DPAS flash attention 核心
llama.cpp 的 SYCL 後端新增 DPAS flash attention 核心,解碼與小批次(1 到 31 個 query token)可直接在 q4_0、q8_0 的 KV 塊上執行,不必做標量反量化或每次呼叫都把整個快取轉成 f16。Q.K 在 XMX 上使用 s8×s4 與 s8×s8 DPAS,V.P 仍保持 f16;覆蓋 head size 64 到 512、最多 32 的 GQA 與 attention sinks,prompt 階段仍走原有核心。
llama.cpp Hexagon 的 flash_attn 改為按 KV 頭切分
llama.cpp 的 Hexagon 後端在 row-split 多核模式下把 flash_attn 從按 Q token 切分改為按 KV head 切分,讓每個核心只讀自己負責的那部分 KV cache,不再重複讀取全部 KV cache。該行為由 GGML_HEXAGON_FA_HEAD_SPLIT 控制,預設開啟;當 n_kv_heads 不能被核心數整除時回退到原 token-block 切分(如 4 核上只有 2 個 KV head 的 Gemma-4)。
llama.cpp 修復共享序列 k-pool 資料競爭
llama.cpp 合併 PR #29994,修復 CPU 後端在共享序列(seq_cp)場景下 k-pool 的散射寫入資料競爭:多個共享同一 cell 的序列會從不同 scatter 條目寫同一 rep 行。