哈工大深圳與 NUS 提出 QuantWM,2-bit KV Cache 壓縮 6.2 倍
哈工大(深圳)與新加坡國立大學團隊提出免訓練 2-bit KV Cache 量化框架 QuantWM,面向影片世界模型,實際壓縮最高 6.20 倍。研究指出,現有量化方法在 VBench 等指標上接近 BF16,畫面卻仍有閃爍、模糊和失真,原因是 Key 的量化誤差改變了注意力分數排序,使模型選中不同的歷史幀或影像塊。
依意思最接近的 20 筆
哈工大(深圳)與新加坡國立大學團隊提出免訓練 2-bit KV Cache 量化框架 QuantWM,面向影片世界模型,實際壓縮最高 6.20 倍。研究指出,現有量化方法在 VBench 等指標上接近 BF16,畫面卻仍有閃爍、模糊和失真,原因是 Key 的量化誤差改變了注意力分數排序,使模型選中不同的歷史幀或影像塊。
llama.cpp 合併 PR #29639,為 Vulkan 後端加入針對量化 K/V 快取的稀疏 Flash Attention,並把稀疏 FA 的索引壓縮改為單次掃描。原實現每行 mask 用一個 workgroup、按 BLOCK_SIZE 分塊各做一次掃描,解碼時單個 workgroup 要跑 KV/1024 次受 barrier 限制的迭代,128k 單元格下開銷超過它服務的稀疏注意力本身。
llama.cpp b11576 把無快取注意力路徑的 KV 維度填充到 256,修復了該路徑下 Flash Attention 回退 CPU 的問題。
llama.cpp 發布 b11411,修復恢復 KV cache 時 rotation 後設資料不匹配的問題:現在會儲存精確的 rotation 後設資料,並拒絕恢復與之不匹配的快取。原先的 state rotation 測試被移入 test-save-load-state,納入儲存/載入測試矩陣,對所有受測模型執行,並探測模型支援的 KV cache 型別組合,不使用 attention rotation 的模型視為空通過。
OpenAI 開發者帳號宣布,提示快取的保留時長現在可以選擇 12 小時,也可以繼續使用預設的 30 分鐘,或在同一次請求裡混用兩種時長:共享指令用 12 小時,較新的對話內容用 30 分鐘。官方表示,如果一整天都要反覆複用同一段上下文,反覆命中快取省下的錢可能明顯超過 12 小時快取多出的成本。
llama.cpp 建置 b11647 的 Vulkan 後端為 AMD 顯示卡最佳化了 f16/bf16 KV cache 的 strided 複製:先把 KV 一次性拷到 scratch,使跨記憶體通道的讀取分散,而不是集中在少數通道上。改動刪掉了專用的反量化 shader,改為複用已有的通用 copy pipeline——f16 分支只需要 strided copy,不需要 dequant;複製按源記憶體順序描述,讓跨步訪問落在順序寫入端。
llama.cpp 發布建置 b11600,主要修復無快取注意力中 KQ 偏置未填充的問題:T5 會額外加入形狀為 [n_tokens, n_tokens] 的相對位置偏置,當 n_tokens 不能整除填充後的寬度時,與 KQ 相加會失敗,現在按 K、V 的做法用零把偏置填充到 mask 的 KV 維度。
模型雲服務商 Neuralwatt 分析一個月流量發現,同一模型下不同 agent harness 的 prompt 快取命中率差異明顯,未快取輸入佔 1.6%–11.1%,而一次快取未命中會讓請求能耗約為全快取時的兩倍,GLM-5.3 上接近 2.5 倍。命中率 92% 相當於每 100 個輸入 token 有 8 個未快取,97% 時只有 3 個,prefill 工作量相差 2.7 倍。
llama.cpp 更新 server 的 prompt cache 邏輯:現在只儲存可恢復的 slot 狀態(PR #30498)。此前每個任務啟動時都會把空閒 slot 全部寫入快取,rerank、embedding、decision、infill 的狀態填滿快取卻從不被讀回;
llama.cpp 發布建置 b11604,為 KleidiAI 加入 SME2 指令集的 Q4_K 與 Q6_K 矩陣乘支援,補丁編號 #29219,提交者來自 Arm。SME2 屬於 Armv9 的矩陣擴充套件,這項改動面向支援該指令集的 Arm CPU,用於加速這兩種常用量化格式的矩陣乘法。同一版本中,macOS Apple Silicon 的 KleidiAI 啟用建置被標記為 DISABLED,openEuler 也有一項標註 DISABLED;
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 發布 b11640,Vulkan 後端針對 cm2 mulmat 的矩陣乘法改用對 L2 快取更友好的 workgroup 排程(#30215)。同一版本把 macOS Apple Silicon 的 KleidiAI 建置標記為 DISABLED,並重新整理各平台預編譯包:Ubuntu 與 Windows x64 新增 ROCm 10.0,CUDA 13 建置對應 CUDA 13.4 庫。
llama.cpp 發布 b11583,主要改動是在「no cache」路徑下避免圖記憶體的重複分配(#30439),即不使用 prompt 快取時可減少反覆申請與釋放視訊記憶體/記憶體。該版本照例提供 macOS、Linux、Windows、Android 等平台的預編譯包,其中 macOS Apple Silicon 的 KleidiAI 建置和 openEuler 建置本次標記為 DISABLED。
llama.cpp 的 PR #29825 通過最佳化索引器分數記憶體,把 Qwen Flash Next 等 Qwen4 模型的視訊記憶體佔用減半。實測在上下文 131072、ub 2048 時從 3.0 GiB 降至 1.5 GiB,262144、ub 4096 時從 11.7 GiB 降至 5.6 GiB。作者稱 logits 逐位一致、pp/tg 速度不變,僅分數因 fp32 舍入有差異;有使用者反饋解碼速度約降 10%。
OpenAI API 現在可以選擇 12 小時 prompt caching,快取輸入繼續按更低費率計費。該選項面向全天複用上下文的持久型 agent(如 dots):共享指令、工具和上下文可以保留在快取中更久,即使兩次請求相隔數小時,仍可命中快取並支付 cached-input 價格。對需要長時間維持同一套上下文的 API 呼叫方,這意味著可在 12 小時內跨多次請求複用同一套上下文。
Claude Code v2.1.299 新增空閒壓縮:超過 200K token 的會話閒置約 54 分鐘後會被自動壓縮,趕在一小時 prompt cache 過期前完成,避免下一條訊息重新處理全部上下文。壓縮閾值可用 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS 調整,settings.json 裡的 idleCompaction: false 可關閉,兩者都需 v2.1.290 及以上。
llama.cpp 合併 PR #29570,在 Metal 後端為 F16 KV 快取加入基於張量 API 的 flash attention 核心。該核心覆蓋 DK=DV=512、DK=576/DV=512、DK=192/DV=128 等配置,並支援 attention sinks、ALiBi 與 logit softcap。改動隨 b11362 建置發布,覆蓋 macOS Apple Silicon、iOS 及 Linux、Windows、Android 等多平台建置。
llama.cpp 發布建置 b11460,SYCL 後端新增 IQ3_S 的多列 MMVQ 支援(PR #29500)。該版本繼續提供覆蓋 macOS/iOS、Linux、Android、Windows 與 openEuler 的預編譯包,其中 Ubuntu x64 與 Windows x64 包含 SYCL FP32、FP16 建置。
llama.cpp 的 CUDA 後端重做 top-k 演算法選擇,大行數場景改用按行網格的 radix select 替代 CUB 逐行 DeviceTopKKernel,在 qwen4exp 34,816 tokens 上啟動次數從 1,671,253 次降到 2,329 次,耗時從 5,761.8 ms 降到 941.8 ms。
llama.cpp 發布 b11466,唯一程式碼改動是修復 ggml-webgpu 後端 flash_attn 對 KV 重疊情形的 supports_op 檢查(#28205)。該版本同步更新各平台預編譯包,涵蓋 macOS/iOS、Linux、Windows、Android 與 openEuler,後端包括 CUDA 12/13、ROCm 10.0、Vulkan、SYCL、OpenVINO,以及 Snapdragon 的 Adreno GPU 與 Hexagon NPU;