newsence
歡迎 Gemma 4:裝置端的前沿多模態人工智慧

歡迎 Gemma 4:裝置端的前沿多模態人工智慧

Huggingface·4 天前

Google 與 Hugging Face 推出 Gemma 4,這是一系列開源的多模態模型,支援文字、圖像與音訊輸入,並具備極高的效率以利於在行動裝置端部署。

歡迎 Gemma 4:裝置端的前沿多模態智慧

這些模型是貨真價實的:採用 Apache 2 授權的真正開放、具備 Pareto 前沿競技場評分的的高品質、包含音訊在內的多模態能力,以及可在包括裝置端在內隨處使用的尺寸。Gemma 4 建立在先前家族的進步之上,並將它們完美融合。在我們對預發布檢查點(checkpoints)的測試中,其能力令我們印象深刻,甚至讓我們難以找到好的微調範例,因為它們開箱即用的表現就已經非常出色。

我們與 Google 及社群合作,讓它們在各處皆可使用:transformers、llama.cpp、MLX、WebGPU、Rust,應有盡有。這篇部落格文章將向您展示如何使用您喜愛的工具進行開發,請告訴我們您的想法!

目錄

Gemma 4 有什麼新功能?

與 Gemma-3n 類似,Gemma 4 支援圖像、文本和音訊輸入,並生成文本回應。文本解碼器基於 Gemma 模型,支援長上下文視窗。圖像編碼器與 Gemma 3 相似,但有兩項關鍵改進:可變長寬比,以及可配置的圖像標記(token)輸入數量,以便在速度、記憶體和品質之間找到平衡點。所有模型都支援圖像(或影片)和文本輸入,而小型變體(E2B 和 E4B)還支援音訊。

Gemma 4 提供四種尺寸,皆包含基礎版(base)和指令微調版(instruction fine-tuned):

能力與架構概覽

Gemma 4 利用了先前 Gemma 版本和其他開放模型中使用的多個架構組件,並捨棄了複雜或效果不明顯的功能(如 Altup)。這種組合旨在實現跨函式庫和裝置的高度相容性,能有效支援長上下文和代理(agentic)使用場景,同時也是量化的理想選擇。

憑藉這種功能組合(以及未公開的訓練數據或配方),31B 稠密模型(dense model)的預估 LMArena 評分(僅限文本)達到 1452,而 26B MoE 模型僅憑 4B 激活參數就達到了 1441 🤯。作為參考,這些分數與最近的 GLM-5 或 Kimi K2.5 大致相同,但參數數量減少了約 30 倍。正如我們將看到的,多模態操作在非正式和主觀測試中與文本生成同樣出色。

以下是 Gemma 4 的主要架構特徵:

逐層嵌入 (Per-Layer Embeddings, PLE)

較小型 Gemma 4 模型中最獨特的特徵之一是逐層嵌入 (PLE),這在之前的 Gemma-3n 中已有介紹。在標準的 transformer 中,每個標記在輸入時獲得單個嵌入向量,殘差流(residual stream)在所有層中都基於相同的初始表示進行構建,這迫使嵌入層預先載入模型可能需要的所有內容。PLE 在主殘差流之外增加了一條平行的、低維度的調節路徑。對於每個標記,它通過結合兩個信號為每一層生成一個專用的小向量:標記身份組件(來自嵌入查找)和上下文感知組件(來自主要嵌入的學習投影)。每個解碼層隨後使用其對應的向量,在注意力和前饋網路之後通過輕量級殘差塊來調節隱藏狀態。這讓每一層都有自己的頻道,僅在相關時接收標記特定信息,而不是要求所有內容都封裝在單個預先嵌入中。由於 PLE 維度遠小於主隱藏層大小,這以適度的參數成本增加了有意義的逐層專業化。對於多模態輸入(圖像、音訊、影片),PLE 在軟標記(soft tokens)合併到嵌入序列之前計算——因為 PLE 依賴於一旦多模態特徵取代佔位符就會丟失的標記 ID。多模態位置使用填充(pad)標記 ID,有效地接收中性的逐層信號。

共享 KV 快取 (Shared KV Cache)

共享 KV 快取是一種效率優化,可減少推理期間的計算和記憶體。模型的最後 num_kv_shared_layers 層不計算自己的鍵(key)和值(value)投影。相反,它們重用來自相同注意力類型(滑動或完整)的最後一個非共享層的 K 和 V 張量。

在實踐中,這對品質的影響微乎其微,但在長上下文生成和裝置端使用方面效率更高(無論是在記憶體還是計算方面)。

多模態能力

我們在測試中看到,Gemma 4 開箱即支援全面的多模態能力。我們不知道訓練組合是什麼,但我們成功地將其用於 OCR、語音轉文本、物件偵測或指向等任務。它還支援純文本和多模態的函數調用(function calling)、推理、代碼補全和糾錯。

在這裡,我們展示了不同模型尺寸的一些推理範例。我們鼓勵您嘗試這些演示並在部落格下方分享!

物件偵測與指向

GUI 偵測

我們測試了不同尺寸的 Gemma-4 在 GUI 元素偵測和指向方面的表現,使用了以下圖像和文本提示:「圖中『查看食譜 (view recipe)』元素的邊界框(bounding box)是什麼?」

圖像

透過此提示,模型會原生以 JSON 格式回應偵測到的邊界框——無需特定指令或語法限制生成。我們發現座標參考的是 1000x1000 的圖像尺寸,相對於輸入維度。

為了方便起見,我們在下方將輸出視覺化。我們從返回的 JSON 中解析邊界框:
json\n[\n {"box_2d": [171, 75, 245, 308], "label": "view recipe element"}\n]\n

E2B

E4B

31B

31B

物件偵測

我們測試模型偵測日常物品的能力,這裡我們要求它們偵測自行車並比較不同模型的輸出。與前一個案例一樣,我們從 JSON 中解析邊界框並轉換為圖像空間座標。

E2B

E4B

26B

31B

多模態思考與函數調用

我們要求 Gemma 4 編寫 HTML 代碼來重建我們用 Gemini 3 製作的頁面。下面您可以找到執行此操作的代碼,我們啟用了思考(thinking)並要求每個模型生成最多 4000 個新標記,以確保萬無一失。

參考

參考

參考

E4B

31B

MoE

影片理解

較小的 Gemma 4 模型可以處理帶音訊的影片,而較大的模型可以處理不帶音訊的影片。雖然模型沒有明確針對影片進行後期訓練,但它們可以理解帶音訊和不帶音訊的影片。該模型在音訊方面表現尤為強勁。

圖像描述 (Captioning)

我們測試了所有模型的圖像描述能力。所有檢查點在準確捕捉複雜場景中的細微差別方面都表現出色。
這是我們使用的圖像提示,配合文本提示:「為這張圖片寫一段詳細的描述。」

image

音訊問答

這些模型經過訓練,可以回答有關音訊中語音的問題。音樂和非語音聲音不屬於訓練數據的一部分。

如果您想進行轉錄,這是一個範例:

多模態函數調用

我們透過要求獲取圖像中所示地點的天氣來測試模型。

隨處部署

Gemma 4 在發布首日即獲得許多開源推理引擎的支援。我們還發布了可以在許多硬體後端運行的 ONNX 檢查點,允許在邊緣裝置或瀏覽器中使用!

transformers

Gemma 4 從一開始就獲得了 transformers 的一等公民支援 🤗。這種整合允許將模型與 bitsandbytes、PEFT 和 TRL 等其他函式庫一起使用。請確保安裝最新版本的 transformers。

對小型 Gemma 4 模型進行推理的最簡單方法是透過 any-to-any 管道。您可以按如下方式初始化它。

然後您可以按如下方式傳入圖像和文本。

在對帶音訊的影片進行推理時,您可以使用 load_audio_from_video 參數。

深入一層,您可以使用 AutoModelForMultimodalLM 類別載入 Gemma 4,這對於微調特別有用。內建的聊天模板負責正確格式化輸入,請務必使用它,以防止手動構建時出現細微錯誤。

Llama.cpp

Gemma 4 模型從一開始就在 llama.cpp 中支援圖像+文本!這解鎖了在所有您喜愛的本地應用程式中使用 Gemma 4 的可能性:llama-cpp server、lmstudio、Jan 以及像 Pi 這樣的編碼代理,支援 Metal 和 CUDA 等多種後端。

您可以按如下方式安裝 llama-cpp。

然後您可以啟動一個與 OpenAI API 相容的伺服器。將命令末尾的量化方案替換為您選擇的精度。

查看此連結以獲取有關將 llama.cpp 與不同編碼代理和本地應用程式結合使用的更多選項。在此集合中查找所有 GGUF 檢查點。

transformers.js

transformers.js 讓 Gemma 4 能夠直接在瀏覽器中運行。您可以在此處詳細查看模型卡,了解純文本、圖像與文本、音訊與文本的推理細節。我們還為您提供了一個演示來測試模型。

MLX

使用開源的 mlx-vlm 函式庫可以獲得 Gemma 4 的完整多模態支援。以下是如何要求模型描述一張圖像:

mlx-vlm 支援 TurboQuant,它提供與未壓縮基準相同的準確度,同時使用約少 4 倍的激活記憶體,且端到端運行速度更快。這使得在 Apple Silicon 上進行長上下文推理變得切合實際,且無需犧牲品質。使用方法如下:

有關音訊範例和更多詳細信息,請查看 MLX 集合。

Mistral.rs

mistral.rs 是一個 Rust 原生推理引擎,首日即支援 Gemma 4 的所有模態(文本、圖像、影片、音訊),並內建工具調用和代理功能。安裝 mistral.rs:

然後您可以啟動一個與 OpenAI 相容的 HTTP 伺服器:

或者,使用交互模式:

在此集合中查找所有模型。在模型卡中查找安裝和推理說明。

全民微調

Gemma 4 模型非常適合在您喜愛的工具和平台中以任何預算進行微調。

使用 TRL 進行微調

Gemma 4 完全支援使用 TRL 進行微調。為了慶祝,TRL 已升級,支援在與環境交互時的多模態工具回應,這意味著模型現在可以在訓練期間從工具接收圖像回傳,而不僅僅是文本。

為了展示這一點,我們構建了一個範例訓練腳本,讓 Gemma 4 在 CARLA 模擬器中學習駕駛。模型透過攝像頭觀察道路,決定該做什麼並從結果中學習。訓練後,它能持續變換車道以避開行人。同樣的方法適用於任何需要模型觀察並行動的任務:機器人技術、網頁瀏覽或其他交互式環境。

開始使用:

在 Vertex AI 上使用 TRL 進行微調

此外,我們準備了一個關於如何在 Vertex AI 上使用 SFT 透過 TRL 微調 Gemma 4 的範例,展示如何擴展函數調用能力,同時凍結視覺和音訊塔。範例包括如何在 Google Cloud 上構建具有 CUDA 支援的最新 Transformers、TRL 等自定義 Docker 容器,以及如何透過 Vertex AI Serverless Training Jobs 運行它。

您可以在「Hugging Face on Google Cloud」文檔中找到完整範例:https://hf.co/docs/google-cloud/examples/fine-tune-gemma-4。

使用 Unsloth Studio 進行微調

如果您想在 UI 中微調並運行 Gemma 4 模型,請嘗試 Unsloth Studio。它可以在本地或 Google Colab 上運行。首先,安裝並啟動應用程式:

然後從 hub 中選擇任何 Gemma 4 模型。

接入您的本地代理

我們致力於確保新模型能透過 llama.cpp 與 openclaw、hermes、pi 和 open code 等代理在本地協作。歡迎告訴您的用戶運行以下命令,在發布時立即嘗試。

首先,啟動您的本地伺服器:

對於 hermes:

對於 openclaw:

對於 pi,定義 ~/.pi/agent/models.json

對於 open code,定義 ~/.config/opencode/opencode.json

嘗試 Gemma 4

我們已經發布了演示供您嘗試不同的 Gemma 4 模型。我們包括了基於 transformers 實現的 E4B、26B/A4B 和稠密 31B 模型的演示,以及使用 transformers.js 的 WebGPU 演示 🚀

致謝

將 Gemma-4 引入開源生態系統凝聚了許多人的心血,而不僅僅是本部落格文章的作者。排名不分先後,我們要感謝開源團隊的許多成員:Gemma 4 的 transformers 整合歸功於 Cyril、Raushan、Eustache、Arthur、Lysandre。感謝 Joshua 負責 transformers.js 的整合與演示,Eric 負責 mistral.rs 整合,Son 負責 Llama.cpp,Prince 負責 MLX 整合,Quentin 負責 TRL,Adarsh 負責 SGLang transformers 後端,以及 Toshihiro 構建演示。
如果沒有 Google 在模型成品方面的廣泛貢獻,以及為將模型標準化而對 transformers 進行的重大努力,這項工作是不可能完成的。開源生態系統現在更加完整,擁有了一個能力極強、授權自由的開源模型。

本文提到的模型 10

本文提到的數據集 1

本文提到的集合 2

更多來自我們部落格的文章

圖像

邊緣端 LLM 推理:透過 React Native 在手機上運行 LLM 的趣味簡易指南!

圖像

SmolVLM2:為每台裝置帶來影片理解能力

社群

· 註冊或登入以發表評論

本文提到的模型 10

本文提到的數據集 1

本文提到的集合 2

https://huggingface.co/blog/gemma4