llama.cpp v0.7.0 大版本:MoE 专家缓存解码最高提速 2.2 倍,默认端口改 9931
跑本地模型的老牌引擎 llama.cpp 于 10 月 15 日挂出功能大版本 v0.7.0(UTC,北京时间 10 月 16 日凌晨),改动相当集中:MoE 专家缓存、两条投机解码线、十余款新模型支持一次到位,同时把服务器默认端口从 8080 改成了 9931——升级前值得把下面第三节看完。
最大看点:主机内存 MoE 专家缓存,解码最高约 2.2 倍
v0.7.0 给 MoE(混合专家)模型加了一个新的 GPU 缓存:--moe-cache-mib 参数启用后,专家权重常驻主机内存,GPU 侧按 LRU(最近最少使用)缓存动态装载当前用到的专家(#29887)。官方给出的倍数口径很明确:在专家被卸载(offload 到主内存)的场景下,解码最高约 2.2 倍提速。
这个场景正是显存吃紧玩家跑 MoE 大模型的常态——显存装不下全套专家、只能把大部分专家放在内存里按需换页,以前每次命中冷专家都要等一次 PCIe 搬运,现在热点专家留在 GPU 缓存里反复复用。配套还有一条:专家缓存支持跨多 GPU 共享(#30112),多卡环境同样受益。
需要注意 2.2 倍的适用边界:它是 MoE 缓存这一项的收益,且前提是专家确实被卸载——显存放得下全套专家的模型吃不到这波提速。
投机解码:新增 LiliCorr 与 GLM5-Next MTP
- LiliCorr 投机解码(#30506):在既有 DFlash 方案之上,用一个小的草稿 transformer 做候选选择——「小模型先猜、大模型只把关」的提速路线再添一员,draft 模型转换与计算图同版本就绪。
- GLM5-Next 的 MTP 投机解码(#29928):随多 token 预测(MTP)一起落地的还有一条优化过的稀疏注意力路径。
- 配套新增
--spec-draft-n-ubatch(#30459):草稿上下文的批尺寸可以独立设置,跑投机解码时给显存省出一块。
默认端口 8080 → 9931:升级前必看
llama-server 的默认监听端口从 8080 改为 9931(#30159)。官方迁移口径只有两条,但对自动化脚本足够关键:
- 直跑二进制:升级后不传
--port就监听 9931。客户端 URL 写死localhost:8080的要跟着改;反过来,脚本里显式写了--port 8080的不受影响。 - Docker 镜像:官方明确容器内保留 8080(避免破坏基于官方基础镜像的既有工具),
-p端口映射写法不变,容器外访问端口由映射决定。
# 直跑:升级后默认监听 9931
llama-server -m model.gguf # 现在监听 http://localhost:9931
llama-server -m model.gguf --port 8080 # 依赖旧行为的脚本可显式固定端口
# Docker:容器内仍是 8080,端口映射写法不受影响
新模型支持:十余款,集中在 embedding 与决策模型
| 模型 | 类型 | 看点 |
|---|---|---|
| EmbeddingGemma-2 | 多模态 embedding(文本+视觉+音频) | Google DeepMind 出品,740M 总参 |
| K2 Horizon | 对话模型(dense + MoVA 双变体) | 含转换、tokenizer、聊天模板与 -sm tensor 张量并行切分 |
| Prism Bonsai 2 27B | 三元权重对话模型 | 27B 三元路线,内存友好 |
| MiniCPM-V 4.7 | 多模态 | 10 月中旬热榜上「手机级多模态」家族的引擎侧支持到位 |
| Nemotron Super 3.5 VL / Bolt 74B A9B | 多模态 / MoE | 英伟达系双发 |
| LiquidAI d1-3B / d1-omni-600M | 决策模型 | 小到手机级,10 月上旬曾上热榜 |
| vLLM decision 2 / d3、pplx-decider | 决策模型 | 与 Ollama v0.40.7-rc0 收录 PPLX Decider 1.2 同期(见站内 007) |
| maion-coder、Mellum | 代码 / MoE | 架构级支持 |
| Reranker 增强 | 重排序 | classifier_activation 支持、ModernBERT 精确 GELU |
其中 EmbeddingGemma-2 值得单说。按官方模型卡口径:740M 总参数(270M 文本骨干——130M transformer + 140M embedder,另配 170M 视觉与 300M 音频编码器,可按需只加载所需模态),把文本(含代码)、图像、视频、音频映射进统一 768 维向量空间,支持 100+ 语言,8K 上下文,原生支持 MRL 嵌套表示(128/256/512/768 维可截断,向量存储成本最高省 6 倍),目标设备就是手机与笔记本。Apache 2.0 许可,HuggingFace 上 17.2 万下载、2748 赞(截至 10 月 20 日)。
llama.cpp 侧还有一条配套优化放大了它的实用价值:embedding 模型启用 pooling 时跳过 LM head 与 logits 缓冲(#30255、#30445),显存占用最高降 10 倍——「消费级设备跑多模态语义检索」这条链路的两个零件在同一个版本里凑齐了。
服务端与 Web UI:会话 API 重构,集成方注意一处破坏性变更
- 聊天层重构(#30210、#30389):服务端聊天层围绕新的
common_chat_session(feed()/finish())重写;格式化聊天输出从单个字符串改为分部件数组(parts)——直接解析旧格式输出的集成代码需要适配,这是本版对二次开发者最主要的一处破坏性变更。 - slot 与 prompt cache 恢复大改进:只保存可恢复的 slot 状态(rerank/embedding 请求不再污染缓存)、子任务优先用空 slot 并保住将被覆盖的状态、slot 保存/恢复保留上下文检查点与草稿模型状态——长会话热恢复的可靠性明显上了一个台阶。
- Web UI 全新 Models Manager(#29583):一张表管理全部已服务模型,支持加载/卸载、从磁盘删除、隐藏、可续传下载、收藏与筛选排序。
- 底层 ggml 同步升到 v0.27.0:RPC 协议升到 v8(支持张量并行 RPC)、CUDA/HIP 分块 gated-delta-net kernel、Metal 张量 API flash attention 扩展等一批后端优化。
后续动态:v0.7.0 仍是最新功能版
截至发稿(10 月 20 日晚),v0.7.0 之后没有 v0.7.1 或更新的功能版本,v0.7.0 就是当前稳定线。每日夜构建滚动到 b11756,其中 b11750–b11756 为 10 月 20 日例行修复连发(MoE kernel 补 9 专家变体、SYCL 告警清理等),无功能级主线,v0.7.0 用户不必追。
参考链接
- llama.cpp v0.7.0 Release Notes
- PR #29887:llama.cpp: add a GPU cache for MoE experts kept in host memory
- PR #30506:spec: add lilicorr support
- PR #30159:server: use port 9931 by default
- PR #30054:model: support embeddinggemma2 (text+vision+audio)
- PR #30255:llama: skip logits buffer allocation when graph produces no logits
- EmbeddingGemma-2 官方模型卡
- 站内 007:Ollama v0.40.7-rc0 预发布