开源llama.cpp Releases·原文 2026年9月18日

llama.cpp b11039发布:模型保存器支持SWA模式,新增 15 个架构通过往返测试

llama.cpp新版本让模型保存器能写出滑动窗口注意力模式,使plamo3、gemma3、olmo2等 15 个架构通过逐位精确的往返测试。

AI解读:llama.cpp的b11039版本更新了模型保存器和加载逻辑,主要解决滑动窗口注意力(SWA)模式在GGUF文件保存和加载时的不一致问题。

此前加载器只把sliding_window_pattern当作周期值读取,会静默忽略数组形式;而olmo2、gemma3n、exaone4的转换器实际写入的是数组。新代码统一支持周期和逐层数组两种写法。

对普通用户来说,已发布的GGUF文件与默认值一致,输出不会改变。真正受影响的是做模型转换和保存的人:现在能正确写出SWA模式,不再被压缩成标量。

这次改动让plamo3、gemma3、cohere2、cohere2moe、olmo2、exaone-moe、afmoe、mimo2、spark2_5、muse-glimmer、mellum、laguna、granite_swa、dots3note和maple共 15 个架构通过bit-exact往返测试。

dots3note还额外需要写出SWA层的MLA key/value长度和KV LoRA rank,新代码已补上这部分。

llama.cpp发布b11039版本,合并PR #29042,主题为“Model-Saver: Write the SWA pattern, 15 more architectures roundtrip”。

该版本新增llama_model_base::load_swa_pattern(),用于把sliding_window_pattern读取为逐层标志或由set_swa_pattern() 展开的周期值,并应用到所有以周期方式读取该键的加载器中。

此前这些加载器会静默忽略数组并应用默认周期,而olmo2、gemma3n和exaone4的转换器写入的是数组。发布说明称,已发布的GGUF与默认值一致,因此输出不变。

保存器现在写出SWA模式和MLA SWA几何信息

模型保存器现在为每个使用SWA的模型写出sliding_window_pattern,形式是逐层一个标志,包含nextn层。该数组不会被折叠成标量,因为加载器会把标量读作周期。

保存器还会写出SWA层的MLA key/value长度和KV LoRA rank,这是dots3note所需要的。

15 个架构通过bit-exact往返测试

发布说明列出因此启用保存器的架构:plamo3、gemma3、cohere2、cohere2moe、olmo2、exaone-moe、afmoe、mimo2、spark2_5、muse-glimmer、mellum、laguna、granite_swa、dots3note和maple,它们全部通过test-llama-archs的bit-exact往返测试。

已经同时接受两种形式的加载器,去掉了重复的“先标量后数组”代码块;当键缺失时,使用其声明的默认周期。

信息来源

llama.cpp Releases原始来源