llama.cpp b10840发布:CUDA分支无跳转解包提速Q4_K/Q5_K,DGX Spark获L2预取
新版本针对批大小大于 1 的mmvq场景优化,将Q4_K/Q5_K解包改为无分支计算,避免每列重复执行缩放解包;同时为NVIDIA DGX Spark加入L2预取支持。
AI解读:llama.cpp这次更新主要解决CUDA推理中量化模型在批处理(batch size > 1)时性能不佳的问题。旧代码在mmvq操作里对每一列都重新执行缩放因子解码,白白浪费算力。开发者把Q4_K和Q5_K的解包改成了无分支(branchless)写法,直接省掉重复计算,理论上对跑批量请求的本地推理用户(比如同时处理多个prompt的服务)有明显提速。另一个亮点是给NVIDIA DGX Spark加了L2 cache预取,但这个优化只对Spark生效,普通显卡用户享受不到。需要提醒的是,这次改动只是量化解码路径的优化,模型本身的精度和文件格式都没变,现有工作流可以直接替换二进制使用。如果你只是单条prompt聊天,感知可能不明显;但如果你是本地API服务或批量跑评测,值得更新后对比Q4_K/Q5_K模型的吞吐变化。
llama.cpp发布b10840版本,主要变化在CUDA后端:Q4_K与Q5_K量化格式的解包改为无分支(branchless)计算,以加速矩阵乘向量(mmvq)路径,在批大小大于 1 时提升性能;同时针对NVIDIA DGX Spark硬件新增了mmvq的L2预取支持。