![]()
![]()
![]()
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.1?
Dockerfile中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-libs?
flags: '-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
而更新后,這一段邏輯被調整,說明在生成階段對“是否啟用 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.cpp?
ggml/src/ggml-cuda/rope.cu?
ggml/src/ggml-metal/ggml-metal.metal?
ggml/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.metal?
ml/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 雖然是一個小版本號更新,但內容并不輕量。
從官方變更和提交記錄看,這次升級主要圍繞以下幾個重點展開:
1.修復 gemma:e2b 和 gemma:e4b 在關閉 thinking 時的質量問題
2.Linux 下 ROCm 升級到 7.2.1
3.Gemma4 renderer 進行多輪修復與回滾,最終恢復 e2b-style nothink prompt
4.Gemma4 測試模板新增與重命名
5.ggml 的多個 patch 同步更新,覆蓋 CPU / CUDA / Metal / Vulkan
6.Metal 后端的 rope、flash attention、求解、矩陣映射、Gemma4 kernel 等多項修補
7.測試和 Docker 構建鏈路同步升級,確保環境一致
我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的AI知識。在這里,您可以找到最新的AI科普文章、工具評測、提升效率的秘籍以及行業洞察。 歡迎關注“福大大架構師每日一題”,發消息可獲得面試資料,讓AI助力您的未來發展。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.