llama.cpp b11936将k-pool稀疏选择与kq_mask形状解耦
官方发布说明称,qwen4exp(QSA)和glm5-next按索引选取缓存单元、不再读取kq_mask数值,但此前选择结果的形状仍与稠密kq_mask一致;本次改为在缓存单元上构建 [n_kv, n_tokens] 的选择结果。
AI解读:这次改动解决的是形状耦合问题:qwen4exp(QSA)和glm5-next的稀疏层已按索引选择缓存单元,不再读kq_mask的数值,但选择结果仍按稠密kq_mask的形状来组织,稠密掩码调整布局时会牵连稀疏层。
按发布说明,新的做法是在缓存单元上直接构建 [n_kv, n_tokens] 的选择结果,再在注意力计算前拆分为K视图的流。这使稠密掩码可以改变布局(例如按序列的行列表),而不需要改动稀疏层。
这是llama.cpp项目合并进b11936构建的一段提交说明,由提交信息给出,发布说明未提供性能数据或效果对比。
b11936同时列出了macOS、Linux、Windows、Android等平台的预编译包,其中macOS Apple Silicon的KleidiAI版本和openEuler构建标注为DISABLED。
llama.cpp发布b11936构建,其中包含提交 #31243:把k-pool稀疏选择与kq_mask的形状解耦。
被拆开的形状耦合
提交说明写道,qwen4exp(QSA)和glm5-next按索引选取缓存单元,不再读取kq_mask的数值,但这些模型仍按稠密kq_mask的方式来塑造选择结果的形状。
改动后,选择结果改为在缓存单元上构建为 [n_kv, n_tokens],并在注意力计算前拆分为K视图的流。说明称,这样稠密掩码可以改变布局(例如按序列的行列表),而不必改动稀疏层。
同一提交还移除了未使用的build_fused_top_k_mask参数;提交说明中列出的共同作者为Georgi Gerganov。
发布包与已知禁用项
b11936的发布页面列出了各平台预编译产物,包括macOS Apple Silicon(arm64)、macOS Intel(x64)、iOS XCFramework,以及Ubuntu的CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL构建,另有Windows、Android和Snapdragon相关包。
在发布页中,macOS Apple Silicon的KleidiAI enabled版本和openEuler各项构建被标注为DISABLED,后者链接到PR #23705。