llama.cpp b9931 版本引入了针对混合专家 (MoE) 预填充的 OpenCL 优化,该优化跳过填充的专家块以提升性能。
- 该优化将令牌分组为每个专家的 TILESIZE_N=32 大小的块,当块的上方 16 个槽位全为填充时,跳过第二个 dotx16_reduce8 半部分调用。
- 它用四个 dotx8_reduce4 调用替换了两个半块 dotx16_reduce8 调用,允许独立跳过空的尾部跳过组。
- 该功能由环境变量 GGML_OPENCL_MOE_RAGGED_GRAN 控制,该变量接受值 8、16 或 32,分别对应四分之一、一半或关闭的粒度。
- 发布版本包含适用于 macOS (Apple Silicon 和 Intel)、Linux (CPU、Vulkan、ROCm、OpenVINO、SYCL)、Android、Windows (CPU、CUDA、Vulkan、OpenVINO、SYCL、HIP) 和 openEuler 的二进制文件。
通过新的环境变量设置,此优化允许用户减少 MoE 模型中填充数据的计算量。