llama.cpp发布b10796:修复MoE分层专家数校验,支持变专家层模型加载
新版本引入n_expert_used_max函数,解决每层专家数不同导致的加载失败与断言错误,影响含Nemotron-3-Puzzle等分层MoE架构的模型。
llama.cpp发布b10796版本,新增n_expert_used_max函数,修复加载每层专家数不同的混合专家(MoE)模型时的校验问题。该问题源于commit c61b98b引入的NVIDIA Nemotron-3-Puzzle-75B-A9B(NemotronHPuzzle)支持,使模型各层可拥有不同的专家数量,但原有加载检查未同步更新。
修复内容
修复针对两个具体问题:模型加载时报错“model has expert layers but no expert layers are used”(模型有专家层但未使用任何专家),以及在llama-model-loader.cpp:955 处触发GGML_ASSERT(n_ids_used > 0) 失败。新函数n_expert_used_max供这些检查复用。
提交包含三项改动:新增n_expert_used_max函数;在llama_model_base::load_hparams中使用hparams.n_expert_used_max;将该值初始值设为 0。
- 涉及的模型支持提交:#25444
- 问题引用:#25444 评论 5524976031
- 相关PR:#28323
平台支持与下载
b10796为各平台提供预编译二进制,包括macOS(Apple Silicon arm64、Intel x64)、iOS XCFramework、Linux(Ubuntu x64/arm64/s390x CPU,x64/arm64 Vulkan,x64 ROCm 10.0、OpenVINO、SYCL FP32/FP16)、Android arm64 CPU、Windows(x64/arm64 CPU,arm64 OpenCL Adreno,x64 CUDA 12.4与CUDA 13.3,arm64 CUDA 13.4预览版,x64 Vulkan、OpenVINO、SYCL、ROCm 10.0),以及独立UI包。
部分构建被标记为“DISABLED”:macOS Apple Silicon的KleidiAI启用版本(涉及PR #23780)与openEuler各构建(涉及PR #23705)本轮未提供。
发布说明仅列出上述技术改动,未包含其他功能更新说明。