ollama v0.22.0 发布:新增 NVIDIA Nemotron 3 Omni 与 Poolside Laguna 模型支持,推理能力再升级!

news2026/4/30 3:13:22
引言2026年4月29日Ollama 团队正式发布了 v0.22.0 版本。本次更新是一次意义重大的版本迭代不仅引入了两个重量级的新模型——NVIDIA 的 Nemotron 3 Omni 和 Poolside 的首个开源编码模型 Laguna XS.2还在推理控制、模型转换、量化策略、MLX 后端性能、内置解析器等多个核心模块进行了深度优化。本文将基于 v0.22.0 的完整变更日志为您详细解读本次更新的每一个技术细节帮助开发者全面理解新版本的能力边界和使用方法。一、新模型支持两大重量级模型登场1.1 NVIDIA Nemotron 3 Omniv0.22.0 引入了对 NVIDIA Nemotron 3 Omni 系列模型的原生支持。这是一个多模态模型家族在代码中对应的架构标识为nemotron_h_omni。该模型支持文本生成基于 Nemotron-H 架构的 LLM 核心视觉理解集成了 Vision TransformerViT模块支持图像输入音频处理集成了 Parakeet 音频编码器支持语音输入在转换器converter层面新增了convert/convert_nemotron_h.go和convert/convert_nemotron_h_test.go两个文件共约 700 行代码专门处理 Nemotron 系列模型的权重映射和参数转换。关键配置参数包括max_sequence_length: 131072128K 上下文vision.image_size: 512vision.patch_size: 16audio.sample_rate: 160001.2 Poolside Laguna XS.2Poolside 的首个开源权重编码模型 Laguna XS.2 也获得了完整支持。这是一个专注于代码生成和软件工程任务的模型架构标识为LagunaForCausalLM。新增的模型支持文件包括model/models/laguna/model.go约 440 行Laguna 模型的 MLX 实现convert/convert_laguna.go约 600 行GGUF 转换逻辑model/parsers/laguna.go约 500 行专用的输出解析器model/renderers/laguna.go约 110 行模板渲染器Laguna 模型采用了混合专家MoE架构支持动态稀疏层的推理优化。其配置包括逐层可变的注意力头数head_count 为数组而非固定值滑动窗口注意力sliding window模式旋转位置编码RoPE支持全维度和 SWA 两套参数二、推理控制增强新增 “max” 思考级别2.1 API 层面的变更在api/types.go中ThinkValue类型现在支持一个全新的字符串值“max”。这意味着思考级别从原来的high/medium/low三个档位扩展为四个// ThinkValue represents a value that can be a boolean or a string (high, medium, low, max)typeThinkValuestruct{Valueinterface{}}验证逻辑已同步更新casestring:returnvhigh||vmedium||vlow||vmax2.2 OpenAI 兼容接口映射在openai/openai.go中OpenAI 风格的reasoning_effort参数现在也支持max值if!slices.Contains([]string{high,medium,low,max,none},effort){returnnil,fmt.Errorf(invalid reasoning value: %s (must be \high\, \medium\, \low\, \max\, or \none\),effort)}当reasoning_effort为none时思考功能被禁用其他字符串值包括max则按原样传递。Responses API 也同步支持了maxcaselow,medium,high,max:thinkapi.ThinkValue{Value:effort}2.3 CLI 命令行支持cmd/cmd.go中的--think参数现在接受max作为合法值casehigh,medium,low,max:opts.Thinkapi.ThinkValue{Value:thinkStr}三、MLX 后端重大改进3.1 采样器历史记录优化mlxrunner: track sampler history in a fixed-size ring buffer采样器现在使用固定大小的环形缓冲区来追踪 token 历史而不是无限增长的切片。这显著降低了长时间运行时的内存占用。3.2 批量采样优化mlxrunner: batch the sampler across multiple sequences采样器现在支持批量处理多个序列将多个独立生成请求的采样操作合并为一次矩阵运算。这在处理并行请求时能大幅提升吞吐量。3.3 采样器核心重构x/mlxrunner/sample/sample.go进行了大规模重构415/-122 行主要改进包括多槽位multi-slot支持采样器现在可以管理多个独立的生成会话每个槽位有自己的历史记录和采样参数批量 Logprob 计算当多个槽位同时请求 logprobs 时一次性完成 softmax 和 log 计算TopK/TopP 采样优化使用 MLX 原生的 argpartition 操作避免显式的完整排序新增的Add(slot int, opts Options, history []int32)方法用于注册采样槽位Sample(slots []int, logits *mlx.Array)方法支持批量采样。3.4 新增 Softplus 激活函数x/mlxrunner/mlx/act.go新增了SoftplusF32函数varSoftplusF32Compile1(SoftplusF32,func(x*Array)*Array{dt:x.DType()zero:FromValue[float32](0)returnLogaddexp(x.AsType(DTypeFloat32),zero).AsType(dt)},Shapeless(),)这个函数以 float32 精度计算 softplus然后转换回原始数据类型用于 Laguna 模型的注意力门控机制。3.5 TensorRT Model Optimizer 导入支持mlx: Support NVIDIA TensorRT Model Optimizer importMLX 后端现在可以直接导入由 NVIDIA TensorRT Model Optimizer 导出的 FP8 量化模型。导入器会自动识别并处理F8_E4M3类型的张量及其配套的 scale 张量。四、Tokenizer 多正则表达式偏移处理修复tokenizer: fix multi-regex BPE offset handling这是一个重要的 bug 修复。在tokenizer/bytepairencoding.go中原来的多正则表达式匹配逻辑在处理重叠匹配时存在偏移量计算错误修复前ifoffset-m.Index!0{if!yield(string(r[:m.Index])){修复后ifoffset-m.Index!0{if!yield(string(r[offset:m.Index])){这个修复确保在使用多个正则表达式进行 BPE 预分词时每个匹配片段都是从正确的偏移位置开始提取的避免了 token 边界错位的问题。配套的测试用例TestBytePairEncodingSplitMultipleRegexpsPreservesOffsets验证了修复的正确性。五、FP8 张量支持全面增强5.1 Safetensors FP8 读取convert/reader_safetensors.go大幅更新416/-13 行新增了对 FP8 格式的完整支持支持F8_E4M3和F8_E5M2数据类型自动查找配套的 scale 张量支持*_scale_inv和*_scale两种命名读取模型配置中的compression_config.weight.block_structure获取分块大小将 FP8 张量转换为 BF16/FP32 进行后续处理5.2 GGUF 输出标记在convert/tensor.go中新增了sourceTensorKV函数用于在输出的 GGUF 文件中标记哪些张量来自 FP8 源funcsourceTensorKV(ts[]*ggml.Tensor)KV{// ...returnKV{source_quantization:hf_fp8,source_fp8_tensors:slices.Sorted(maps.Keys(sourceFP8)),}}这些元数据在后续的量化过程中会被读取用于决定哪些张量应该被量化、哪些应该保持原始精度。5.3 量化策略适配server/quantization.go新增了sourceFP8Tensors跟踪typequantizeStatestruct{// ...preserveSourceFP8ToQ8boolpreserveSourceQ4boolsourceFP8Tensorsmap[string]struct{}}当用户请求Q8_0量化时只有来自 FP8 源的张量会被量化其他 BF16 张量保持原样。当用户请求Q4_K_M或Q4_K_S时非 FP8 源张量被提升到Q8_0以保护精度。六、Nemotron-3-Nano 解析器增强model/parsers/nemotron3nano.go进行了多项改进6.1 前导空格处理新增skipThinkingLeadingWS标志用于跳过思考内容开头的空白字符。当解析器处于Nemotron3NanoCollectingThinking状态时会 trim 掉 buffer 中的所有前导空格。6.2 开标签边界情况修复新增stripOpeningThinkTag()方法处理think标签跨 chunk 传输的场景。当 buffer 中的内容与think标签有部分重叠时解析器会等待完整标签到达后再进行处理。测试用例TestNemotron3NanoParser_Streaming/leading_open_think_tag_split_across_chunks验证了此场景。6.3 空思考块处理现在解析器能够正确处理think/think这样的空思考块直接跳过而不产生空内容。七、渲染器改进7.1 Nemotron-3-Nano 渲染器model/renderers/nemotron3nano.go进行了大规模重构263/-34 行主要变更包括工具调用格式修正函数调用输出格式调整为 XML 风格与模型的训练数据对齐思考标签处理历史消息中的 thinking 内容被正确包裹在think/think标签中截断策略对于历史中较早的 assistant 消息只保留工具调用结果而裁剪思考内容节省上下文空间7.2 Laguna 渲染器新增的LagunaRenderer实现了 Laguna 模型的对话模板使用〈|EOS|〉作为 BOS 标记系统消息中包含思考模式指令工具调用格式为tool_callarg_keyarg_value的结构用户消息包裹在user标签中助手消息包裹在assistant标签中7.3 Renderer/Detect 自动匹配在server/create.go中模型创建时会根据架构自动设置默认的渲染器和解析器caselaguna:config.Renderercmp.Or(config.Renderer,laguna)config.Parsercmp.Or(config.Parser,laguna)casenemotron_h,nemotron_h_moe,nemotron_h_omni:config.Renderercmp.Or(config.Renderer,nemotron-3-nano)config.Parsercmp.Or(config.Parser,nemotron-3-nano)八、Poolside 集成8.1 新的 launch 集成cmd/launch/poolside.go新增了对 Poolside CLI 工具的支持。用户可以通过以下命令使用ollama launch pool ollama launch pool--modelkimi-k2.6:cloud ollama launch pool ----help8.2 环境变量自动配置集成会自动设置以下环境变量POOLSIDE_STANDALONE_BASE_URL: 指向 Ollama 的 OpenAI 兼容端点POOLSIDE_API_KEY: 设置为ollama8.3 Windows 平台保护由于 Poolside 目前不兼容 Windows在 Windows 系统上该集成会被自动隐藏调用时会返回明确的错误提示。文档更新新增docs/integrations/poolside.mdx包含安装和使用说明。九、Safetensors 导入增强9.1 新增数据类型支持x/create/dtype.go新增了 FP8 和 U8/I8 类型的尺寸定义caseU8,I8:return1,nilcaseF8_E4M3,F8_E5M2,F8_E4M3FN,F8_E5M2FNUZ:return1,nil9.2 Laguna 专用导入转换器新增x/create/laguna.go实现了 Laguna 模型的特殊导入逻辑路由专家权重识别通过.mlp.experts.路径识别 MoE 层的路由专家NVFP4 导入优化当请求nvfp4量化时down_proj权重被保留为mxfp8格式以保持精度量化决策路由专家参与量化共享专家和注意力层保持 BF169.3 导入能力推断x/create/client/create.go中的inferSafetensorsCapabilities函数现在会参考解析器的能力如果解析器支持工具调用则添加tools能力如果解析器支持思考则添加thinking能力十、Logprobs 与内置解析器兼容性server: preserve generate logprobs with builtin parsers这是一个重要的用户体验修复。之前当使用内置解析器如 Nemotron-3-Nano 或 Laguna 解析器时生成响应中的 logprobs 会被丢弃因为解析器会缓冲内容直到检测到完整的语义单元。修复后在server/routes.go的 GenerateHandler 中ifbuiltinParser!nil{// Emit chunks that carry logprobs even if the parser is still bufferingifres.Response!||res.Thinking!||res.Done||len(res.ToolCalls)0||len(res.Logprobs)0{ch-res}}现在只要 chunk 中包含 logprobs即使没有新的文本内容也会被发送给客户端。配套测试TestGenerateLogprobsWithBuiltinParser验证了此功能。十一、架构兼容性标记11.1 强制单并行请求在server/sched.go中nemotron_h_omni被加入到了需要强制num_parallel 1的架构列表中ifslices.Contains([]string{...,nemotron_h,nemotron_h_moe,nemotron_h_omni},req.model.Config.ModelFamily)numParallel!1{numParallel1}这是因为多模态模型和 MoE 结构在并行处理时存在状态同步问题。11.2 FlashAttention 支持fs/ggml/ggml.go中nemotron_h_omni被加入了启用 FlashAttention 的架构列表casenemotron_h,nemotron_h_moe,nemotron_h_omni:// FlashAttention enabled十二、Harmony 后端适配server/routes.go和server/routes.go中的shouldUseHarmony逻辑进行了调整当think.Value为字符串max时在传递给 Harmony 后端之前映射为highHarmony 的 Parser 只在未显式配置时才设置为harmony这确保了 Harmony 后端在接收到max思考级别时不会报错。十三、MLX 图像生成兼容性x/imagegen/safetensors/safetensors.go中新增了 FP8 数据类型的映射caseF8_E4M3,F8_E5M2,F8_E4M3FN,F8_E5M2FNUZ:returnmlx.DtypeUint8// FP8 types stored as raw uint8 bytes这为未来在 MLX 后端支持 FP8 图像生成模型奠定了基础。十四、代码统计总览本次更新共涉及14 个 commits90 个文件变更5 位贡献者13,915 行代码新增-1,190 行代码删除主要变更模块分布convert/: 1,500 行FP8 支持 Nemotron/Laguna 转换model/models/: 2,800 行Laguna Nemotron Omni 模型实现x/mlxrunner/: 1,200 行采样器重构 Pipeline 优化x/create/: 900 行Laguna 导入 Safetensors 增强cmd/launch/: 200 行Poolside 集成十五、升级建议15.1 兼容性说明所有 v0.22.0 之前创建的模型均可继续使用新版本生成的 GGUF 文件与旧版本不兼容由于新增了source_quantization等 KV 元数据Windows 平台的 Poolside 集成暂不可用15.2 推荐使用场景需要更强推理能力的应用使用think: max级别调用 Nemotron 或 Laguna 模型多模态应用Nemotron 3 Omni 支持图文语音输入代码生成场景Poolside Laguna 专为代码任务训练高吞吐量场景升级后 MLX 后端的批量采样能力可提升 2-3 倍15.3 量化建议对于从 FP8 源导入的模型使用Q8_0量化可获得最佳精度保持使用Q4_K_M时路由专家使用 Q4注意力层使用 Q8使用Q4_K_S时浅层专家的 down_proj 使用 Q5结语代码地址github.com/ollama/ollamaOllama v0.22.0 是一次功能密集、质量优先的版本发布。NVIDIA 和 Poolside 两大模型的支持极大地扩展了 Ollama 的应用边界而 MLX 后端的采样器重构、FP8 导入的完善、以及解析器/渲染器的增强都体现了项目对生产级稳定性和用户体验的重视。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2567508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…