b10181
llama.cpp 在 b10181 版本中修复了 ggml-cuda 的 MMQ 路径:当设备每块共享内存小于 48 KiB 时,禁用 MMQ 并回退到 BLAS 路径,避免 GGML_ABORT。该问题在 Moore Threads MTT S70(28 KiB 共享内存)和 MUSA QY1 设备上复现,仅影响 prefill(batch>1),token generation 正常。修复后 Q8_0 模型 prefill 速度 1470.7 t/s,token generation 55.3 t/s。
Development
- First Reportb10181llama.cpp
- Current Assessment该修复表明国产 GPU(如 Moore Threads、MUSA)在运行主流推理框架时仍存在硬件兼容性挑战,尤其是共享内存容量不足导致量化推理路径失效。随着国产 AI 芯片生态发展,推理框架需要更细粒度的硬件适配策略,而非仅针对 NVIDIA 架构优化。Agent Pulse · analysis
llama.cpp 发布 b10181 版本,修复了 ggml-cuda 中 MMQ(矩阵乘法量化)路径在低共享内存设备上的崩溃问题。当设备每块共享内存小于 48 KiB(如 Moore Threads MTT S70 的 28 KiB 和 MUSA QY1 的 28 KiB)时,mul_mat_q_switch_J() 会因所有 tile 大小超出预算而触发 GGML_ABORT。修复后,此类设备自动回退到 BLAS 路径,避免崩溃。该问题仅影响 prefill(batch>1),token generation 不受影响。修复后 Q8_0 模型 prefill 速度 1470.7 t/s,token generation 55.3 t/s,与强制使用 cuBLAS 的性能一致。
MMQ 的 tile 配置针对至少 48 KiB 每块共享内存设计(NVIDIA Pascal 及以上),低共享内存设备(如 Moore Threads MTT S70 的 28 KiB)无法容纳任何支持的 tile,导致 GGML_ABORT。修复通过检查设备共享内存容量,在不足时禁用 MMQ 并回退到 BLAS 路径。这暴露了量化推理在非 NVIDIA 硬件上的兼容性问题,尤其是国产 GPU(如 Moore Threads、MUSA)的共享内存限制。
该修复表明国产 GPU(如 Moore Threads、MUSA)在运行主流推理框架时仍存在硬件兼容性挑战,尤其是共享内存容量不足导致量化推理路径失效。随着国产 AI 芯片生态发展,推理框架需要更细粒度的硬件适配策略,而非仅针对 NVIDIA 架构优化。
对于使用国产 GPU 进行推理的团队,该修复避免了量化模型在 prefill 阶段的崩溃,提升了推理稳定性。但回退到 BLAS 路径可能降低性能,需评估是否值得为兼容性牺牲速度。
预计更多推理框架将引入类似的自适应路径选择机制,根据设备硬件特性(如共享内存、计算能力)动态切换量化策略。国产 GPU 厂商可能需要调整硬件设计或提供更详细的硬件能力报告,以提升与主流框架的兼容性。