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 階段仍走原有核心。
給出 Intel B580 上 16K 上下文解碼從 31.3 到 54.2 t/s 的實測提升,量化 KV 快取首次在 SYCL 下端到端走 DPAS,對用 Intel GPU 本地推理的使用者最直接。
原標題:b11980
閱讀原文
| 評分 | 67 / 66(平均 66,門檻 60) |
| 狀態 | 精選 |
|---|
全文翻譯
[SYCL] 為量化 KV 快取新增 DPAS flash attention 核心(#31125)
sycl:為量化 KV 快取新增 DPAS flash attention 核心
解碼和小批次(1 到 31 個查詢 token)現在直接在 q4_0 和 q8_0 KV 塊上執行 flash attention,
而不是標量反量化或每次呼叫都將整個快取轉換為 f16。Q.K 在 XMX 上使用 s8 x s4 和 s8 x s8
DPAS,V.P 保持 f16。dpas.s4.s8 是內聯 vISA,因為 joint_matrix
沒有 s4。
覆蓋 64 到 512 的頭尺寸,GQA 最高到 attention sinks。提示詞
保持在現有核心上。GGML_SYCL_FA_DPAS=0 可將其關閉。
B580,Llama 3.1 8B Q4_K_M,q4_0 KV,tg128:在 16K
上下文下從 31.3 提升到 54.2 t/s。FLASH_ATTN_EXT 4582/4584,與 master 相同的 2 個失敗。
協助者:Claude
sycl:移除 192 頭,Wildcat Lake 新增到文件
協助者:Claude
sycl:來自審查的更嚴格檢查
協助者:Claude
[SYCL]:重新命名 XMX 宏,新增 GGML_SYCL_SUPPORT_XMX 選項,記錄 DPAS
協助者:Claude
網站:
https://llama.app
證明:
https://github.com/ggml-org/llama.cpp/attestations/61175196
macOS/iOS:
macOS Apple Silicon (arm64)
macOS Apple Silicon (arm64, KleidiAI enabled) 已停用
macOS Intel (x64)
iOS XCFramework
Linux:
Ubuntu x64 (CPU)
Ubuntu arm64 (CPU)
Ubuntu s390x (CPU)
Ubuntu 26.04 s390x (CPU)
Ubuntu 26.04 s390x (zDNN)
Ubuntu x64 (Vulkan)
Ubuntu arm64 (Vulkan)
Ubuntu x64 (CUDA 12) - CUDA 12.8 庫
Ubuntu x64 (CUDA 13) - CUDA 13.4 庫
Ubuntu arm64 (CUDA 13) - CUDA 13.4 庫
Ubuntu x64 (ROCm 10.0)
Ubuntu x64 (OpenVINO)
Ubuntu x64 (SYCL FP32)
Ubuntu x64 (SYCL FP16)
Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 設定指南
Android:
Android arm64 (CPU)
Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - 設定指南
Windows:
Windows x64 (CPU)
Windows arm64 (CPU)
Windows arm64 (OpenCL Adreno)
Windows x64 (CUDA 12) - CUDA 12.4 DLL
Windows x64 (CUDA 13) - CUDA 13.4 DLL
Windows arm64 (CUDA 13) - CUDA 13.4 DLL
Windows x64 (Vulkan)
Windows arm64 (Vulkan)
Windows x64 (OpenVINO)
Windows x64 (SYCL)
Windows x64 (ROCm 10.0)
openEuler:
已停用
openEuler x86 (310p)
openEuler x86 (910b, ACL Graph)
openEuler aarch64 (310p)
openEuler aarch64 (910b, ACL Graph)
UI:
UI
由 AI 翻譯,以原文為準。
原文
[SYCL] add DPAS flash attention kernel for quantized KV cache ( #31125 )
sycl : add DPAS flash attention kernel for quantized KV cache
Decode and small batches (1 to 31 query tokens) now run flash attention
straight on q4_0 and q8_0 KV blocks, instead of scalar dequant or
converting the whole cache to f16 per call. Q.K uses s8 x s4 and s8 x s8
DPAS on XMX, V.P stays f16. dpas.s4.s8 is inline vISA since joint_matrix
has no s4.
Covers head sizes 64 to 512, GQA up to 32 and attention sinks. Prompts
stay on the existing kernels. GGML_SYCL_FA_DPAS=0 turns it off.
B580, Llama 3.1 8B Q4_K_M, q4_0 KV, tg128: 31.3 to 54.2 t/s at 16K
context. FLASH_ATTN_EXT 4582/4584, same 2 failures as master.
Assisted-by: Claude
sycl : 192 head dropped, Wildcat Lake added to docs
Assisted-by: Claude
sycl : stricter checks from review
Assisted-by: Claude
[SYCL] : rename XMX macro, add GGML_SYCL_SUPPORT_XMX option, document DPAS
Assisted-by: Claude
Website:
https://llama.app
Attestations:
https://github.com/ggml-org/llama.cpp/attestations/61175196
macOS/iOS:
macOS Apple Silicon (arm64)
macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED
macOS Intel (x64)
iOS XCFramework
Linux:
Ubuntu x64 (CPU)
Ubuntu arm64 (CPU)
Ubuntu s390x (CPU)
Ubuntu 26.04 s390x (CPU)
Ubuntu 26.04 s390x (zDNN)
Ubuntu x64 (Vulkan)
Ubuntu arm64 (Vulkan)
Ubuntu x64 (CUDA 12) - CUDA 12.8 libraries
Ubuntu x64 (CUDA 13) - CUDA 13.4 libraries
Ubuntu arm64 (CUDA 13) - CUDA 13.4 libraries
Ubuntu x64 (ROCm 10.0)
Ubuntu x64 (OpenVINO)
Ubuntu x64 (SYCL FP32)
Ubuntu x64 (SYCL FP16)
Linux arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide
Android:
Android arm64 (CPU)
Android arm64 (Snapdragon: CPU, Adreno GPU, Hexagon NPU) - setup guide
Windows:
Windows x64 (CPU)
Windows arm64 (CPU)
Windows arm64 (OpenCL Adreno)
Windows x64 (CUDA 12) - CUDA 12.4 DLLs
Windows x64 (CUDA 13) - CUDA 13.4 DLLs
Windows arm64 (CUDA 13) - CUDA 13.4 DLLs
Windows x64 (Vulkan)
Windows arm64 (Vulkan)
Windows x64 (OpenVINO)
Windows x64 (SYCL)
Windows x64 (ROCm 10.0)
openEuler:
DISABLED
openEuler x86 (310p)
openEuler x86 (910b, ACL Graph)
openEuler aarch64 (310p)
openEuler aarch64 (910b, ACL Graph)
UI:
UI
相關報導
llama.cpp releases● 精選AI 評分68
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 releasesAI 評分41
llama.cpp 發布建置 b11788,修復 SYCL 後端在 Flash Attention 下因 Query 頭維度不匹配(neq0 ≠ HSK,D=2048/4096)觸發的崩潰(#30286)。其餘是常規預編譯包的更新,覆蓋 macOS Apple Silicon、Linux 與 Windows 的 CUDA 12/13、Vulkan、ROCm 10.0、OpenVINO 和 SYCL;
llama.cpp releases● 精選AI 評分68
llama.cpp 的 SYCL 後端放行了 GLM-4.7 Flash 的 MLA 形狀走 MKL flash attention,此前該形狀因 K/V 寬度不一致、head dim 上限 512 被排程器拒絕,預填充只能回退到更慢的 TILE kernel。在 Intel Arc Pro B70 上,pp8192 從 432.80 提升到 1292.29 tok/s(2.99 倍,+198.6%),tg256 在噪聲範圍內基本不變(45.67 對 45.65)。
llama.cpp releasesAI 評分41
llama.cpp 發布 b11799 建置,新增 SYCL 後端的 q8 快速反量化(#30775),可提升 Intel GPU 上量化模型的推理效率。該版本同時提供 macOS、Linux、Windows、Android 的多平台預編譯包,涵蓋 CUDA 12、CUDA 13、ROCm 10.0、Vulkan、OpenVINO 與 Snapdragon 的 CPU、Adreno GPU、Hexagon NPU 版本;SYCL 建置則分為 FP32 與 FP16 兩版。
llama.cpp releases● 精選AI 評分68
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)。