Ollama 0.31: 通过多 Token 预测实现更快的 Gemma 4 性能
Ollama 0.31 在 Apple Silicon 上为 Gemma 4 实现了多 Token 预测 (MTP),在编码代理 (coding-agent) 基准测试中,Token 生成速度平均提升了近 90%。此性能提升为默认启用,且不会改变模型的输出内容。
多 Token 预测 (MTP) 机制
Gemma 4 利用一个小型、快速的草稿模型 (draft model) 与主模型并行运行,以提议接下来的几个 Token。随后,主模型通过单次处理来验证这些提议,只要草稿模型的预测正确,就能以单个 Token 的成本提交多个 Token。
这对于代码生成特别有效,因为代码通常包含可预测的模式,例如闭合括号、重复的标识符和样板代码。因此,不断调用模型来读取文件并执行工具的编码代理变得响应速度显著提高。
技术实现
Ollama 0.31 的加速是通过三个主要的技术优化实现的:自动调整草稿长度、引擎级投机解码 (speculative decoding) 以及 GPU 内核优化。
自动调整草稿长度
由于理想的草稿 Token 数量会根据模型、量化方式、硬件以及文本的可预测性而变化,Ollama 会在运行时动态确定草稿长度。系统会跟踪提议的接受率和验证处理时长,以选择能使每秒 Token 数最大化的长度。如果提议被持续拒绝,系统会自动回退到标准的逐个 Token 解码模式,以确保投机过程不会降低性能。
投机解码引擎
生成过程遵循一个完全在 GPU 上执行的特定序列,以避免 CPU 往返开销:
- 草稿生成 (Drafting): 草稿模型预测一个 Token 序列。
- 采样与验证 (Sampling and Verification): 主模型在单次处理中验证整个提议序列。
- 提交 (Commitment): 保留已接受的 Token。对于被拒绝的 Token,引擎会使用在每次提议前记录的回滚点,回退到最后一个已接受的 Token,而无需重新计算之前的状态。
MLX 内核优化
验证是整个过程中计算开销最大的部分。由于草稿批次 (draft batches) 通常很小(2 到 8 个 Token),它们介于单 Token 解码和大规模批次预填充 (prefill) 之间,这使得标准的矩阵乘法内核变得低效。
Ollama 向 MLX 贡献了一个专门的内核,该内核只需读取并解包每个权重块一次,并在整个批次中重复使用它们。在配备 nvfp4 的 M5 Max 上,通过消除冗余工作并保持计算完全一致,这一优化使 Gemma 4 的最大矩阵乘法速度提升了 2 倍至 2.5 倍。
基准测试与可用性
性能是通过 Aider polyglot 基准测试测量的,该测试通过编码代理模拟真实的编程任务。结果显示,在 M5 Max 上,Gemma 4 12B (nvfp4) 的生成速度提升了近 90%。
要使用这些改进,用户必须下载适用于 macOS 的 Ollama 0.31 或更高版本。之前下载过 Gemma 4 的用户应使用以下命令重新拉取模型:
ollama pull gemma4:12b-mlx
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch