llama.cpp b10795发布:SYCL后端融合rms_norm+mul+add与add+add残差链
新版本在GGML_SYCL_ENABLE_FUSION下合并多个算子,减少内核启动次数;同时提供多平台预编译二进制。
AI解读:llama.cpp通过算子融合来减少GPU内核启动次数,进而降低推理延迟。每当GPU启动一个内核,都有固定的调度开销;把多个连续操作合并成一个内核,就能省掉这部分时间。这次b10795在SYCL后端(主要对应Intel GPU,也支持部分其他硬件)引入了两层融合:一是RMS_NORM+MUL+ADD,常用于注意力机制后的归一化和残差连接;二是ADD+ADD,用于更复杂的残差叠加。ADD+ADD还复用了已有add() 的类型和拼接逻辑,支持f32、f16、bf16等格式以及广播和非连续内存,遇到不支持的组合会自动拆回两次add()。这意味着使用Intel显卡或相关SYCL设备的开发者在启用GGML_SYCL_ENABLE_FUSION后,长序列推理可能获得小幅性能提升;但项目没有公布具体加速数据,实际收益取决于模型结构和算子组合。普通用户无需专门操作,等待发行版跟进即可,开发者在SYCL环境下可自行基准测试验证效果。
llama.cpp发布b10795版本,核心变更是在SYCL后端引入算子融合:在GGML_SYCL_ENABLE_FUSION宏启用时,将RMS_NORM+MUL+ADD和ADD+ADD两组残差链分别融合为单个内核。ADD+ADD融合复用独立add() 的binbcast索引和类型矩阵,支持f32、f16、f16/f32、i32、i16、bf16等类型,涵盖广播和非连续内存场景;不支持的组合将回退为两次add() 启动。
版本发布与可用平台
b10795由github-actions[bot] 自动发布,同时提供多平台预编译二进制。此版本标注了部分平台构建被禁用:macOS Apple Silicon的KleidiAI加速版本(对应PR #23780)和openEuler构建(对应PR #23705)均为DISABLED状态。
- macOS:Apple Silicon (arm64)、Intel (x64)、iOS XCFramework
- Linux:Ubuntu x64/arm64/s390x(CPU)、Vulkan、ROCm 10.0、OpenVINO、SYCL FP32/FP16
- Windows:x64/arm64(CPU)、CUDA 12.4/13.3、CUDA 13 arm64(预览)、Vulkan、OpenVINO、SYCL、ROCm 10.0
- Android:arm64 (CPU)
- openEuler构建被禁用(见PR #23705)