llama.cpp PR 报告:仅切换一个 SYCL 内核,Intel Battlemage 上量化 KV 解码在 118K 上下文最高提速 169%
摘要
llama.cpp 的一个 PR 提议将 Intel Battlemage 上的量化 KV 解码从 VEC 切换到 TILE SYCL 内核,据报道在 118K 上下文下解码速度提升最高约 169%。该 PR 目前处于开放状态,存在一些注意事项,且独立验证有限。
一个新的 llama.cpp PR(#26689)改变了一个看似微小的 SYCL FlashAttention 调度决策。使用量化 KV 缓存(“q4_0” / “q8_0”)时,解码原本被发送到 VEC 内核。在作者的 Battlemage 测试系统上,随着上下文增长,将该路径切换到 TILE 会明显更快。以下是一些作者报告的结果(关闭 MTP):
- Qwen3.6-35B, q4_0 KV @ 118,784: 12.99 → 29.61 t/s(+127.9%)
- Qwen3.6-35B, q8_0 KV @ 118,784: 12.90 → 31.80 t/s(+146.5%)
- Gemma 4 12B, q4_0 KV @ 118,784: 5.06 → 13.59 t/s(+168.7%)
- Gemma 4 12B, q8_0 KV @ 118,784: 5.13 → 13.81 t/s(+168.7%)
这不仅仅是极端的 118K 场景。在 32K 下,相同的 JIT 测试在测试的 Qwen/Gemma 配置上大约提升了 +42% 到 +74%。有趣的是,这个实际改动非常小。该 PR 基本上只是更改了调度门控,使量化 KV 解码选择 TILE 而不是被迫走 VEC,并添加了 “GGML_SYCL_FA_DECODE_KERNEL=vec|tile|auto” 以便进行 A/B 测试。
重要注意事项:
- PR 处于开放状态,尚未合并
- 这些大多是作者报告的基准测试
- PR 中未指明具体的 Battlemage GPU SKU
- 这专门针对量化 KV;F16 保持原有调度
- 一个 118K MTP 测试仅从 17.65 提升到 20.14 t/s(+14.1%)
- 后端测试通过 4001/4001,但还没有独立的硬件全面测试
该 PR 还转述了一个 Laguna-S-2.1 Discord 测试结果,显示在 64K 下 +50%、118K 下 +68%,但我仍然希望看到真正的独立结果。有 B580 或 B70 的朋友能在 64K/118K 下复现吗?我尤其好奇在启用 MTP 后,这种巨大提升是否仍然存在。
相似文章
SYCL: 从 CUDA 后端移植多列 MMVQ(在 Intel Arc 上获得约 45% 的推测解码加速)by masonmilby · Pull Request #21845 · ggml-org/llama.cpp
一个针对 llama.cpp 的拉取请求,将多列 MMVQ 从 CUDA 移植到 SYCL,在 Intel Arc GPU 上实现了约 45% 的推测解码加速。
提示:使用这个llama.cpp的PR提升Intel ARC上的提示处理速度
一个llama.cpp的PR显著提升了Intel ARC GPU上的提示处理速度,基准测试显示在B580上从245t/s提升到462t/s。目前该改进仅适用于F16 KV量化,计划后续支持其他量化方式。
一个 llama.cpp PR 让 Q2_0 在 x86 CPU 上提速 3.0–3.6 倍,8B 解码从 2.39 升至 8.20 tok/s
一个 llama.cpp 拉取请求为 Q2_0 × Q8_0 点积添加了 x86 VNNI 实现,在 Bonsai 模型上实现了 3.0–3.6 倍的纯 CPU 加速,内核级逐位精确,且 token 一致性达 99.2%。
[llama.cpp] 非对称 KV q8/q4 缓存:当前注意事项及 GGML 仓库中的讨论
讨论了在 llama.cpp 中使用非对称 KV 缓存量化时的注意事项,其中不匹配的 q8/q4 类型会导致提示处理在 CPU 而非 GPU 上进行,并提出了通过编译标志进行修复的方案。
Llama.cpp PR 带来 8% 速度提升
一个 llama.cpp PR 将采样从 CPU 移至 GPU,在 RTX 5090 上为 Qwen3.6-35B 推理带来 8% 的 token 速度提升,在 Tesla P40 上约为 4%。