![]()
![]()
![]()
2026年4月13日,ollama 發(fā)布了 v0.20.7 版本。
這次更新雖然版本號看起來是一次常規(guī)小版本升級,但從變更內(nèi)容來看,實際上是一次面向 GPU 生態(tài)、模型渲染邏輯和 Metal 后端兼容性的集中修復版本。尤其是 Gemma4 相關(guān)修復、ROCm 版本升級,以及多個 ggml Metal 相關(guān)補丁的回補,說明這一版重點并不只是“更新依賴”,而是圍繞真實運行中的質(zhì)量問題進行了一輪修正。
一、v0.20.7 發(fā)布概覽
本次發(fā)布版本為v0.20.7,發(fā)布時間是2026年4月13日。
從變更列表看,本次更新包含:
?修復 gemma:e2b 和 gemma:e4b 在關(guān)閉 thinking 時的質(zhì)量問題
?Linux 下 ROCm 更新到 7.2.1
? 多個與Gemma4相關(guān)的渲染器修復、回歸修正和測試調(diào)整
? 多個Metal 后端補丁同步更新
? 相關(guān)的測試與構(gòu)建配置同步升級
整體來看,這一版不是功能大擴展,而是以“修復、回補、兼容性調(diào)整”為主。對于依賴 GPU 推理、尤其是 AMD ROCm、Apple Metal 以及 Gemma4 模型相關(guān)能力的用戶來說,這個版本具有比較明確的升級價值。
二、本次更新的核心內(nèi)容 1)修復 gemma:e2b 和 gemma:e4b 在關(guān)閉 thinking 時的質(zhì)量問題
這是本次更新中最核心、最直接面向模型效果的修復之一。
官方說明寫得很明確:Fix quality of gemma:e2b and gemma:e4b when thinking is disabled。
這意味著當 Gemma4 系列模型中的 e2b、e4b 在thinking 被禁用的情況下,輸出質(zhì)量存在問題,而 v0.20.7 對這個問題進行了修復。
結(jié)合提交記錄可以看到,這部分修復過程并不簡單,期間圍繞 Gemma4 的 renderer 做了多輪修改:
? 修復 nothink case renderer
? 添加 nothink renderer 測試
? 隨后又回滾了測試和部分 renderer 修復
? 最終恢復 e2b-style nothink prompt
從這些提交名稱可以看出,問題的焦點主要集中在“不啟用 thinking 時,Gemma4 的提示詞渲染方式”。
也就是說,模型質(zhì)量問題并不一定來自模型本身參數(shù),而是和 renderer 在構(gòu)造提示時的行為有關(guān)。最終版本選擇恢復一種更合適的 nothink prompt 方式,以改善 e2b、e4b 的輸出表現(xiàn)。
2)Linux 下 ROCm 更新到 7.2.1
另一個非常重要的更新是:ROCm: Update to ROCm 7.2.1 on Linux。
這說明 ollama 在 Linux 平臺上的 ROCm 支持版本進行了升級,從7.2更新到7.2.1。
這類更新通常意味著:
? 使用更新的 ROCm 容器鏡像
? 構(gòu)建、測試和運行環(huán)境同步對齊
? 提升對 AMD GPU 相關(guān)運行環(huán)境的兼容性
從變更內(nèi)容看,相關(guān)修改不僅出現(xiàn)在測試工作流里,也出現(xiàn)在 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
這說明這次升級不是單點調(diào)整,而是構(gòu)建鏈路、CI 測試鏈路、容器環(huán)境的同步升級。
對于依賴 ROCm 的 Linux 用戶來說,這是一項非常關(guān)鍵的版本對齊,屬于“平臺支持跟進式升級”。
三、構(gòu)建與測試相關(guān)變更 1)測試工作流中的 ROCm 容器升級
在.github/workflows/test.yaml中,ROCm 測試環(huán)境從:
?
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 架構(gòu)和 ROCm 構(gòu)建路徑進行,但底層容器版本更新到了 7.2.1。
2)Dockerfile 中 ROCMVERSION 同步更新
在Dockerfile中,版本變量也從:
?
ARG ROCMVERSION=7.2
更新為了:
?
ARG ROCMVERSION=7.2.1
這說明項目構(gòu)建時使用的 ROCm 版本已經(jīng)同步到新版本。
這種同步很重要,因為如果測試環(huán)境和構(gòu)建環(huán)境不一致,就可能引入難以排查的問題。現(xiàn)在二者同時升級,說明本次版本發(fā)布在環(huán)境一致性上做了處理。
四、Gemma4 渲染器與模板的多輪修復
這一部分是本次更新里非常值得關(guān)注的內(nèi)容,因為它直接關(guān)系到模型提示詞渲染和最終輸出質(zhì)量。
1)Gemma4 renderer 的結(jié)構(gòu)調(diào)整
文件model/renderers/gemma4.go有較大改動,變更量為129 changes: 85 additions & 44 deletions。
這說明 Gemma4 渲染器并非小修,而是進行了比較系統(tǒng)的調(diào)整。
從可見的核心變化看,生成 prompt 的邏輯發(fā)生了變化:
原本在滿足條件時會在生成提示里寫入:
?
<|turn>model\n? 如果沒有 thinking,則再寫入
<|channel|>thought\n
而更新后,這一段邏輯被調(diào)整,說明在生成階段對“是否啟用 thinking”的處理方式進行了重新安排。
結(jié)合提交記錄中的變化內(nèi)容,整個過程經(jīng)歷了:
? 修復 nothink case renderer
? 添加 nothink renderer tests
? 回滾測試
? 回滾修復
? 最終恢復 e2b-style nothink prompt
這說明團隊在修復過程中對渲染方式做了驗證和回退,最終采用了穩(wěn)定方案。
2)Gemma4 的 testdata 模板重命名
本次更新里有一個值得注意的文件變更:
?
model/renderers/testdata/gemma4_chat_template.jinja2
被重命名為?
model/renderers/testdata/gemma4_31b_chat_template.jinja2
并且標注為File renamed without changes。
也就是說,文件內(nèi)容沒有變化,只是文件名調(diào)整了。
這通常意味著測試數(shù)據(jù)的命名與模型規(guī)格、模板版本或者用途進行了區(qū)分,使命名更加明確。
從結(jié)果上看,這有助于區(qū)分不同 Gemma4 模板場景,避免混淆。
3)新增 gemma4_e2b_chat_template.jinja2
另一個新增文件是:
?
model/renderers/testdata/gemma4_e2b_chat_template.jinja2
從文件名可以直接看出,它是針對gemma4 e2b場景的測試模板。
這與前面“修復 e2b 和 e4b 在 thinking disabled 時的質(zhì)量問題”是對應的。
也就是說,這次更新并不是單純改一行代碼,而是配套增加了針對性模板測試,以便驗證 e2b 場景下的渲染邏輯是否正確。
五、ggml 相關(guān)補丁同步更新
本次版本中還包含多個llama/patches下的補丁變更,這些補丁主要涉及 ggml 的不同后端實現(xiàn),包括 CPU、CUDA、Metal、Vulkan 等。雖然很多 patch 的變更在展示中只露出部分內(nèi)容,但從整體文件列表可以看到,本次升級對底層推理棧做了同步適配。
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 行變?yōu)?10 行左右,說明在 Metal 實現(xiàn)上也有相應適配。
從版本升級角度看,這屬于 rope 相關(guān)計算邏輯的內(nèi)部調(diào)整,雖然不是用戶界面層面的變化,但會影響到底層位置編碼處理方式。
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相關(guān)能力的補丁。
在變更展示中,主要體現(xiàn)為ggml/src/ggml-metal/ggml-metal.metal文件有調(diào)整,新增了 1 行、刪除了 1 行。
雖然展示內(nèi)容很有限,但從補丁名和文件路徑可以確定:
這是一次針對 ggml Metal 后端 flash attention 行為的適配,目的是支持某些模型在 Metal 平臺上正確啟用相關(guān)能力。
3)0033-ggml-metal-solve_tri.patch
這個補丁名稱是:
?
ggml-metal-solve_tri
對應的變更涉及ggml/src/ggml-metal/ggml-metal.metal,修改點在一個較長的代碼塊中。
從補丁標題看,重點在于解決三角相關(guān)計算或三角求解路徑的問題。
雖然展示里沒有展開全部上下文,但可以確認這是一項 Metal 后端內(nèi)部修復補丁,目的是讓相關(guān)數(shù)學計算在 Metal 環(huán)境下更穩(wěn)定或更正確。
4)0034-ggml-metal-guard-mul_mat_id-map0-and-add-ne20-22-spe.patch
這個補丁名稱較長,核心意思是:
? 為
mul_mat_id的map0做保護? 并增加
ne20-22相關(guān)的特殊處理
對應修改同樣落在ggml/src/ggml-metal/ggml-metal.metal中,增加了 1 行,刪除了 1 行。
從補丁風格可以看出,這屬于針對 Metal 矩陣乘法映射路徑的保護性修復,避免某些邊界條件下出錯,同時加入特定尺寸條件的支持。
5)0036-backport-kernels-for-gemma4.patch
這個補丁名稱說明它是:
? 為 Gemma4 回補相關(guān) kernels
對應的變更也落在ggml/src/ggml-metal/ggml-metal.metal。
從提交順序看,這個 patch 與 Gemma4 的 renderer 修復、notthink 邏輯回調(diào)一起,構(gòu)成了本次 Gemma4 支持鏈路的一部分。
換句話說,Gemma4 的修復不僅僅在上層 renderer,還在底層 kernel 方面有對應回補。
六、Metal 后端相關(guān)的嵌入式文件同步變更
除了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相關(guān)邏輯,并且都出現(xiàn)了相同的關(guān)鍵調(diào)整:
?
float theta_base;? 變?yōu)?code>float theta_base = 0.0;
? 條件判斷由
sector < 3 * args.sect_1
調(diào)整為sector < 1 + 3 * args.sect_1
這說明在 Metal 的 rope multi 處理邏輯中,對 theta_base 做了初始化,并修正了區(qū)間判斷條件。
這種改動看起來很小,但對于 GPU kernel 來說,初始化和邊界條件往往非常關(guān)鍵,直接影響結(jié)果正確性和穩(wěn)定性。
七、其他 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 不只是簡單提升某個模型的表現(xiàn),而是對 Metal 推理鏈路做了系統(tǒng)性的修復和補齊。
對于使用 Apple 平臺推理的用戶來說,這種更新通常意味著更好的兼容性,也意味著舊版本中可能存在的邊界問題被逐步清理。
八、本次版本的提交節(jié)奏與修復過程
從公開提交記錄來看,這次版本并不是“一次改完”,而是經(jīng)過了多次嘗試與回滾:
? 先修復 nothink case renderer
? 再添加 nothink renderer tests
? 接著回滾測試
? 再回滾修復
? 最后恢復 e2b-style nothink prompt
這種節(jié)奏反映出一個很典型的現(xiàn)實:
看似只是一個提示詞渲染問題,實際上會牽連到模型輸出質(zhì)量、渲染模板、測試樣例、后端兼容性等多個層面。最終能夠在發(fā)布版中穩(wěn)定下來,說明這次修復經(jīng)過了反復驗證。
九、v0.20.7 適合誰升級
基于本次變更內(nèi)容,v0.20.7 對以下場景尤其值得關(guān)注:
? 使用gemma:e2b / gemma:e4b的用戶
? 依賴thinking disabled模式的用戶
? 在Linux + ROCm環(huán)境下運行的用戶
? 依賴Metal后端推理的用戶
? 使用 Gemma4 相關(guān)渲染模板或測試鏈路的用戶
因為這次更新直接涉及這些場景的修復與對齊,屬于針對性較強的一版。
十、總結(jié)
代碼地址:github.com/ollama/ollama
ollama v0.20.7 雖然是一個小版本號更新,但內(nèi)容并不輕量。
從官方變更和提交記錄看,這次升級主要圍繞以下幾個重點展開:
1.修復 gemma:e2b 和 gemma:e4b 在關(guān)閉 thinking 時的質(zhì)量問題
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 構(gòu)建鏈路同步升級,確保環(huán)境一致
我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的AI知識。在這里,您可以找到最新的AI科普文章、工具評測、提升效率的秘籍以及行業(yè)洞察。 歡迎關(guān)注“福大大架構(gòu)師每日一題”,發(fā)消息可獲得面試資料,讓AI助力您的未來發(fā)展。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
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.