時隔6年,谷歌BERT終于有替代品了!更快更準更長,還不炒作GenAI
BERT 于 2018 年發(fā)布,這個時間點,如果按照 AI 的紀事年代來說,可以說是一千年以前的事了!雖然過去了這么多年,但至今仍被廣泛使用:事實上,它目前是 HuggingFace 中心下載量第二大的模型,每月下載量超過 6800 萬次。
好消息是,六年后的今天,我們終于有了替代品!
近日,新型 AI 研發(fā)實驗室 Answer.AI、英偉達等發(fā)布了 ModernBERT。
ModernBERT 是一個新的模型系列,具有兩個型號:基礎(chǔ)版 139M 、較大版 395M。在速度和準確率方面都比 BERT 及其同類模型有了顯著改進。該模型采用了近年來在大型語言模型 (LLM) 方面的數(shù)十項進展,包括對架構(gòu)和訓(xùn)練過程的更新。
除了速度更快、準確度更高外,ModernBERT 還將上下文長度增加到 8k 個 token,而大多數(shù)編碼器只有 512 個 token,并且是第一個在訓(xùn)練數(shù)據(jù)中包含大量代碼的僅編碼器專用模型。
- 原文地址:https://huggingface.co/blog/modernbert
- 論文地址:https://arxiv.org/pdf/2412.13663
- 項目主頁:https://github.com/huggingface/blog/blob/main/modernbert.md
Answer.AI 聯(lián)合創(chuàng)始人 Jeremy Howard 表示,ModernBERT 不炒作生成式 AI(GenAI),而是真正的主力模型,可用于檢索、分類,是真正有用的工作。此外還更快、更準確、上下文更長、更有用。
僅解碼器模型
近期,GPT、Llama 和 Claude 等模型迅速崛起,這些模型是僅解碼器模型,也可以說是生成模型。它們的出現(xiàn)催生出令人驚嘆的新型領(lǐng)域 GenAI,例如生成藝術(shù)和交互式聊天。本文所做的,本質(zhì)上就是將這些進展移植回僅編碼器模型。
為什么要這么做?因為許多實際應(yīng)用都需要一個精簡的模型!而且它不需要是一個生成模型。
更直白地說,僅解碼器模型對于許多工作來說太大、太慢、太私密、太昂貴。想想最初的 GPT-1 是一個 1.17 億參數(shù)的模型。相比之下,Llama 3.1 模型有 4050 億個參數(shù),對于大多數(shù)公司來說,這種方法過于復(fù)雜和昂貴,無法復(fù)制。
GenAI 的流行熱潮掩蓋了僅編碼器模型的作用。這些模型在許多科學(xué)和商業(yè)應(yīng)用中發(fā)揮了巨大作用。
僅編碼器模型
僅編碼器模型的輸出是數(shù)值列表(嵌入向量),其將「答案」直接編碼為壓縮的數(shù)字形式。該向量是模型輸入的壓縮表示,這就是為什么僅編碼器模型有時被稱為表示模型。
雖然僅解碼器模型(如 GPT)可以完成僅編碼器模型(如 BERT)的工作,但它們受到一個關(guān)鍵約束:由于它們是生成模型,因此從數(shù)學(xué)上講它們「不允許窺視」后面的 token。這與僅編碼器模型形成對比,后者經(jīng)過訓(xùn)練,每個 token 都可以向前和向后(雙向)查看。它們就是為此而構(gòu)建的,這使得它們在工作中非常高效。
基本上,像 OpenAI o1 這樣的前沿模型就像法拉利 SF-23,這顯然是工程學(xué)的勝利,旨在贏得比賽。但僅是更換輪胎就需要專門的維修站,而且你無法自己購買。相比之下,BERT 模型就像本田思域,這也是一項工程學(xué)的勝利,但更微妙的是,它被設(shè)計成價格實惠、省油、可靠且極其實用的車型。因而無處不在。
我們可以從不同的角度看待這個問題。
首先是基于編碼器的系統(tǒng):在 GPT 出現(xiàn)之前,社交媒體和 Netflix 等平臺中都有內(nèi)容推薦。這些系統(tǒng)不是建立在生成模型上,而是建立在表征模型(如僅編碼器模型)上。所有這些系統(tǒng)仍然存在,并且仍在大規(guī)模運行。
接著是下載量:在 HuggingFace 上,RoBERTa 是基于 BERT 的領(lǐng)先模型之一,其下載量超過了 HuggingFace 上 10 個最受歡迎的 LLM 的總下載量。事實上,目前,僅編碼器模型每月的下載量總計超過 10 億次,幾乎是僅解碼器模型(每月下載量為 3.97 億次)的三倍。
最后是推理成本:按推理計算,每年在純編碼器模型上執(zhí)行的推理要比純解碼器模型或生成模型多很多倍。一個有趣的例子是 FineWeb-Edu,團隊選擇使用僅解碼器模型 Llama-3-70b-Instruct 生成注釋,并使用經(jīng)過微調(diào)的基于 BERT 的模型執(zhí)行大部分過濾。此過濾耗時 6,000 H100 小時,按照每小時 10 美元的定價,總計 60,000 美元。另一方面,即使使用成本最低的 Google Gemini Flash 及其低推理成本(每百萬個 token 0.075 美元),向流行的僅解碼器模型提供 15 萬億個 token 也需要花費超過一百萬美元!
性能
以下是 ModernBERT 和其他模型在一系列任務(wù)中的準確率比較 。ModernBERT 是唯一在每個類別中都獲得最高分的模型:
如果你了解 Kaggle 上的 NLP 競賽,那么你就會知道 DeBERTaV3 多年來一直是處于冠軍位置。但現(xiàn)在情況已經(jīng)變了:ModernBERT 不僅是第一個在 GLUE 上擊敗 DeBERTaV3 的模型,而且它使用的內(nèi)存還不到 Deberta 的 1/5。
當(dāng)然,ModernBERT 的速度也很快,它的速度是 DeBERTa 的兩倍 —— 事實上,在輸入混合長度的情況下,速度最高可提高 4 倍。它的長上下文推理速度比其他高質(zhì)量模型(如 NomicBERT 和 GTE-en-MLM)快近 3 倍。
ModernBERT 的上下文長度為 8,192 個 token,比大多數(shù)現(xiàn)有編碼器長 16 倍以上。
對于代碼檢索,ModernBERT 的性能是獨一無二的,因為之前從未有過編碼器模型在大量代碼數(shù)據(jù)上經(jīng)過訓(xùn)練。例如,在 StackOverflow-QA 數(shù)據(jù)集 (SQA) 上,這是一個混合了代碼和自然語言的混合數(shù)據(jù)集,ModernBERT 的專業(yè)代碼理解和長上下文使其成為唯一一個在此任務(wù)上得分超過 80 的模型。
與主流模型相比,ModernBERT 在檢索、自然語言理解和代碼檢索這三大類任務(wù)中表現(xiàn)突出。雖然 ModernBERT 在自然語言理解任務(wù)上稍微落后于 DeBERTaV3,但其速度要快很多倍。
與特定領(lǐng)域的模型相比,ModernBERT 在大多數(shù)任務(wù)中都相當(dāng)或更勝一籌。此外,ModernBERT 在大多數(shù)任務(wù)中都比大多數(shù)模型更快,并且可以處理多達 8,192 個 token 的輸入,比主流模型長 16 倍。
效率
以下是 ModernBERT 和其他解碼器模型在 NVIDIA RTX 4090 上的內(nèi)存(最大批大小,BS)和推理(以每秒數(shù)千個 token 為單位)效率對比結(jié)果:
對于可變長度的輸入,ModernBERT 比其他模型都快得多。
對于長上下文輸入,ModernBERT 比第二快的模型快 2-3 倍。此外,由于 ModernBERT 的效率,它可以使用比幾乎任何其他模型都大的批處理大小,并且可以在更小、更便宜的 GPU 上有效使用。特別是基礎(chǔ)模型的效率可能會使新應(yīng)用程序能夠直接在瀏覽器、手機等上運行。
ModernBERT
接下來文章解釋了為什么我們應(yīng)該更加重視編碼器模型。作為值得信賴、但被低估的主力模型,自 2018 年 BERT 發(fā)布以來,它們的更新速度出奇地慢!
更令人驚訝的是:自 RoBERTa 以來,還沒有編碼器能夠提供整體的改進:DeBERTaV3 具有更好的 GLUE 和分類性能,但犧牲了效率和檢索。其他模型(例如 AlBERT)或較新的模型(例如 GTE-en-MLM)都在某些方面比原始 BERT 和 RoBERTa 有所改進,但在其他方面有所退步。
ModernBERT 項目主要有三個核心點:
- 現(xiàn)代化的 transformer 架構(gòu);
- 特別重視注意力效率;
- 以及數(shù)據(jù)。
認識新的 Transformer
Transformer 架構(gòu)已成為主流,如今絕大多數(shù)模型都在使用它。但值得注意的是,Transformer 不止一個,而是有很多種。其主要共同點是,都堅信注意力機制才是所需要的一切,因此圍繞注意力機制構(gòu)建了各種改進。
用 RoPE 替換舊的位置編碼:這使得模型能夠更好地理解單詞之間的關(guān)系,并允許擴展到更長的序列長度。
- 將舊的 MLP 層替換為 GeGLU 層,改進原始 BERT 的 GeLU 激活函數(shù);
- 通過刪除不必要的偏置項來簡化架構(gòu),從而更有效地使用參數(shù)預(yù)算;
- 在嵌入后增加一個額外的歸一化層,有助于穩(wěn)定訓(xùn)練。
全局和局部注意力
ModernBERT 最具影響力的功能之一是 Alternating 注意力機制,而不是全局注意力機制。
隨著注意力計算復(fù)雜度隨著每個額外的 token 而膨脹,這意味著 ModernBERT 可以比任何其他模型更快地處理長輸入序列。實際上,它看起來像這樣:
Unpadding 和序列 Packing
另一個有助于 ModernBERT 提高效率的核心機制是 Unpadding 和序列 Packing。
為了能夠處理同一批次中的多個序列,編碼器模型要求序列具有相同的長度,以便可以執(zhí)行并行計算。傳統(tǒng)上的做法是依靠 padding 來實現(xiàn)這一點:找出哪個句子最長,并添加無意義的 token 來填充序列。
雖然填充解決了這個問題,但它并不優(yōu)雅:大量的計算最終被浪費在填充 token 上,而這些 token 不會提供任何語義信息。
比較 padding 和序列 packing。序列 packing(unpadding )避免了模型在填充 token 上的計算浪費。
Unpadding 解決了這個問題,其不會保留這些填充 token,而是將它們?nèi)縿h除,并將它們連接到批大小為 1 的小批次中,從而避免了不必要的計算。如果你使用的是 Flash Attention,unpadding 甚至比以前的方法更快,比以前的方法加快 10-20%。
訓(xùn)練
編碼器落后的一大方面在于訓(xùn)練數(shù)據(jù)。在通常的理解中,這僅指的是訓(xùn)練數(shù)據(jù)規(guī)模,但事實并非如此:以往的編碼器(如 DeBERTaV3)經(jīng)過足夠長時間的訓(xùn)練,甚至可能突破了萬億 tokens 規(guī)模。
但問題在于數(shù)據(jù)多樣性:很多舊模型在有限的語料庫上進行訓(xùn)練,通常包括 Wikipedia 和 Wikibooks。很明顯,這些混合數(shù)據(jù)是單一的文本模態(tài):它們只包含高質(zhì)量的自然文本。
相比之下,ModernBERT 的訓(xùn)練數(shù)據(jù)具有多種英語來源,包括網(wǎng)頁文檔、代碼和科學(xué)文章。該模型訓(xùn)練了 2 萬億 tokens,其中大多數(shù)是唯一的,而不像以往編碼器那樣常常重復(fù) 20 到 40 次。這種做法的影響是顯而易見的:在所有的開源編碼器中,ModernBERT 在編碼任務(wù)上實現(xiàn)了 SOTA。
流程
團隊堅持原始 BERT 訓(xùn)練方法,并在后續(xù)工作的啟發(fā)下進行了一些小的升級,包括刪除了下一句(Next-Sentence)預(yù)測目標,原因是它在增加開銷的情況下沒有明顯的收益,并將掩蔽率從 15% 提高了 30%。
兩個模型都采用三段式訓(xùn)練流程。首先在序列長度為 1024 的情況下訓(xùn)練了 1.7T tokens 的數(shù)據(jù),然后采用一個長上下文適應(yīng)階段,在序列長度為 8192 的情況下訓(xùn)練了 250B tokens 的數(shù)據(jù),同時通過降低批大小來保持每個批次的總 tokens 數(shù)大體一致。最后按照 ProLong 中強調(diào)的長上下文擴展思路,對不同采樣的 50B tokens 數(shù)據(jù)進行退火。
從結(jié)果來看,三段式訓(xùn)練可以確保模型運行良好,在長上下文任務(wù)上具有競爭力,也不會影響其處理短上下文的能力。
此外還有另一個好處:對于前兩個階段,團隊在預(yù)熱階段完成之后使用恒定學(xué)習(xí)率來訓(xùn)練,只對最后的 50B tokens 執(zhí)行學(xué)習(xí)率衰減,并遵循了梯形(預(yù)熱 - 穩(wěn)定 - 衰減)學(xué)習(xí)率。更重要的是:受到 Pythia 的啟發(fā),團隊可以在這些穩(wěn)定的階段發(fā)布每一個直接中間檢查點。這樣做的主要原因是支持未來的研究和應(yīng)用:任何人都可以從團隊的預(yù)衰減檢查點重新開始訓(xùn)練,并對適合自己預(yù)期用途的域數(shù)據(jù)進行退火。
技巧
最后,該團隊使用了兩個技巧來加快實現(xiàn)速度。
第一個技巧很常見:由于初始訓(xùn)練步驟更新了隨機權(quán)重,因而采用批大小預(yù)熱。首先從較小的批大小開始,這樣相同數(shù)量的 token 會更加頻繁地更新模型權(quán)重,接下來逐漸增加批大小直到達到最終的訓(xùn)練大小。這樣做大大加快了初始階段的模型訓(xùn)練速度,其中模型學(xué)習(xí)到了最基礎(chǔ)的語言理解。
第二個技巧不太常見:通過對較大的模型平鋪(tiling)來進行權(quán)重初始化,這一靈感來自微軟的 Phi 系列模型。該技巧基于以下認知:當(dāng)我們有一組非常好的 ModernBERT-base 權(quán)重時,為什么要利用隨機數(shù)來初始化 ModernBERT-large 的初始權(quán)重呢?的確,事實證明了,將 ModernBERT-base 的權(quán)重平鋪到 ModernBERT-large 要比隨機權(quán)重的初始化效果好。此外,該技巧跟批大小預(yù)熱一樣可以在堆疊后帶來額外好處,從而更快地進行初始訓(xùn)練。
總之,ModernBERT 成為新的小型、高效的僅編碼器 SOTA 系列模型,并為 BERT 提供了亟需的重做。另外證明了僅編碼器模型可以通過現(xiàn)代方法得到改進,并在一些任務(wù)上仍能提供非常強大的性能,并實現(xiàn)極具吸引力的尺寸 / 性能比。