ollama v0.20.7 最新版更新详解:ROCm 7.2.1、Gemma4 渲染修复与多项 Metal/Renderer 回归修补
2026年4月13日,ollama 发布了 v0.20.7 版本。
这次更新虽然版本号看起来是一次常规小版本升级,但从变更内容来看,实际上是一次面向 GPU 生态、模型渲染逻辑和 Metal 后端兼容性的集中修复版本。尤其是 Gemma4 相关修复、ROCm 版本升级,以及多个 ggml Metal 相关补丁的回补,说明这一版重点并不只是“更新依赖”,而是围绕真实运行中的质量问题进行了一轮修正。
一、v0.20.7 发布概览
本次发布版本为v0.20.7,发布时间是2026年4月13日。
从变更列表看,本次更新包含:
- 修复 gemma:e2b 和 gemma:e4b 在关闭 thinking 时的质量问题
- Linux 下 ROCm 更新到 7.2.1
- 多个与Gemma4相关的渲染器修复、回归修正和测试调整
- 多个Metal 后端补丁同步更新
- 相关的测试与构建配置同步升级
整体来看,这一版不是功能大扩展,而是以“修复、回补、兼容性调整”为主。对于依赖 GPU 推理、尤其是 AMD ROCm、Apple Metal 以及 Gemma4 模型相关能力的用户来说,这个版本具有比较明确的升级价值。
二、本次更新的核心内容
1)修复 gemma:e2b 和 gemma:e4b 在关闭 thinking 时的质量问题
这是本次更新中最核心、最直接面向模型效果的修复之一。
官方说明写得很明确:Fix quality of gemma:e2b and gemma:e4b when thinking is disabled。
这意味着当 Gemma4 系列模型中的 e2b、e4b 在thinking 被禁用的情况下,输出质量存在问题,而 v0.20.7 对这个问题进行了修复。
结合提交记录可以看到,这部分修复过程并不简单,期间围绕 Gemma4 的 renderer 做了多轮修改:
- 修复 nothink case renderer
- 添加 nothink renderer 测试
- 随后又回滚了测试和部分 renderer 修复
- 最终恢复 e2b-style nothink prompt
从这些提交名称可以看出,问题的焦点主要集中在“不启用 thinking 时,Gemma4 的提示词渲染方式”。
也就是说,模型质量问题并不一定来自模型本身参数,而是和 renderer 在构造提示时的行为有关。最终版本选择恢复一种更合适的 nothink prompt 方式,以改善 e2b、e4b 的输出表现。
2)Linux 下 ROCm 更新到 7.2.1
另一个非常重要的更新是:ROCm: Update to ROCm 7.2.1 on Linux。
这说明 ollama 在 Linux 平台上的 ROCm 支持版本进行了升级,从7.2更新到7.2.1。
这类更新通常意味着:
- 使用更新的 ROCm 容器镜像
- 构建、测试和运行环境同步对齐
- 提升对 AMD GPU 相关运行环境的兼容性
从变更内容看,相关修改不仅出现在测试工作流里,也出现在 Dockerfile 里:
.github/workflows/test.yaml中 ROCm 容器从rocm/dev-ubuntu-22.04:7.2改为rocm/dev-ubuntu-22.04:7.2.1Dockerfile中ROCMVERSION=7.2更新为ROCMVERSION=7.2.1
这说明这次升级不是单点调整,而是构建链路、CI 测试链路、容器环境的同步升级。
对于依赖 ROCm 的 Linux 用户来说,这是一项非常关键的版本对齐,属于“平台支持跟进式升级”。
三、构建与测试相关变更
1)测试工作流中的 ROCm 容器升级
在.github/workflows/test.yaml中,ROCm 测试环境从:
rocm/dev-ubuntu-22.04:7.2
变更为:
rocm/dev-ubuntu-22.04:7.2.1
除此之外,ROCm 测试仍保持原有配置:
extra-packages: rocm-libsflags: '-DAMDGPU_TARGETS=gfx1010 -DCMAKE_PREFIX_PATH=/opt/rocm'
这说明测试流程的目标并未改变,仍然围绕特定 AMD GPU 架构和 ROCm 构建路径进行,但底层容器版本更新到了 7.2.1。
2)Dockerfile 中 ROCMVERSION 同步更新
在Dockerfile中,版本变量也从:
ARG ROCMVERSION=7.2
更新为了:
ARG ROCMVERSION=7.2.1
这说明项目构建时使用的 ROCm 版本已经同步到新版本。
这种同步很重要,因为如果测试环境和构建环境不一致,就可能引入难以排查的问题。现在二者同时升级,说明本次版本发布在环境一致性上做了处理。
四、Gemma4 渲染器与模板的多轮修复
这一部分是本次更新里非常值得关注的内容,因为它直接关系到模型提示词渲染和最终输出质量。
1)Gemma4 renderer 的结构调整
文件model/renderers/gemma4.go有较大改动,变更量为129 changes: 85 additions & 44 deletions。
这说明 Gemma4 渲染器并非小修,而是进行了比较系统的调整。
从可见的核心变化看,生成 prompt 的逻辑发生了变化:
原本在满足条件时会在生成提示里写入:
<|turn>model\n- 如果没有 thinking,则再写入
<|channel|>thought\n<channel|>
而更新后,这一段逻辑被调整,说明在生成阶段对“是否启用 thinking”的处理方式进行了重新安排。
结合提交记录中的变化内容,整个过程经历了:
- 修复 nothink case renderer
- 添加 nothink renderer tests
- 回滚测试
- 回滚修复
- 最终恢复 e2b-style nothink prompt
这说明团队在修复过程中对渲染方式做了验证和回退,最终采用了稳定方案。
2)Gemma4 的 testdata 模板重命名
本次更新里有一个值得注意的文件变更:
model/renderers/testdata/gemma4_chat_template.jinja2
被重命名为model/renderers/testdata/gemma4_31b_chat_template.jinja2
并且标注为File renamed without changes。
也就是说,文件内容没有变化,只是文件名调整了。
这通常意味着测试数据的命名与模型规格、模板版本或者用途进行了区分,使命名更加明确。
从结果上看,这有助于区分不同 Gemma4 模板场景,避免混淆。
3)新增 gemma4_e2b_chat_template.jinja2
另一个新增文件是:
model/renderers/testdata/gemma4_e2b_chat_template.jinja2
从文件名可以直接看出,它是针对gemma4 e2b场景的测试模板。
这与前面“修复 e2b 和 e4b 在 thinking disabled 时的质量问题”是对应的。
也就是说,这次更新并不是单纯改一行代码,而是配套增加了针对性模板测试,以便验证 e2b 场景下的渲染逻辑是否正确。
五、ggml 相关补丁同步更新
本次版本中还包含多个llama/patches下的补丁变更,这些补丁主要涉及 ggml 的不同后端实现,包括 CPU、CUDA、Metal、Vulkan 等。虽然很多 patch 的变更在展示中只露出部分内容,但从整体文件列表可以看到,本次升级对底层推理栈做了同步适配。
1)0027-interleave-multi-rope.patch
这个补丁的主题是:
interleave multi rope
其说明写的是:
由于 ollama 不再把 mrope 用于其他用途,因此将其改为表示qwen3vl 使用的 interleaved 版本。
对应修改涉及四个文件:
ggml/src/ggml-cpu/ops.cppggml/src/ggml-cuda/rope.cuggml/src/ggml-metal/ggml-metal.metalggml/src/ggml-vulkan/vulkan-shaders/rope_funcs.glsl
这个补丁中 Metal 文件的修改量从 8 行变为 10 行左右,说明在 Metal 实现上也有相应适配。
从版本升级角度看,这属于 rope 相关计算逻辑的内部调整,虽然不是用户界面层面的变化,但会影响到底层位置编码处理方式。
2)0032-ggml-enable-MLA-flash-attention-for-GLM-4.7-flash.patch
这个补丁的主题是:
ggml-enable-MLA-flash-attention-for-GLM-4.7-flash
从名称可以看出,它是为GLM-4.7-flash启用MLA flash attention相关能力的补丁。
在变更展示中,主要体现为ggml/src/ggml-metal/ggml-metal.metal文件有调整,新增了 1 行、删除了 1 行。
虽然展示内容很有限,但从补丁名和文件路径可以确定:
这是一次针对 ggml Metal 后端 flash attention 行为的适配,目的是支持某些模型在 Metal 平台上正确启用相关能力。
3)0033-ggml-metal-solve_tri.patch
这个补丁名称是:
ggml-metal-solve_tri
对应的变更涉及ggml/src/ggml-metal/ggml-metal.metal,修改点在一个较长的代码块中。
从补丁标题看,重点在于解决三角相关计算或三角求解路径的问题。
虽然展示里没有展开全部上下文,但可以确认这是一项 Metal 后端内部修复补丁,目的是让相关数学计算在 Metal 环境下更稳定或更正确。
4)0034-ggml-metal-guard-mul_mat_id-map0-and-add-ne20-22-spe.patch
这个补丁名称较长,核心意思是:
- 为
mul_mat_id的map0做保护 - 并增加
ne20-22相关的特殊处理
对应修改同样落在ggml/src/ggml-metal/ggml-metal.metal中,增加了 1 行,删除了 1 行。
从补丁风格可以看出,这属于针对 Metal 矩阵乘法映射路径的保护性修复,避免某些边界条件下出错,同时加入特定尺寸条件的支持。
5)0036-backport-kernels-for-gemma4.patch
这个补丁名称说明它是:
- 为 Gemma4 回补相关 kernels
对应的变更也落在ggml/src/ggml-metal/ggml-metal.metal。
从提交顺序看,这个 patch 与 Gemma4 的 renderer 修复、notthink 逻辑回调一起,构成了本次 Gemma4 支持链路的一部分。
换句话说,Gemma4 的修复不仅仅在上层 renderer,还在底层 kernel 方面有对应回补。
六、Metal 后端相关的嵌入式文件同步变更
除了llama/patches目录下的补丁,本次更新还涉及两个 Metal 嵌入式文件:
ml/backend/ggml/ggml/src/ggml-metal/ggml-metal-embed.metalml/backend/ggml/ggml/src/ggml-metal/ggml-metal.metal
这两个文件都涉及kernel_rope_multi相关逻辑,并且都出现了相同的关键调整:
float theta_base;- 变为
float theta_base = 0.0; - 条件判断由
sector < 3 * args.sect_1
调整为sector < 1 + 3 * args.sect_1
这说明在 Metal 的 rope multi 处理逻辑中,对 theta_base 做了初始化,并修正了区间判断条件。
这种改动看起来很小,但对于 GPU kernel 来说,初始化和边界条件往往非常关键,直接影响结果正确性和稳定性。
七、其他 Metal 文件的同步变化
本次版本中,ggml/src/ggml-metal/ggml-metal.metal多处被更新,这些更新分散在不同的 patch 中,说明 Metal 后端是本次版本的重点之一。
从变更摘要可见,Metal 文件涉及的场景包括:
- rope multi
- flash attention
- solve_tri
- mul_mat_id map0
- Gemma4 kernels 回补
这说明 v0.20.7 不只是简单提升某个模型的表现,而是对 Metal 推理链路做了系统性的修复和补齐。
对于使用 Apple 平台推理的用户来说,这种更新通常意味着更好的兼容性,也意味着旧版本中可能存在的边界问题被逐步清理。
八、本次版本的提交节奏与修复过程
从公开提交记录来看,这次版本并不是“一次改完”,而是经过了多次尝试与回滚:
- 先修复 nothink case renderer
- 再添加 nothink renderer tests
- 接着回滚测试
- 再回滚修复
- 最后恢复 e2b-style nothink prompt
这种节奏反映出一个很典型的现实:
看似只是一个提示词渲染问题,实际上会牵连到模型输出质量、渲染模板、测试样例、后端兼容性等多个层面。最终能够在发布版中稳定下来,说明这次修复经过了反复验证。
九、v0.20.7 适合谁升级
基于本次变更内容,v0.20.7 对以下场景尤其值得关注:
- 使用gemma:e2b / gemma:e4b的用户
- 依赖thinking disabled模式的用户
- 在Linux + ROCm环境下运行的用户
- 依赖Metal后端推理的用户
- 使用 Gemma4 相关渲染模板或测试链路的用户
因为这次更新直接涉及这些场景的修复与对齐,属于针对性较强的一版。
十、总结
代码地址:github.com/ollama/ollama
ollama v0.20.7 虽然是一个小版本号更新,但内容并不轻量。
从官方变更和提交记录看,这次升级主要围绕以下几个重点展开:
- 修复 gemma:e2b 和 gemma:e4b 在关闭 thinking 时的质量问题
- Linux 下 ROCm 升级到 7.2.1
- Gemma4 renderer 进行多轮修复与回滚,最终恢复 e2b-style nothink prompt
- Gemma4 测试模板新增与重命名
- ggml 的多个 patch 同步更新,覆盖 CPU / CUDA / Metal / Vulkan
- Metal 后端的 rope、flash attention、求解、矩阵映射、Gemma4 kernel 等多项修补
- 测试和 Docker 构建链路同步升级,确保环境一致
