llama.cpp发布b12170:MoE缓存改为LRFU/MQ混合策略并采用ClassLRU
该版本由合并PR #31233 带入,为MoE专家缓存引入受LRFU/MQ启发的混合缓存与ClassLRU,缓存中超过一半的条目按令牌数计量,并随版本提供macOS、Linux、Windows、Android等多平台预编译包。
llama.cpp发布b12170版本,主要变更为MoE缓存改用受LRFU/MQ启发的混合缓存并采用ClassLRU,对应PR #31233。
提交记录显示,缓存时钟改为按真实令牌数推进:sel是RESHAPE节点,原始输入位于src[0],因此以sel->src[0]->ne[1] 作为计数。
moe-cache的实现要点
提交说明称,这套缓存使用类索引c与最近使用时间last_use记录条目,key只计算一次并直接复用,不再重复读取;得分由条目年龄(age)计算。
提交记录还提到移除分支并澄清exp2与log2的关系,重写了头部注释并对未使用槽位与排序作出说明。中途曾尝试使用std::array,随后以Revert回退。
- 类数提高到 8,并文档化计算公式
- 抽出decayed_crf,用于计算衰减后的值
- 缓存大小以令牌价值计数显示
- 加入断言,校验计算出的类数与半衰期一致
随版本提供的构建产物
发布页列出了b12170的多平台预编译包,覆盖macOS Apple Silicon(arm64)与Intel(x64)、iOS XCFramework、Linux x64/arm64/s390x(含CUDA 12/13、Vulkan、ROCm 10.0、OpenVINO 2026.4.1、SYCL FP32/FP16等变体)、Android arm64、Windows x64/arm64(含CUDA、Vulkan、OpenVINO、SYCL、ROCm)以及UI包。
发布页标注macOS Apple Silicon的KleidiAI启用包与openEuler相关包为DISABLED。
- Linux侧提供Snapdragon的CPU、Adreno GPU、Hexagon NPU组合包,并附setup guide
- Android侧同样提供Snapdragon组合包与README
- Windows侧含OpenCL Adreno arm64包