开源llama.cpp Releases·原文 2026年10月3日

llama.cpp b11375修复GGML_SCHED_NO_REALLOC下的图重分配中止问题

该版本将循环状态合并为单次get_rows采集,使预留节点规模只取决于n_rs,并在Mamba ssm_scan自定义getter下让单序列ubatch不再复制状态。

AI解读:llama.cpp发布b11375,核心改动是图形调度层面的修复:build_rs原先用单独的get_rows采集额外状态(n_rs - n_seqs行),最坏情况的预留使n_rs等于n_seqs,该节点被分配为零行。

当ubatch的cell不连续时,这会在节点数不变的情况下强制触发图重分配,而在GGML_SCHED_NO_REALLOC下会中止;新版本改为用一次get_rows采集全部n_rs状态,ubatch状态与额外状态都是它的视图。

由于该get_rows的大小只取决于n_rs,而预留已把n_rs设为最大值,触发条件被消除;Mamba ssm_scan使用自定义getter从第二个状态采集,因此单序列ubatch不复制任何状态。

视图按图在输入中构建一次,以保持图的主机侧开销不变。这一描述来自llama.cpp的发布说明。

llama.cpp发布b11375,修复了一处在GGML_SCHED_NO_REALLOC下会中止的问题:build_rs此前用单独的get_rows采集额外状态(n_rs - n_seqs行)。

单次get_rows取代额外的状态采集节点

worst-case预留场景下n_rs等于n_seqs,因此那个额外状态节点被分配为零行。任何cell不连续的ubatch都会在节点数不变的情况下强制触发图重分配,并在GGML_SCHED_NO_REALLOC下中止。

  • 先前实现:build_rs使用自己的get_rows采集额外状态(n_rs - n_seqs行)
  • 触发条件:ubatch的cell不连续
  • 后果:节点数不变仍强制图重分配,在GGML_SCHED_NO_REALLOC下中止

视图机制与开销控制

现在改为单个get_rows采集全部n_rs状态,ubatch状态与额外状态都是该节点的视图,其大小只取决于n_rs,而预留已把n_rs设置为最大值。视图按图在输入中构建一次,以保持图的主机侧开销不变。

  • 单个get_rows采集n_rs个状态,其大小只取决于n_rs
  • ubatch状态与额外状态为视图
  • Mamba ssm_scan使用自定义getter从第二个状态采集,单序列ubatch不复制状态
  • 视图每图在输入中构建一次,主机侧开销不变

发布产物

b11375同时提供多平台预编译包,覆盖macOS Apple Silicon(arm64)与macOS Intel(x64)、iOS XCFramework、Ubuntu(x64与arm64的CPU、Vulkan、CUDA 12.8/13.4、ROCm 10.0、OpenVINO、SYCL FP32/FP16)、Linux arm64 Snapdragon(CPU、Adreno GPU、Hexagon NPU)、Android arm64及Windows(x64/arm64的CPU、CUDA 12.4/13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0)等构建。发布说明中,macOS arm64的KleidiAI构建与openEuler构建均标注为DISABLED,UI单独打包。

  • macOS/iOS:Apple Silicon (arm64)、Apple Silicon KleidiAI(DISABLED)、Intel (x64)、iOS XCFramework
  • Linux:Ubuntu x64/arm64的CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL
  • Linux arm64 Snapdragon:CPU、Adreno GPU、Hexagon NPU,附有安装指南
  • Android:arm64 CPU、arm64 Snapdragon(CPU、Adreno GPU、Hexagon NPU)
  • Windows:x64/arm64 CPU、CUDA 12.4/13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0、OpenCL Adreno
  • openEuler与KleidiAI构建标注为DISABLED;UI单独打包

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观