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

llama.cpp b11922修复多序列分割回放测试与部分状态校验

该版本主要修正训练模型下的多序列分割回放测试,要求seq-1隔离后尾部logits逐位一致;同时删除了基于llama_model_n_swa() 的部分状态平坦性检查,因为该函数对dsv4返回 0,而原始KV缓存实际有 128 格滑动窗口。

AI解读:llama.cpp发布b11922构建,变更集中在测试代码(PR #31216),修正多序列分割回放和部分状态用例在已训练模型上的问题。

测试先只比较每个序列的第一个回放token,再把回滚状态恢复到参考上下文,以应对回滚快照与参考上下文因批形状不同产生的末位差异。

新增要求:seq状态保存并非总是逐位无损(SWA掩码单元不被保存),因此需把恢复后的状态重新载入回滚上下文,使两边的seq-1尾部内存逐字节一致,尾部logits必须逐位匹配。

删除了ps中基于llama_model_n_swa() 的部分状态检查:该函数对dsv4返回 0,但dsv4原始KV缓存有 128 格滑动窗口,部分状态随token增长是设计行为。

版本继续提供macOS、Linux、Android、Windows各后端二进制包及UI包;openEuler构建链接标注为DISABLED。

llama.cpp发布b11922构建,主要改动为测试修复(PR #31216),针对已训练模型修正多序列分割回放与部分状态用例。

多序列分割回放测试的修正

回滚快照由解码被回滚尾部的计算图捕获,而参考上下文以不同批形状解码同一前缀,两者状态在末位存在差异,已训练模型会随每个回放token放大该差异。测试改为只比较每个序列的第一个回放token,然后在仅seq-1尾部之前把回滚状态恢复到参考上下文中。

seq状态保存并非总是逐位无损,SWA掩码单元不会被保存。为保证隔离性,测试把恢复后的状态重新载入回滚上下文,使两个上下文以逐字节一致的存储(包括单元布局)进入seq-1-only尾部,尾部logits必须逐位匹配;同时断言恢复状态往返后逐位一致。

部分状态检查被移除

改动从ps测试中删除了n_swa部分状态检查。该检查依赖llama_model_n_swa(),而该函数对dsv4返回 0,尽管dsv4原始KV缓存带有 128 格滑动窗口。该处的部分状态本就随token增长,平坦性检查不成立。

发布产物

b11922提供macOS Apple Silicon(arm64)与Intel(x64)、iOS XCFramework,Linux的CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL FP32/FP16等构建,Android arm64(含Snapdragon CPU、Adreno GPU、Hexagon NPU版本),Windows的CPU、CUDA、Vulkan、OpenVINO、SYCL、ROCm构建,以及UI包。openEuler相关构建链接标注为DISABLED;macOS上KleidiAI启用版本同样标注为DISABLED。

信息来源

llama.cpp Releases原始来源

更多

新闻专题
外观