開源大模型王座易主:Google Gemma殺入場筆記本可跑可商用
開源領域大模型,迎來了重磅新玩家。Google推出了全新的開源模型系列「Gemma」。相較於Gemini,Gemma 更加輕量級,同時保持免費可用,模型權重也一併開源了,並且允許商用。
Gemma 官方頁面:https://ai.google.dev/gemma/
本次發布包含兩種權重規模的模型:Gemma 2B 和Gemma 7B。每種規模都有預先訓練和指令微調版本。想使用的人可以透過Kaggle、Google的Colab Notebook 或透過Google Cloud 存取。
當然,Gemma 也第一時間上線了HuggingFace 和HuggingChat,每個人都能試試看它的生成能力:
儘管體積較小,但Google表示Gemma 模型已經“在關鍵基準測試中明顯超越了更大的模型”,對比的包括Llama-2 7B 和13B,以及風頭正勁的Mistral 7B。
而且Gemma「能夠直接在開發人員的筆記型電腦或桌上型電腦上運作」。除了輕量級模型之外,Google還推出了鼓勵協作的工具以及負責任地使用這些模型的指南。
Keras 作者François Chollet 對此直接表示:最強開源大模型的位置現在易主了。
在HuggingFace 的LLM leaderboard 上,Gemma 的2B 和7B 模型已經雙雙登頂。
新的Responsible Generative AI Toolkit 為使用Gemma 創建更安全的AI 應用程式提供指導和必備工具。Google也透過原生Keras 3.0 相容於所有主流框架(JAX、PyTorch 和TensorFlow),為Gemma 提供推理和監督微調(SFT)的工具鏈。
在各家大廠和人工智慧研究機構探索千億級多模態大模型的同時,許多新創公司也正在致力於建構體量在數十億級的語言模型。而Meta 去年推出的Llama 系列震動了產業,並引發了人們對於生成式AI 開源和閉源路線的討論。
Google表示,Gemma 採用了與建構Gemini 模型相同的研究和技術。不過,Gemma 直接打入開源生態系統的出場方式,與Gemini 截然不同。Google也並未遵守去年定下的「不再開放核心技術」的策略。
雖然開發者可以在Gemini 的基礎上進行開發,但要么透過API,要么在Google的Vertex AI 平台上進行開發,被認為是一種封閉的模式。與同為閉源路線的OpenAI 相比,未見優勢。
但藉助這次Gemma 的開源,Google或許能夠吸引更多的人使用自己的AI 模型,而不是直接投奔Meta、Mistral 這樣的競爭對手。
Google這次沒有預告的開源,或許是想搶在Meta 的Llama 3 之前一天,畢竟此前有消息稱Llama 系列本週就要上新(讓我們期待第一時間的評測對比)。
雖然才發表幾個小時,但X 平台上已經有不少用戶做了使用體驗。有位用戶表示,Gemma -7B 速度很快,輸出也很穩定,比Llama-2 13B好。
在開源模型的同時,Google也公佈了有關Gemma 的效能、資料集組成和建模方法的詳細資訊的技術報告。在技術報告中,其他研究者發現了一些亮點,例如Gemma 支援的詞彙表大小達到了256K,這意味著它對英語以外的其他語言能夠更好、更快地提供支援。
以下是技術報告的細節。
Gemma 技術細節
總體來說,Gemma 是一個輕量級的SOTA 開放模型系列,在語言理解、推理和安全方面表現出了強勁的性能。
技術報告連結:https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf
Google發布了兩個版本的Gemma 模型,分別是20 億參數和70 億參數,並提供了預訓練以及針對對話、指令遵循、有用性和安全性微調的checkpoint。其中70 億參數的模型用於GPU 和TPU 上的高效部署和開發,20 億參數的模型用於CPU 和端側應用程式。不同的尺寸滿足不同的計算限制、應用程式和開發人員要求。
Gemma在18 個基於文本的任務中的11 個上優於相似參數規模的開放模型,例如問答、常識推理、數學和科學、編碼等任務。
下圖1 為Gemma(7B)與LLaMA 2(7B)、LLaMA 2(13B)和Mistral(7B)在問答、推理、數學和科學、編碼等任務上的表現比較。可以看到,Gemma(7B)表現出了優勢(除了在問答任務上弱於LLaMA 2(13B))。
接下來來看Gemma 的模型架構、訓練基礎架構、預訓練和微調方法。
模型架構
Gemma 模型架構是基於Transformer 解碼器,表1 總結了此架構的核心參數。模型訓練的上下文長度為8192 個token。
此外,Google也在原始transformer 論文的基礎上進行了改進,改進的部分包括:
多重查詢注意力:7B 模型使用多頭注意力,而2B 檢查點使用多查詢注意力;
RoPE 嵌入:Gemma 在每一層中使用旋轉位置嵌入,而不是使用絕對位置嵌入;此外,Gemma 還在輸入和輸出之間共享嵌入,以減少模型大小;
GeGLU 活化:標準ReLU 非線性被GeGLU 活化函數取代;
Normalizer Location:Gemma 對每個transformer 子層的輸入和輸出進行歸一化,這與僅對其中一個或另一個進行歸一化的標準做法有所不同,RMSNorm 作為歸一化層。
訓練基礎設施
Google使用了自研AI 晶片TPUv5e 來訓練Gemma 模型:TPUv5e 部署在由256 個晶片組成的pod 中,配置成由16 x 16 個晶片組成的二維環形。
對於7B 模型,Google在16 個pod(共4096 個TPUv5e)上訓練模型。他們透過2 個pod 對2B 模型進行預訓練,總計512 TPUv5e。在一個pod 中,Google對7B 模型使用16 路模型分片和16 路資料複製。對於2B 模型,只需使用256 路資料複製。優化器狀態使用類似ZeRO-3 的技術進一步分片。在pod 之外,Google使用了Pathways 方法透過資料中心網路執行資料複製還原。
預訓練
Gemma 2B 和7B 分別在來自網路文件、數學和程式碼的2T 和6T 主要英語資料上進行訓練。與Gemini 不同的是,這些模型不是多模態的,也不是為了在多語言任務中獲得最先進的效能而訓練的。
為了相容,Google使用了Gemini 的SentencePiece tokenizer 子集(Kudo 和Richardson,2018 年)。它可以分割數字,不刪除多餘的空白,並遵循(Chowdhery 等人,2022 年)和(Gemini 團隊,2023 年)所使用的技術,對未知token 進行位元組級編碼。詞彙量為256k 個token。
指令調優
Google透過在僅文字、僅英語合成和人類生成的prompt 回應對的混合資料上進行監督微調(SFT),以及利用在僅英語標記的偏好資料和基於一系列高品質prompt 的策略上訓練的獎勵模型進行人類回饋強化學習(RLHF),對Gemma 2B 和Gemma 7B 模型進行微調。
實驗發現,監督微調和RLHF 這兩個階段對於提高下游自動評估和模型輸出的人類偏好評估性能都非常重要。
監督微調
Google根據基於LM 的平行評估結果來選擇自己的混合數據,以進行監督微調。給定一組留出的(heldout) prompt, Google從測試模型中產生響應,並從基線模型中產生相同prompt 的響應,並要求規模更大的高性能模型來表達這兩個響應之間的偏好。
Google也建立不同的prompt 集合來突出特定的能力,例如指令遵循、真實性、創造性和安全性等。Google使用了不同的自動化LM“judges”,它們採用了多種技術,例如思維鏈提示(chain-of-thought prompting)、對齊人類偏好等。
格式化
指令調優模型使用特定的格式化器進行訓練, 此格式化器在訓練和推理時使用額外的資訊來標註所有指令調優範例。這樣做有以下兩個目的,1)指示對話中的角色,例如使用者角色;2)描述對話輪次,尤其是在多輪對話中。為了實現這兩個目的,Google在分詞器(tokenizer)中保留了特殊的控制token。
下表3 為相關格式化控制token,表4 為對話範例。
人體回饋強化學習(RLHF)
Google使用RLHF 對監督微調模型進一步微調,不僅從人類評分者收集了偏好對,還在Bradley-Terry 模型下訓練了獎勵函數,這類似於Gemini。此策略經過訓練,使用一個具有初始調優模型的Kullback–Leibler 正則化項的REINFORCE 變體,對該獎勵函數進行最佳化。
與監督微調(SFT)階段一樣,為了進行超參數調優,並額外減輕獎勵黑客行為,Google依賴高容量模型作為自動評估器,併計算與基線模型的比較結果。
評估
Google透過人類偏好、自動基準和記憶等指標,在廣泛的領域對Gemma 進行了全面的評估。
人類偏好評估
除了在經過微調的模型上運行標準學術基準之外,Google對最終發布的候選模型進行了人類評估研究,以便與Mistral v0.2 7B Instruct 模型進行比較。
與Mistral v0.2 7B Instruct 相比,Gemma 7B IT 的正勝率為51.7%,Gemma 2B IT 的勝率為41.6%。在測試基本安全協議的約400 個prompt 中,Gemma 7B IT 的勝率為58%,而Gemma 2B IT 的勝率為56.5%。表5 中報告了相應的數字。
自動基準評估
Google也在一系列學術基準上將Gemma 2B 和7B 模型與幾個外部開源LLM 進行了比較,如表6 所示:
在MMLU 上,Gemma 7B 的表現優於相同或較小規模的所有開源模型,也優於幾個較大的模型,包括LLaMA2 13B。
然而,基準作者對人類專家表現的評估結果是89.8%, Gemini Ultra 是第一個超過這個閾值的模型,可以看到Gemma仍有很大的改進空間,以達到Gemini和人類水準的表現。
但Gemma 模型在數學和編碼基準測試中表現較為突出。在數學任務上,Gemma 模型在GSM8K 和更難的MATH 基準上的表現超過其他模型至少10 分。同樣,它們在HumanEval 上的表現比其他開源模型高出至少6 分。Gemma 在MBPP 上的表現甚至超過了經過代碼微調的CodeLLaMA-7B 模型(CodeLLaMA 得分為41.4%,而Gemma 7B 得分為44.4%)。
記憶評估
Google使用Anil 等人採用的方法測試Gemma 的記憶能力,具體而言,他們從每個語料庫中採樣10000 個文檔,並使用前50 個token 作為模型的prompt。在此過程中,Google主要關注精準記憶,如果模型產生的後續50 個token 與文本中的真實後續文本完全匹配,則將該文本分類為已記憶。圖2 將評估結果與同等規模的PaLM 和PaLM 2 模型進行了比較,結果如下所示。
隱私數據
對大模型來說,隱私資料被記住的可能性是一件非常值得關注的事情。為了讓Gemma 預訓練模型安全可靠,Google使用自動方法從訓練集中過濾掉某些隱私資訊和其他敏感資料。
為了識別可能出現的隱私數據,Google使用Google Cloud 資料遺失防護(DLP) 工具。該工具根據隱私資料的類別(例如姓名、電子郵件等)輸出三個嚴重程度。Google將最高嚴重性分類為“敏感(sensitive)”,其餘兩個分類為“隱私(personal)”,然後測量有多少儲存的輸出包含敏感或個人資料。
如下圖3 所示,Google沒有觀察到儲存敏感資料的情況,但確實發現Gemma 模型會記住一些上述分類為潛在「隱私」的資料。值得注意的是,研究中使用的工具可能存在許多誤報(因為其只匹配模式而不考慮上下文),這意味著實驗結果可能高估了已識別的隱私資料量。
在記憶資料量方面,如下圖4 所示,Google觀察到大約會多出50% 的資料被記住,並且在資料集的每個不同子類別中幾乎是一致的。
最後,Google也透過標準化AI 安全基準評估了Gemma 的安全性,結果如下表8 所示。