AGENT PULSESJCPal Special EditionAI 行业证据与趋势
2026年7月28日 · llama.cpp

b10171

发生了什么

llama.cpp 在 b10171 版本中修复了 Adreno GPU 上 KQ/KQV 内核忽略 dim 3 导致多流批次推理结果错误的问题。修复后,Adreno 740 上默认设置的困惑度从 1817.64 降至 15.61,禁用 Flash Attention 时从 1941.64 降至 15.61;Adreno 840 上禁用 FA 时从 1943.90 降至 15.50。单流结果不变。

EVENT STORY

发展脉络

  1. 首次出现b10171llama.cpp
  2. 当前判断此修复表明,在移动端 GPU(如 Adreno)上部署大模型推理时,硬件加速内核的兼容性仍是关键挑战。随着多序列批处理成为标准实践(如并行评估、多会话服务),内核必须正确处理所有张量维度。llama.cpp 的快速响应(从 bug 发现到修复发布)体现了开源社区在边缘推理场景中的迭代速度,但也暴露了 Adreno 驱动或硬件对 4D 张量支持不足的问题。Agent Pulse · 分析
改变了什么

llama.cpp 发布 b10171 版本,修复了 Adreno GPU 上 KQ/KQV 图像内核忽略 dim 3 的 bug。该 bug 导致统一 KV 缓存下多序列批次(如 llama-perplexity 默认 -b 2048、n_seq=4 或多槽 llama-server)中,除第一个流外的所有流读取到错误的 K/V 数据,产生垃圾输出。Flash Attention 可掩盖此问题,但在不支持 FA 的设备(如 Adreno 740)上默认触发。修复方案是当 ne03/ne13 > 1 时路由到通用路径,并正确设置 view_offs。修复后,Adreno 740 默认设置困惑度从 1817.64 降至 15.61,禁用 FA 时从 1941.64 降至 15.61;Adreno 840 禁用 FA 时从 1943.90 降至 15.50。单流结果不变。

能力边界怎么变了

该修复揭示了 Adreno GPU 上自定义内核(ggml_cl_mul_mat_kq_kqv_adreno)对 4D 张量支持不完整的问题:内核仅处理前三维,忽略 ne03/nb03 等参数,导致多流场景下子缓冲区仅覆盖第一个流的数据。修复通过检查 ne03/ne13 维度,在大于 1 时回退到通用路径,并确保子缓冲区创建时正确应用 view_offs。这提示在 GPU 内核优化中,对张量维度的假设需要显式验证,尤其是当统一 KV 缓存等特性引入额外维度时。

为什么重要

此修复表明,在移动端 GPU(如 Adreno)上部署大模型推理时,硬件加速内核的兼容性仍是关键挑战。随着多序列批处理成为标准实践(如并行评估、多会话服务),内核必须正确处理所有张量维度。llama.cpp 的快速响应(从 bug 发现到修复发布)体现了开源社区在边缘推理场景中的迭代速度,但也暴露了 Adreno 驱动或硬件对 4D 张量支持不足的问题。

对谁有影响

对于依赖移动端 GPU 推理的产品(如手机端 AI 助手、边缘 AI 设备),此修复直接提升了多用户场景下的推理准确性。修复前,多流推理产生错误结果可能导致用户体验下降或业务逻辑错误;修复后,困惑度从 1800+ 降至正常水平(~15.6),使移动端多会话推理变得可行。这降低了部署成本,无需为每个流单独分配资源。

接下来观察

未来,移动端 GPU 厂商(如高通)可能需要更新驱动或硬件以原生支持 4D 张量操作,避免依赖软件回退。同时,llama.cpp 等推理框架应加强对 GPU 内核的维度兼容性测试,尤其是在多流场景下。可验证信号:高通发布 Adreno 驱动更新,明确支持 4D 张量内核;或 llama.cpp 增加针对多流批次的 CI 测试。