2025 年 9 月 25 日,Ollama 发布了 v0.12.2 版本,这是一次对底层引擎和模型支持进行重要优化的更新。该版本不仅提升了对 Qwen3 架构(包括 MoE 混合专家模型)的运行支持,还在分词器、内置工具渲染、张量加载等方面做出重大调整。本文将详细解析本次更新的技术细节和影响。
一、核心更新摘要
Qwen3 架构模型(含 MoE)切换到 Ollama 新引擎运行
- 新引擎更好地支持 Qwen3 系列权重加载与推理,包括 Qwen3-MoE(混合专家)模型。
- 推理性能、兼容性的提升,对未来更多模型加载是关键一步。
修复 gpt-oss 内置工具渲染问题
- 在聊天输出中,某些内置工具(如浏览器、Python)名称被意外重命名,导致识别异常。
- v0.12.2 中明确了“内置函数不重命名”逻辑,保障工具调用的一致性。
支持 Multi-Regex 分词器(Multi-Regex pretokenizers)
- BytePairEncoding(BPE)分词器支持传入多个 regex 模式,实现复杂的分词规则组合。
- 例如同时针对数字、中文、符号进行独立匹配,提升多语言处理精度。
新引擎支持张量名前缀(pre:)与后缀(suf:)匹配加载
- 允许模型权重 Tag 中指定前缀/后缀,以便灵活组合子张量名称。
- 对复杂网络层结构(如 shexp、b 前缀)有更好的权重绑定能力。
二、分词器(BytePairEncoding)重大调整
此前的 NewBytePairEncoding
方法只接受一个 regex 作为预分词器,这在实际应用中不足以应对多语言和特殊字符的组合处理。本次更新:
func NewBytePairEncoding(vocab *Vocabulary, pretokenizers ...string) BytePairEncoding
关键变化:
- 支持 多正则表达式数组,依次分割文本。
- 默认预分词器覆盖缩写、字母、数字、符号、空格等典型模式。
- 新增
split()
实现链式 regex 切分,确保各类特殊序列被精确识别。
测试示例:
- 默认模式:
Hello, WORLD!! How's it going? 123 一二三
- Unicode模式:单独匹配中文字符
[一-龥]
,数字分割为整体或单个数字。 - 数码逐位模式:将
123
切为1
,2
,3
。
这意味着 Ollama 在文本预处理环节获得更高的灵活度,尤其在多语言 NLP 场景中表现更佳。
三、Tag 系统优化:前缀/后缀匹配
模型权重文件在加载时通常通过 Tag 名匹配张量,v0.12.2 新增了 pre: 与 suf: 标签支持:
type Tag struct {
name string
prefix string
suffix string
alternatives []string
}
功能说明:
pre:
指定在张量名匹配前插入的前缀,例如b_
。suf:
指定附加到张量名的后缀,例如_c
。- 支持
alt:
提供备用名称,并在无主名时自动提升为主名。
应用场景:
例如,模型结构中有以下权重名:
blk.0.a.weight
blk.0.b_weight
blk.0.weight_c
blk.0.x_weight_y
通过 Tag 配置可以快速映射到对应结构体字段,减少硬编码。
四、内置工具不重命名
在 Harmony 解析器中,确认以下内置工具名称保持原样:
browser.open
browser.search
browser.find
python
这解决了 v0.12.1 中用户报告的 调用工具名被改写 问题,确保工具调用的稳定性和兼容性,尤其是与外部插件交互时。
五、各模型加载代码调整
为了适配 Multi-Regex 方案和新引擎,本次更新重构了多个模型的加载方法,包括:
- llama / llama4 系列
- mistral3
- mllama
- qwen2、qwen25vl、qwen3
所有这些模型均由单一 regex pretokenizer 改为可以传入多条 regex,提升可扩展性。
六、开发者影响与升级建议
对模型作者:
- 通过在 GGUF 标签中添加
pre:
/suf:
,可以更精准地映射复杂张量名。 - 使用多 regex 分词能显著提升非英文文本的处理效果。
对推理系统维护者:
- 新引擎对 Qwen3 MoE 支持,意味着可以在 Ollama 中稳定部署混合专家模型。
- 内置工具不重命名修正,提升与工具 API 对接的稳定性。
七、总结
ollama v0.12.2 是一次针对核心引擎、分词器、模型加载逻辑的全面升级,尤其是:
- 新引擎全面支持 Qwen3 MoE
- 多 Regex 分词器
- Tag 前后缀功能
- 内置工具渲染修复
这些改动不仅提升了模型运行的稳定性和灵活性,也为未来多语言 NLP 和复杂模型加载奠定了基础。