llama.cpp b11440修复MTP投机解码调度器重分配报错
llama.cpp发布b11440构建,修复NextN提取标志变化后调度器未重新预留、导致更宽批次触发GGML_SCHED_DEBUG_REALLOC的问题;发布说明称该改动由Claude协助完成。
AI解读:问题出在投机MTP初始化:它在目标上下文与草稿上下文都已创建、调度器都已预留之后,才启用NextN提取。
在非掩码(unmasked)提取下,主干图会保留最后一层的每个token,而不是裁剪到输出行;于是第一次解码按该批次形状重新分配,下一次更宽的批次就会触发GGML_SCHED_DEBUG_REALLOC。
修复方式是在标志变化时使预留失效(invalidate the reserve),让下一次计算按新的图形形状重新预留。
发布说明标注Assisted-by: Claude;这是该版本中唯一在说明文本里描述的代码修复。
同页还列出了各平台预编译产物,包括macOS/iOS、Linux、Android、Windows以及UI包,同时标注KleidiAI版macOS arm64与openEuler构建处于DISABLED状态。
llama.cpp发布b11440版本,发布说明中列出的代码改动为PR #30020:当nextn提取标志发生变化时重新预留调度器。
发布说明描述的原因是,投机MTP初始化在目标上下文和草稿上下文都已创建且调度器已预留之后才启用NextN提取。
NextN提取标志变化触发重新预留
发布说明称,采用非掩码提取时,主干图会保留最后一层的每个token,而不是裁剪到输出行。这导致第一次解码按该批次的形状重新分配,而下一个更宽的批次会触发GGML_SCHED_DEBUG_REALLOC。
修复做法是在标志变化时让预留失效,使下一次计算按新的图形形状重新预留调度器。该改动由PR #30020 引入,发布说明标注Assisted-by: Claude。
- PR编号:#30020
- 涉及机制:投机MTP、NextN提取、调度器预留
- 触发条件:nextn提取标志在上下文创建并预留调度器之后发生变化
- 观察到的报错:GGML_SCHED_DEBUG_REALLOC
- 附带说明:Assisted-by: Claude
随版本发布的平台产物
该发布页同时列出b11440的预编译产物下载链接,覆盖macOS/iOS、Linux、Android与Windows。
发布说明中,macOS Apple Silicon(arm64,启用KleidiAI)和openEuler构建被标注为DISABLED。
- macOS:Apple Silicon arm64、Intel x64、iOS XCFramework
- Linux:Ubuntu x64/arm64/s390x CPU,以及Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL FP32/FP16,另有Linux arm64 Snapdragon配CPU、Adreno GPU、Hexagon NPU
- Android:arm64 CPU,以及arm64 Snapdragon配CPU、Adreno GPU、Hexagon NPU
- Windows:x64/arm64 CPU、arm64 OpenCL Adreno、CUDA 12.4、CUDA 13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0
- 另提供UI包
- 标注为DISABLED:macOS Apple Silicon arm64 KleidiAI版、openEuler构建