11月13日,llama.cpp 和底层 ggml 同时发布了 v1.0.0。这个 2023 年起步的项目一直按提交数发 b12xxx 的 nightly 构建,第一次打上正式的稳定版标签。版本号本身意味着 API 稳定性承诺,真正和本地玩家切身相关的,是发布前这一个多月陆续合进主线的一个参数:`–moe-cache-mib`,MoE 专家缓存。GitHub知乎
MoE 模型总参数很大,但每生成一个字只激活少数几个“专家”。官方 PR 给的例子是 Qwen3.8-Flash-Next 的 Q4_0 版:模型文件 93.7 GiB,专家权重占 65.4 GiB,24G 显存的 RTX 4090 装不下。以前的办法是 `-cmoe`、`-ncmoe` 按层静态切分:一部分层留在显卡,其余放进内存由 CPU 算。哪层会被调用事先不知道,显存里难免混进很少用到的专家。GitHub知乎

新思路是把显存当缓存用:专家权重留在内存,显卡划出一块固定空间,只装被频繁调用的那批,装不下就淘汰。路由本身有局部性,PR 作者实测,4090 上缓存只占专家总量约六分之一,命中率就有 77%,放进显存的专家比按层切还少(10.7 GB 对 16.5 GB),速度反而快了六成。在 5090 上,同样的思路能把提速倍数拉到 2.2。知乎GitHub

这套缓存不是 llama.cpp 首创,PR 写明是从 Tether 的 qvac-fabric 移植的,作者建议起步按专家总量的 10% 左右留缓存;未命中时还能让 CPU 直接用内存里的权重算,省掉 PCIe 传输,由 `–moe-cache-cpu-share` 控制。知乎GitHubGitHub
调参脚本 `moe-cache-tune.py` 是现成的,会在你这台机器上跑几轮组合:缓存 6464 MiB 时把分担比例从 0 调到 0.95,速度从 24.2 涨到 47.6 tokens/秒;可缓存加到 19392 MiB 后,0.95 反而比 0 慢。这个参数没有万能配置,得在自己机器上实跑一轮。知乎

升级前有几件事要知道:1.0 的稳定承诺只覆盖 C API,不覆盖性能和命令行默认值;这次清掉了一批废弃接口、把投机解码 API 提进了主头文件,直接链接 libllama 的项目要先改代码再换;b12xxx nightly 照常发布,社区的建议是先在一台测试机把启动脚本过一遍,再动正在跑的主力机。知乎GitHub知乎
另外,llama-server 的安全默认值收紧了:非本机回环地址、没配 API key 时,工具和 MCP 调用会被直接拒绝,要显式加 `–allow-unauthenticated-tools` 才放行。这个 server 如今内置了 Web UI、带 MCP 能力,越来越像一个本地 Agent 运行时,默认值偏安全是合理的选择。GitHubGitHub

最后留个彩蛋:这次 1.0 的 API 清理,是创始人 Gerganov 本人让 llama.cpp 本地跑着 DeepSeek V4.1 Flash 完成的。一个本地推理引擎靠跑在自己身上的模型来维护自己,对 1.0 来说大概比任何跑分都有说服力。不过上面的提速数字目前都还是贡献者自测,已经在用 `-cmoe` 的人,不妨等更多机器上的独立数据出来再动手。知乎