ollama v0.21.1发布:Kimi CLI原生集成、MLX推理性能飞跃、多模态长程任务能力全面进化

网易专栏6小时前发布 nxnqh
1 0 0

🤖 AI总结

主题

Ollama v0.21.1版本发布,聚焦性能优化与Kimi Code CLI集成。

摘要

Ollama v0.21.1新增Kimi Code CLI集成,并全面优化MLX Runner,提升本地模型运行效率与稳定性。

关键信息

  • 1 新增Kimi Code CLI集成,实现Moonshot coding agent与Ollama联动。
  • 2 MLX Runner全方位优化,提升性能与稳定性。
  • 3 修复gemma4模型格式约束问题,完善API接口。

ollama v0.21.1发布:Kimi CLI原生集成、MLX推理性能飞跃、多模态长程任务能力全面进化

ollama v0.21.1发布:Kimi CLI原生集成、MLX推理性能飞跃、多模态长程任务能力全面进化

ollama v0.21.1发布:Kimi CLI原生集成、MLX推理性能飞跃、多模态长程任务能力全面进化

近日,Ollama 正式发布 v0.21.1 版本,这是一次聚焦功能拓展与性能优化的重要更新。本次更新核心围绕两大方向展开:一是新增 Kimi Code CLI 集成,打通 Moonshot coding agent 与 Ollama 的联动,让终端与 IDE 中的代码开发体验更流畅;二是对 MLX Runner 进行全方位重构与优化,涵盖采样器、张量管理、推理管道等核心模块,大幅提升本地模型运行的稳定性、效率与数值正确性。此外,版本还包含模型推荐列表更新、Hermes Agent 文档优化、API 接口修复等多项细节改进,全方位提升用户使用体验。本文将详细拆解本次更新的全部内容,结合代码变更细节,帮助开发者快速掌握新版本的核心特性与使用方法。

一、版本核心更新概览

Ollama v0.21.1 版本的更新覆盖范围广泛,涉及命令行工具、模型管理、推理引擎、API 接口、文档等多个模块,具体可分为以下几大板块:

• 新增 Kimi Code CLI 集成,支持自动安装、配置与运行,实现 Moonshot coding agent 与 Ollama 模型的无缝联动;

  • • MLX Runner 全面优化,包括采样器重构、张量管理线程安全优化、推理管道优化、logprobs 支持完善等;

  • • 模型推荐与管理优化,更新推荐模型列表,调整模型排序规则,完善云模型上下文长度限制;

  • • Hermes Agent 文档重构,优化快速启动流程,调整推荐模型说明,简化配置步骤;

  • • API 接口修复,解决 gemma4 模型在禁用 thinking 时格式约束失效的问题,完善 logprobs 相关接口;

  • • 模型相关优化,包括 gemma4、glm4_moe_lite 等模型的细节修复与功能完善。

    本次更新不涉及新增功能模块,全部围绕现有功能的优化与完善展开,重点解决了此前版本中存在的性能瓶颈、功能缺陷与体验痛点,尤其针对 MLX 推理引擎的优化,让搭载 Apple Silicon 芯片的设备运行本地模型时获得更出色的性能表现。

    二、新增 Kimi Code CLI 集成:打通 Moonshot coding agent 与 Ollama

    本次更新最引人注目的功能,便是新增了 Kimi Code CLI 的集成支持。Kimi Code CLI 是 Moonshot 推出的一款终端与 IDE 专用 coding agent,具备强大的代码生成、调试、优化能力,而 Ollama v0.21.1 则实现了与该工具的深度联动,让用户可以直接通过 Ollama 命令启动 Kimi Code CLI,并自动配置 Ollama 模型作为其推理后端。

    2.1 核心集成特性

    本次集成并非简单的命令调用,而是实现了从安装、配置到运行的全流程自动化,核心特性包括:

    • 自动检测 Kimi Code CLI 安装状态,若未安装则提示用户进行安装,并自动执行安装脚本;

  • • 自动构建 Kimi 配置文件,将 Ollama 作为推理后端,默认使用 Ollama 模型作为 Kimi 的默认模型;

  • • 支持通过 Ollama 命令直接传递参数给 Kimi Code CLI,同时避免参数冲突;

  • • 跨平台支持,涵盖 Windows、macOS(darwin)、Linux 三大系统,包括 WSL 环境的适配;

  • • 自动解析 Ollama 模型的上下文长度,为 Kimi Code CLI 配置最优的最大上下文尺寸。

    2.2 相关代码变更详解

    为实现 Kimi Code CLI 集成,本次更新新增了 3 个核心文件,并修改了多个现有文件,具体如下:

    2.2.1 新增 cmd/launch/kimi.go:Kimi 集成核心逻辑

    该文件实现了 Kimi 集成的核心逻辑,包括 Kimi 二进制文件的查找、安装、配置构建、命令执行等功能,核心代码模块解析如下:

    • Kimi 结构体:实现 Runner 接口,用于定义 Kimi Code CLI 的运行逻辑,String 方法返回集成名称“Kimi Code CLI”。

  • • args 方法:构建 Kimi Code CLI 的运行参数,将 Ollama 生成的配置文件作为参数传递,并拼接用户传入的额外参数。

  • • Run 方法:核心运行逻辑,先验证参数是否存在冲突(如禁止用户传递 –config、–model 等 Ollama 已管理的参数),再构建 Kimi 配置文件,检测并安装 Kimi 二进制文件,最后执行 Kimi 命令并挂载标准输入输出。

  • • findKimiBinary 方法:跨平台查找 Kimi 二进制文件,支持多种安装路径,包括用户主目录下的 .local/bin、bin 目录,以及 uv 工具安装路径,同时适配 WSL 环境下的 Windows 路径转换。

  • • buildKimiInlineConfig 方法:生成 Kimi 的 inline 配置文件,将 Ollama 的 API 地址(http://127\.0\.0\.1:11434/v1)作为 Kimi 的推理后端,API Key 设为“ollama”,并配置默认模型别名与上下文长度。

  • • resolveKimiMaxContextSize 方法:解析 Ollama 模型的上下文长度,优先使用云模型的预设限制,若为本地模型则通过 Ollama API 获取模型信息中的上下文长度,默认值为 32768。

  • • ensureKimiInstalled 方法:检测 Kimi 是否安装,若未安装则检查安装依赖(如 Windows 需 PowerShell,Linux/macOS 需 curl 和 bash),提示用户确认后执行对应系统的安装脚本,安装完成后再次查找二进制文件并返回路径。

    2.2.2 新增 cmd/launch/kimi_test.go:Kimi 集成测试用例

    该文件为 Kimi 集成提供了完整的测试用例,涵盖二进制文件查找、配置构建、参数验证、安装流程等场景,确保集成功能的稳定性与正确性。由于测试用例代码量较大,此处重点说明测试覆盖范围:

    • 验证 Kimi 二进制文件的跨平台查找逻辑,包括不同安装路径、WSL 环境下的路径转换;

  • • 验证参数冲突检测逻辑,确保用户无法传递 Ollama 已管理的参数(如 –config、–model);

  • • 验证 Kimi 配置文件的构建逻辑,确保上下文长度、后端地址等配置正确;

  • • 验证安装流程的正确性,包括依赖检测、安装脚本执行、安装后二进制文件查找。

    2.2.3 新增 cmd/launch/registry.go 中的 Kimi 集成配置

    在集成注册表中新增 Kimi 集成的配置信息,包括集成名称“kimi”、Runner 实例、描述信息、安装检查逻辑等,确保 Ollama 能够识别并管理 Kimi 集成。核心配置如下:

    • Name: &;kimi&;,作为集成的唯一标识,用户可通过“ollama launch kimi”命令启动 Kimi Code CLI;

  • • Runner: &Kimi{},指定 Kimi 集成的运行逻辑;

  • • Description: &;Moonshot&;s coding agent for terminal and IDEs&;,描述集成的功能;

  • • Hidden: true,默认隐藏该集成(需通过命令主动启动);

  • • Install 配置:定义安装检查逻辑(通过查找 kimi 二进制文件)、安装确保逻辑(调用 ensureKimiInstalled 方法),以及官方安装文档地址。

    2.2.4 其他相关文件修改

    除新增文件外,本次更新还修改了多个现有文件,以支持 Kimi 集成:

    • cmd/launch/launch.go:在支持的集成列表中添加“kimi”,并更新帮助信息,让用户了解该集成的存在;

  • • cmd/launch/models.go:更新推荐模型列表,将原有的“kimi-k2.5:cloud”替换为“kimi-k2.6:cloud”,并更新其描述为“State-of-the-art coding, long-horizon execution, and multimodal agent swarm capability”,同时在云模型限制列表中新增“kimi-k2.6”的上下文长度限制(262144);

  • • cmd/launch/runner_exec_only_test.go:新增 Kimi 集成的测试用例,验证运行 Kimi 时不会重写配置文件。

    2.3 Kimi 集成使用方法

    通过 Ollama v0.21.1 启动 Kimi Code CLI 非常简单,只需执行以下命令:

    ollama launch kimi

    执行该命令后,Ollama 会自动完成以下操作:

    1. 检测系统中是否已安装 Kimi Code CLI,若未安装则提示用户确认安装;

  • 2. 安装完成后,自动构建 Kimi 配置文件,将 Ollama 作为推理后端;

  • 3. 提示用户选择 Ollama 模型(支持本地模型与云模型,如 kimi-k2.6:cloud);

  • 4. 启动 Kimi Code CLI,用户可直接在终端中使用 Kimi 的 coding 功能,推理请求将通过 Ollama 模型处理。

    若用户需要传递额外参数给 Kimi Code CLI,可在命令后直接添加,例如:

    ollama launch kimi --verbose

    注意:禁止传递 –config、–model、-m 等参数,这些参数由 Ollama 统一管理,避免冲突。

    三、MLX Runner 全方位优化:性能与稳定性双提升

    MLX Runner 是 Ollama 针对 Apple Silicon 芯片优化的推理引擎,本次 v0.21.1 版本对其进行了全方位的重构与优化,涉及采样器、张量管理、推理管道、logprobs 支持等多个核心模块,解决了此前版本中存在的线程安全问题、数值不稳定性、性能瓶颈等问题,大幅提升了本地模型的运行体验。

    3.1 采样器(sample)模块重构与优化

    采样器是推理引擎的核心组件,负责根据模型输出的 logits 采样得到下一个token,本次更新对采样器进行了全面重构,优化了采样逻辑、新增 logprobs 支持、完善 penalty 机制,具体变更如下:

    3.1.1 采样器结构体与接口优化

    原采样器的结构体设计较为简单,仅支持基础的采样功能,本次更新重构了采样器的结构体与接口,使其更具扩展性与可读性:

    • 新增 Options 结构体:整合采样相关的所有参数,包括 Temperature、TopP、MinP、TopK、RepeatLastN、RepeatPenalty、PresencePenalty、FrequencyPenalty、Logprobs、TopLogprobs 等,替代了原有的参数列表传递方式,使代码更简洁。

  • • 新增 Result 结构体:用于封装采样结果,包括采样得到的 token、该 token 的 logprob、top-K token 列表及其 logprob,解决了此前采样结果分散、难以管理的问题。

  • • 新增 Arrays 方法:用于返回 Result 中的所有张量,方便调用者统一管理张量的生命周期(如 Pin、Unpin、Eval 等操作)。

  • • 重构 New 方法:接受 Options 结构体作为参数,根据配置自动构建采样器的变换链(transforms),替代了原有的多参数传递方式,提升了代码的可维护性。

    3.1.2 采样逻辑优化

    本次更新优化了采样逻辑,重点解决了 top-P 与 top-K 联合使用时的性能问题,以及数值稳定性问题:

    • 新增 topKTopP 变换:当同时启用 top-P 和 top-K 时,通过一次排序操作同时实现 top-P 的累积概率过滤和 top-K 的位置过滤,避免了多次排序带来的性能损耗,提升了采样效率。

  • • 优化 top-K 变换:使用 Argpartition(部分排序)替代 Argsort(全排序),在仅需保留 top-K token 的场景下,大幅减少排序操作的计算量,提升性能。

  • • 优化数值稳定性:在计算 logprobs 时,先减去 logits 的最大值再进行 logsumexp 操作,避免了大数值相减导致的精度丢失,确保 logprobs 计算的正确性。

    3.1.3 penalty 机制完善

    penalty 机制用于减少重复 token 的生成,本次更新完善了 penalty 机制,新增了 RepeatPenalty 和 FrequencyPenalty 支持,使 penalty 控制更精细:

    • PresencePenalty:对已出现过的 token 进行惩罚,降低其被采样的概率,避免重复生成;

  • • RepeatPenalty:根据 token 的出现次数调整惩罚力度,对于重复出现的 token,若其 logits 为正则除以惩罚系数,若为负则乘以惩罚系数,进一步减少重复;

  • • FrequencyPenalty:根据 token 的出现频率进行惩罚,出现次数越多,惩罚力度越大,适用于需要避免高频重复 token 的场景。

    同时,优化了 penalty 变换的逻辑,确保 penalty 仅在有历史 token 时生效,避免了无历史数据时的无效计算。

    3.1.4 logprobs 支持完善

    logprobs 用于返回采样 token 的概率信息,是很多应用场景(如模型评估、不确定性分析)的重要需求,本次更新完善了 logprobs 的支持,具体包括:

    • 新增 Logprobs 和 TopLogprobs 配置:用户可通过配置启用 logprobs 功能,并指定 top-K logprobs 的数量;

  • • 正确计算 logprobs:通过 log_softmax 计算每个 token 的 logprob,确保数值正确性;

  • • 返回 top-K logprobs:当启用 TopLogprobs 时,返回采样 token 之外的 top-K 个 token 及其 logprob,并按 logprob 降序排序;

  • • 确保 logprobs 与 content 对齐:通过 decoder 结构体缓存未完成的 UTF-8 字节,确保 logprobs 与返回的 content 一一对应,避免错位。

    3.1.5 新增 logprob_test.go 测试用例

    为确保 logprobs 功能的正确性,本次更新新增了 sample/logprob_test.go 文件,包含了全面的测试用例,覆盖以下场景:

    • 基础功能测试:验证 logprobs 的计算是否正确,top-K logprobs 的排序是否正确;

  • • 数值稳定性测试:验证在 logits 数值较大或较小时,logprobs 的计算是否仍保持稳定,无无穷大或NaN值;

  • • 概率正确性测试:验证所有 token 的 logprob 对应的概率之和是否为 1,符合概率分布要求;

  • • 选中 token 正确性测试:验证选中 token 的 logprob 是否与 top-K logprobs 中的对应值一致,且选中 token 为 logits 最大的 token(贪心采样场景)。

    3.2 张量(mlx/array.go)管理优化

    张量管理是 MLX Runner 性能与稳定性的关键,本次更新对张量管理模块进行了重点优化,解决了线程安全问题,完善了张量操作接口:

    3.2.1 线程安全优化

    原张量管理模块存在线程安全隐患,多个 goroutine 同时操作 tensors 切片时可能导致数据竞争,本次更新通过以下方式解决:

    • 新增 arraysMu 互斥锁:对 tensors 切片的读写操作进行加锁,确保多个 goroutine 同时操作时的线程安全;

  • • 使用 atomic 包:将 pinned 字段从 int 改为 atomic.Int32,确保对 pinned 计数器的原子操作,避免数据竞争。

    3.2.2 张量操作接口完善

    完善了张量的操作接口,新增了多个实用方法,同时优化了现有方法的参数与返回值,提升了接口的易用性:

    • 新增 MaxAxis 方法:用于计算指定轴上的最大值,支持是否保留维度;

  • • 新增 ScatterAddAxis 方法:用于在指定轴上根据索引进行散射加法操作;

  • • 优化 Dims、Dim、DType 等方法:将方法接收者从值类型改为指针类型,避免值拷贝带来的性能损耗;

  • • 完善 LogArrays 方法:在打印张量信息时,使用 atomic.Load 读取 pinned 计数器的值,确保线程安全。

    3.2.3 张量生命周期管理优化

    优化了张量的生命周期管理,确保张量能够及时释放,减少内存占用:

    • 完善 Pin/Unpin 方法:使用 atomic 计数器管理张量的引用计数,避免出现负引用计数的情况;

  • • 优化 Sweep 方法:在清理未被 pinned 的张量时,先加锁再操作 tensors 切片,确保线程安全,同时避免误删被 pinned 的张量;

  • • 完善 LogArrays 方法:在打印张量信息时,正确显示每个张量的 pinned 计数,方便开发者调试内存泄漏问题。

    3.3 推理管道(pipeline.go)优化

    推理管道是 MLX Runner 处理推理请求的核心流程,本次更新对推理管道进行了全面优化,提升了推理效率与稳定性,同时完善了请求处理逻辑:

    3.3.1 新增 Prepare 方法

    新增 Prepare 方法,用于对推理请求进行预处理,包括 token 编码、上下文长度验证、生成 token 数量限制等,将预处理逻辑与推理逻辑分离,提升了代码的可维护性:

    • token 编码:使用 tokenizer 对输入 prompt 进行编码,添加 BOS token;

  • • 上下文长度验证:检查编码后的 token 长度是否超过模型的最大上下文长度,若超过则返回错误;

  • • 生成 token 数量限制:根据模型的最大上下文长度,计算最大可生成的 token 数量,确保推理过程不会超出上下文限制。

    3.3.2 推理流程优化

    优化了推理流程的逻辑,减少了不必要的计算与内存占用,提升了推理效率:

    • 预填充优化:将预填充的 chunk 大小设置为 2048(2<<10),优化预填充过程的内存使用;

  • • 张量生命周期管理:在推理过程中,及时对不需要的张量进行 Unpin 操作,释放内存;

  • • 异步评估优化:使用 AsyncEval 方法异步评估张量,提升推理效率;

  • • 缓存清理:每生成 256 个 token 清理一次缓存,减少内存占用,避免内存泄漏。

    3.3.3 解码器(decoder)优化

    新增 decoder 结构体,用于将采样得到的 token 解码为字符串,并确保 logprobs 与 content 对齐,解决了此前解码过程中可能出现的 UTF-8 字节不完整、logprobs 错位等问题:

    • 缓存未完成的 UTF-8 字节:当解码得到的字符串包含不完整的 UTF-8 字节时,将其缓存,待下一个 token 解码后拼接,确保解码结果的正确性;

  • • logprobs 与 content 对齐:将每个 token 的 logprob 与对应的解码字符串关联,确保返回的 logprobs 与 content 一一对应,避免错位。

    3.3.4 错误处理优化

    完善了推理过程中的错误处理,确保在出现上下文取消、模型未加载等错误时,能够及时返回错误信息,避免程序崩溃:

    • 上下文取消处理:在推理过程中定期检查上下文是否被取消,若取消则立即返回错误;

  • • 模型加载检查:在推理开始前检查模型是否已加载,若未加载则返回错误;

  • • 输出 token 检查:检查采样得到的 token 是否为 EOS token,若为 EOS token 则终止推理,返回结果。

    3.4 其他 MLX 相关优化

    除上述核心模块外,本次更新还对 MLX 相关的其他模块进行了优化,包括 mlx/act.go、mlx/compile.go、mlx/fast.go、mlx/nn.go、mlx/ops.go 等:

    3.4.1 mlx/act.go 新增 SigmoidRouter 方法

    新增 sigmoidRouterFused 融合内核和 SigmoidRouter 方法,实现了 DeepSeek-V2 / GLM-MoE 无辅助损失的路由器头,返回 sigmoid(gates) 和 -(sigmoid(gates)+bias) 两个输出,减少了内核调用次数,提升了 MoE 模型的推理效率。

    3.4.2 mlx/compile.go 优化

    优化了编译过程中的张量检查逻辑,使用 atomic.Load 读取 pinned 计数器的值,确保线程安全,避免在编译过程中出现张量被误删的情况。

    3.4.3 mlx/fast.go 优化

    将 LayerNorm 和 RMSNorm 结构体中的 Weight 和 Bias 字段从值类型改为指针类型,避免值拷贝带来的性能损耗,同时优化了 Forward 方法的逻辑,提升了归一化操作的效率。

    3.4.4 mlx/nn.go 优化

    将 Linear 和 Embedding 结构体中的 Weight 和 Bias 字段从值类型改为指针类型,优化了 Forward 方法的逻辑,提升了线性变换和嵌入操作的效率,同时完善了 Gather 方法的实现,支持更灵活的索引操作。

    3.4.5 mlx/ops.go 新增方法

    新增 MaxAxis 和 ScatterAddAxis 方法,完善了张量的操作接口,为后续的模型优化提供了更多支持。

    3.5 服务器(server.go)与运行器(runner.go)优化

    对 MLX Runner 的服务器和运行器进行了优化,完善了请求处理逻辑,提升了接口的兼容性与稳定性:

    3.5.1 server.go 优化

    • 完善请求解码逻辑:将请求解码从 TextCompletionsRequest 改为 CompletionRequest,支持更多的请求参数,包括 Logprobs、TopLogprobs 等;

  • • 优化采样器初始化:根据请求参数初始化采样器,支持 RepeatPenalty、FrequencyPenalty 等新增参数;

  • • 新增请求预处理:在处理推理请求前,调用 Prepare 方法对请求进行预处理,确保请求参数的正确性。

    3.5.2 runner.go 优化

    • 重构 Request 结构体:将 TextCompletionsRequest 替换为 CompletionRequest,新增 Tokens 字段用于存储编码后的 token,提升了请求处理的效率;

  • • 优化 Pipeline 方法:将 Pipeline 方法的参数改为 context.Context 和 Request,确保上下文取消能够正确传递;

  • • 完善 Sampler 管理:在请求处理完成后,及时释放 Sampler 资源,减少内存占用。

    四、模型推荐与管理优化

    本次更新对 Ollama 的模型推荐与管理功能进行了优化,调整了推荐模型列表,完善了模型排序规则和云模型限制,提升了用户的模型选择体验。

    4.1 推荐模型列表更新

    在 cmd/launch/models.go 文件中,对推荐模型列表进行了更新:

    • 将原有的“kimi-k2.5:cloud”模型替换为“kimi-k2.6:cloud”,并更新其描述为“State-of-the-art coding, long-horizon execution, and multimodal agent swarm capability”,突出其在编码、长序列执行和多模态智能体集群方面的优势;

  • • 在云模型限制列表(cloudModelLimits)中新增“kimi-k2.6”的上下文长度限制,设置为 262144,与 kimi-k2.5 保持一致,确保模型运行时的上下文管理正确。

    4.2 模型排序规则优化

    在 cmd/launch/models_test.go 文件中,优化了模型列表的排序规则,确保推荐模型(尤其是云模型)优先显示,具体调整如下:

    • 将测试用例中的“kimi-k2.5:cloud”替换为“kimi-k2.6:cloud”,确保测试用例与推荐模型列表一致;

  • • 完善模型排序逻辑,确保已安装的模型和云模型优先显示,推荐模型排在非推荐模型之前,云模型在混合场景下优先排序。

    4.3 模型相关测试用例更新

    更新了多个模型相关的测试用例,确保模型推荐、排序、限制等功能的正确性:

    • models_test.go:更新测试用例中的模型名称,将“kimi-k2.5:cloud”替换为“kimi-k2.6:cloud”,确保测试用例与实际推荐模型一致;

  • • registry.go:完善 Kimi 集成的模型推荐逻辑,确保“kimi-k2.6:cloud”被正确识别为推荐模型;

  • • gemma4_moe_test.go:新增模型类型转换逻辑,将推理结果的张量类型转换为 int32,确保测试用例的正确性。

    五、Hermes Agent 文档优化

    本次更新对 Hermes Agent 的文档(docs/integrations/hermes.mdx)进行了全面重构,优化了文档结构,简化了使用流程,调整了推荐模型说明,提升了文档的可读性与实用性。

    5.1 文档结构优化

    重构了文档的结构,将原有的“Quick start”“Install”“Set up”“Recommended models”等章节重新组织,使流程更清晰,重点更突出:

    • Quick start:简化快速启动流程,明确“ollama launch hermes”命令的功能,说明 Ollama 会自动完成安装、模型选择、配置等操作;

  • • Recommended models:调整推荐模型列表,将原有的“kimi-k2.5:cloud”替换为“kimi-k2.6:cloud”,同时更新本地模型推荐,新增“qwen3.6”模型,说明其内存需求;

  • • Connect messaging apps:简化消息应用连接流程,明确需要先准备模型,再运行“hermes gateway setup”命令;

  • • Reconfigure:简化重新配置流程,提供“hermes setup”命令用于重新运行设置向导;

  • • Manual setup:简化手动安装流程,明确安装命令和后续的设置步骤。

    5.2 内容细节调整

    对文档的内容细节进行了调整,修正了部分错误,补充了关键信息:

    • 补充 Hermes Agent 的核心特性:新增“70+ skills that it ships with by default”,说明其默认包含的技能数量;

  • • 修正 Windows 环境说明:明确 Hermes Agent 在 Windows 上需要 WSL2,并提供安装命令“wsl –install”;

  • • 调整推荐模型描述:更新各模型的描述,突出其核心优势,如“kimi-k2.6:cloud”的编码和多模态能力;

  • • 简化配置步骤:删除原有的“Configure later”章节,将相关内容整合到“Reconfigure”章节,使文档更简洁;

  • • 补充模型链接:提供“ollama.com/search”链接,方便用户查找更多模型。

    六、API 接口修复与优化

    本次更新对 Ollama 的 API 接口进行了修复与优化,重点解决了 gemma4 模型在禁用 thinking 时格式约束失效的问题,完善了 logprobs 相关接口,提升了 API 的稳定性与兼容性。

    6.1 修复 gemma4 模型格式约束失效问题

    在 server/routes.go 文件中,修复了 gemma4 模型在禁用 thinking(think=false)时,格式约束(format)失效的问题。该问题的原因是,此前的逻辑会对所有支持 thinking 的模型延迟应用格式约束,而当 thinking 被禁用时,不会触发格式约束的重新应用,导致格式约束失效。

    修复方案:新增 forceImmediate 变量,当模型为 gemma4、请求明确禁用 thinking 且设置了格式约束时,强制立即应用格式约束,不进行延迟处理。核心代码变更如下:

    forceImmediate := m.Config.Parser == "gemma4" && req.Think != nil && !req.Think.Bool()
    if req.Format != nil && structuredOutputsState == structuredOutputsState_None && !forceImmediate && ((builtinParser != nil || thinkingState != nil) && slices.Contains(m.Capabilities(), model.CapabilityThinking)) {
    currentFormat = nil
    }

    同时,在 server/routes_generate_test.go 文件中,新增了 TestChatFormatWithThinkFalse 测试用例,验证该修复的正确性,确保 gemma4 模型在禁用 thinking 时,格式约束能够正确应用。

    6.2 完善 logprobs 相关 API 支持

    随着 MLX Runner 中 logprobs 功能的完善,本次更新也对 API 接口进行了相应调整,确保 logprobs 能够正确返回:

    • 在 x/mlxrunner/client.go 中,重构了 CompletionRequest 和 CompletionResponse 结构体,新增 Logprobs 字段,支持返回 logprobs 信息;

  • • 优化了 API 响应的序列化逻辑,确保 logprobs 能够正确序列化为 JSON 格式,返回给调用者;

  • • 修复了 API 错误返回逻辑,将错误信息封装为 api.StatusError,确保错误响应的格式统一。

    6.3 其他 API 相关优化

    在 integration/api_test.go 文件中,删除了 TestAPIGenerateLogprobs 和 TestAPIChatLogprobs 测试用例中的跳过逻辑,确保 logprobs 相关 API 的测试能够正常执行,验证 API 接口的正确性。

    七、模型相关优化

    本次更新对部分模型的实现进行了优化,包括 gemma4、glm4_moe_lite 等,提升了模型的推理效率与正确性。

    7.1 gemma4 模型优化

    在 x/models/gemma4/gemma4_moe_test.go 文件中,新增了模型类型转换逻辑,将推理结果的张量类型转换为 int32,确保测试用例的正确性,避免因类型不匹配导致的测试失败。核心代码变更如下:

    gotInds = gotInds.AsType(mlx.DTypeInt32)
    wantInds = wantInds.AsType(mlx.DTypeInt32)

    7.2 glm4_moe_lite 模型优化

    在 x/models/glm4_moe_lite/glm4_moe_lite.go 文件中,优化了 MoEGate 的 Forward 方法,使用新增的 mlx.SigmoidRouter 方法替代原有的 sigmoid 和加法操作,提升了 MoE 路由器的运行效率。核心代码变更如下:

    • 当存在 EScoreCorrectionBias 时,调用 mlx.SigmoidRouter 方法获取 origScores 和 negScores,替代原有的 sigmoid 和加法操作;

  • • 优化了 scores 的计算逻辑,确保路由器的输出正确。

    7.3 其他模型测试优化

    在 x/models/nn/nn_test.go 文件中,优化了量化线性层的测试用例,将推理结果的张量类型转换为 float32,确保测试用例的数值对比正确,避免因类型不匹配导致的测试失败。核心代码变更如下:

    qOut := ql.Forward(input).AsType(mlx.DTypeFloat32)
    dOut := NewLinear(dequantizedWeight, nil).Forward(input).AsType(mlx.DTypeFloat32)

    八、版本更新总结与使用建议 8.1 版本更新总结

    Ollama v0.21.1 版本是一次聚焦优化与完善的重要更新,核心亮点包括:

    • 新增 Kimi Code CLI 集成,实现 Moonshot coding agent 与 Ollama 的无缝联动,提升终端与 IDE 中的代码开发体验;

  • • MLX Runner 全方位优化,解决了线程安全、数值稳定性、性能瓶颈等问题,完善了 logprobs 支持,提升了本地模型的运行效率与稳定性;

  • • 模型推荐与管理优化,更新推荐模型列表,调整排序规则,完善云模型限制,提升用户模型选择体验;

  • • Hermes Agent 文档重构,简化使用流程,补充关键信息,提升文档可读性与实用性;

  • • API 接口修复与优化,解决 gemma4 模型格式约束失效问题,完善 logprobs 支持,提升 API 稳定性与兼容性;

  • • 模型相关优化,提升部分模型的推理效率与测试正确性。

    本次更新未新增突破性功能,但通过对现有功能的优化与完善,有效解决了此前版本中存在的痛点问题,尤其是 MLX Runner 的优化,让搭载 Apple Silicon 芯片的设备能够获得更出色的本地模型运行体验,Kimi Code CLI 的集成则进一步拓展了 Ollama 的应用场景,为开发者提供了更便捷的 coding 工具。

    8.2 使用建议

    针对本次版本更新,给出以下使用建议:

    • 建议所有用户升级到 v0.21.1 版本,尤其是使用 Apple Silicon 芯片设备的用户,可显著提升本地模型的运行效率与稳定性;

  • • 需要使用 Kimi Code CLI 的开发者,可通过“ollama launch kimi”命令快速启动,无需手动安装与配置,体验更便捷;

  • • 使用 gemma4 模型且需要格式约束的用户,需确保设置 think=false 时,格式约束能够正确应用,可通过 API 测试验证;

  • • 使用 Hermes Agent 的用户,可参考更新后的文档,简化配置流程,选择推荐的模型(如 kimi-k2.6:cloud)获得更好的体验;

  • • 开发者在使用 logprobs 功能时,可通过配置 Logprobs 和 TopLogprobs 参数,获取更详细的概率信息,用于模型评估与不确定性分析。

    8.3 后续展望

    代码地址:github.com/ollama/ollama

    从本次更新可以看出,Ollama 团队正聚焦于现有功能的优化与完善,提升用户体验与性能稳定性。后续,预计 Ollama 将继续推进以下方向的发展:

    • 进一步优化 MLX Runner 的性能,支持更多模型类型,提升推理效率;

  • • 拓展更多第三方工具集成,丰富 Ollama 的应用场景;

  • • 完善模型管理功能,支持更灵活的模型配置与调度;

  • • 提升 API 接口的兼容性与扩展性,支持更多应用场景的集成。

    总体而言,Ollama v0.21.1 版本是一次非常实用的更新,虽然没有新增突破性功能,但通过对现有功能的精细化优化,有效提升了产品的稳定性与用户体验,值得所有用户升级使用。

    我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

    © 版权声明

    相关文章