新聞
模型
產品
keyboard_arrow_down
深度搜索
搜索、讀取並推理直到找到最佳答案。
讀取器
讀取URL或搜索為大模型提供更好的依據。
向量模型
世界一流的多模態多語言向量模型。
重排器
世界一流的重排器,最大限度地提高搜索相關性。
更多的
keyboard_arrow_down
分類器
圖片和文本的零樣本和少樣本分類。
切分器
將長文本切分成塊或詞元。

API 文檔
為您的AI 編程助手 IDE 或大模型自動生成代碼
open_in_new


公司
keyboard_arrow_down
關於我們
聯繫銷售
實習生計劃
加入我們
open_in_new
下載Logo
open_in_new
條款及條件


登錄
login
ModernBERT 的參數效率
ModernBERT 的程式碼建模
ModernBERT 的長文本處理能力
痛苦的教訓?
結論
技術文章
一月 22, 2025

從 ModernBERT 中我們應該學到什麼?

更大的訓練資料、高效的參數配置,以及深而窄的架構,ModernBERT 為未來類 BERT 模型指出了發展方向。
Nan Wang
Alex C-G
Nan Wang, Alex C-G • 10 分鐘的讀取量

回到 2018 年,Google 發布了 BERT,這在當時 LLM 浪潮之前就已經是 NLP 的一大突破。即使到現在,許多小型語言模型仍然是基於 BERT 構建的。在 2024 年 12 月,ModernBERT 將我們從近期 LLM 發展中學到的經驗應用到這些較小的模型上。關鍵改進在哪?更好的參數效率、代碼理解能力和長文本處理能力。

在這篇文章中,我們將分析 ModernBERT 與兩個我們非常熟悉的模型的比較:jina-XLM-RoBERTa(jina-embeddings-v3 背後的多語言骨幹)和 RoBERTa-large。讓我們看看每個模型:

  • ModernBERT(2024 年 12 月)是最近發布的 SLM,由 Answer.AI、LightOn 和 HuggingFace 共同開發。它利用了現代優化技術,如 RoPE 實現 8,192 token 的上下文窗口和 GeGLU layers,在保持效率的同時提升性能。
  • jina-XLM-RoBERTa (2024 年 9 月)是一個基於 Meta 的 XLM-RoBERTa 的多語言文本嵌入模型。原始的 XLM-RoBERTa 使用 XLM 大型多語言數據集增強了 RoBERTa,而 jina-XLM-RoBERTa 則通過擴展上下文訓練、RoPE 實現和 FlashAttention-2 支持進一步改進。這個模型是 jina-embeddings-v3 的骨幹。
  • RoBERTa-large(2019 年 7 月)由 Meta 開發,是 BERT 的增強版本,擁有 3.55 億參數。通過延長訓練時間、更大的數據集和動態遮罩等創新,它在包括 GLUE、SQuAD 和 RACE 在內的關鍵基準測試中取得了驚人的成果。這使它非常適合從文本分類到問答等各種 NLP 任務。

通過比較這些模型的三個核心方面,我們旨在為模型開發者突出 ModernBERT 的有效設計選擇,並為未來的 BERT 類模型識別關鍵的開發見解。我們還將分享開發 jina-embeddings-v3 的經驗,並討論 jina-embeddings-v4 和 jina-reranker-v3 的計劃改進。

tagModernBERT 的參數效率

讓我們首先研究 ModernBERT 在參數效率方面的做法 - 它引入了最近 LLM 發展中的幾個關鍵見解。ModernBERT 利用了三個核心策略:更深但更窄的架構、受控的詞彙表大小,以及從較小模型開始的漸進式模型擴展。

tag深而窄的架構

ModernBERT-large 有 28 層,比 jina-XLM-RoBERTa 和 RoBERTa-large 的 24 層更深。有趣的是,儘管層數更多,它的參數數量仍與 RoBERTa-large 相當。jina-XLM-RoBERTa 需要更多參數,因為它要處理 89 種語言,而其他兩個只專注於英語。

對於小型 LLM 來說,深度(層數)比寬度(隱藏單元數)更重要。深而窄的模型結構在捕捉抽象概念方面表現出色,最終能獲得更好的性能。

transformer 的大部分參數來自注意力層和全連接層。ModernBERT 通過"變窄"來保持競爭力 - 它在 28 層中使用 2,624 個隱藏單元,相比之下 RoBERTa-large 在 24 層中使用 4,096 個單元。這種"更深"但更窄的設置使它們能夠在不膨脹模型的情況下達到性能目標。

ModernBERT-large jina-XLM-RoBERTa RoBERTa-large
參數量 400M 550M 355M
隱藏狀態 1,024 1,024 1,024
中間維度 2,624 4,096 4,096
注意力頭數 16 16 16
層數 28 24 24
詞彙表大小 50,368 250,002 50,265

這種方法與 Meta 的 MobileLLM 研究結果一致,該研究發現對於較小的模型來說,在捕捉複雜模式和提升性能方面,深度比寬度更重要。本質上,通過更多 transformer 層處理信息的能力比擁有更寬的層進行並行處理更有價值。

讓我們看看這種深而窄架構的性能數據。

與使用傳統淺而寬架構的同類模型相比,ModernBERT 在檢索和 STS 等關鍵任務上表現更好 - 同時保持類似的參數數量。
ModernBERT-large jina-XLM-RoBERTa RoBERTa-large
STS12 72.6 72.7 68.9
STS13 84.9 83.9 81.0
STS14 77.5 77.7 74.8
STS15 84.8 85.8 84.1
STS16 79.4 79.6 78.6
STS17 87.5 87.2 87.2
TRECCOVID 61.1 59.6 49.3
FiQA 44.4 40.0 40.7
NFCorpus 32.6 30.6 27.9
SciFact 68.6 65.5 63.1
平均值 69.3 68.2 65.6

以 jina-XLM-RoBERTa 為例 - 它建立在 RoBERTa-large 的淺而寬架構之上,但將詞彙表從 5 萬擴大到 25 萬個 token,並在更多數據上訓練。然而 ModernBERT 仍然略勝一籌,這表明架構的改變在效率方面產生了實質性的差異。

tag詞彙表大小很重要

首先,讓我們看看 transformer 中詞彙表參數是如何計算的。對於任何 transformer,詞彙表參數 = 不同 token 的數量 × 隱藏維度。以 jina-XLM-RoBERTa 為例:有 25 萬個 token 和 1,024 維度,僅用於詞彙編碼就需要 2.56 億參數 - 這還是在處理任何實際語言任務之前!

在 transformers 中,第一層使用權重矩陣(即詞彙權重)將 tokens 映射到隱藏狀態。如果使用所有 UTF-8 編碼點(1,112,064)和 1,024 個隱藏維度,你需要巨大的 1,112,064 × 1,024 = 1 B 參數僅用於 token 轉換。雖然更大的 LLM(超過 100B 參數)可以處理這種開銷,但對較小的模型來說是一個嚴重的限制。這就是為什麼我們使用 BPE 這樣的分詞器,它可以有效地將常見的 UTF-8 編碼點合併成單個 tokens。

但是這裡有一個重點:詞彙權重不會參與注意力機制——它們只是查詢表。對於在固定參數預算下工作的 SLM 來說,更大的詞彙表意味著用於實際進行語言處理的注意力層可用參數更少。這解釋了為什麼僅支援英語的 ModernBERT-large 雖然較小卻優於多語言的 jina-XLM-RoBERTa——jina-XLM-RoBERTa 分配了更多參數(47%!)來支援多種語言。ModernBERT 專注的詞彙表不僅提升了性能,還加快了推理速度,使其特別適合資源受限的應用場景。

所以現在如果我們只看核心模型參數(不包括詞彙權重),ModernBERT 實際上比同類模型擁有更多的計算能力:ModernBERT 在真正的語言建模上比 jina-XLM-RoBERTa 多投入了 19% 的參數,比 RoBERTa-large 多 15%!

模型規格 ModernBERT-large jina-XLM-RoBERTa RoBERTa-large
語言支援 僅英語 89 種語言 僅英語
詞彙表大小 50.4K 250K 50.3K
總參數量 400M 550M 355M
詞彙參數量 51M 256M 51M
詞彙參數比例 13% 47% 14%
核心模型參數 349M 294M 304M

tag通過「權重平鋪」進行模型擴展

在構建 jina-BERT-v2 骨幹網路時,我們發現從頭開始訓練 SLM 需要大量資源且複雜。ModernBERT 通過一種稱為權重平鋪的智能初始化方法解決了這個問題——本質上是從其較小的基礎版本的權重引導 ModernBERT-large。

這種技術並不完全是新的——它建立在 DeepMind 的 Gopher 工作的基礎上,在微軟的 Phi-2 模型中也有出現。但它在這裡的應用對解決 SLM 訓練瓶頸特別有效。

ModernBERT 使用 Gopher 團隊的深度初始化策略,從 22 層擴展到 28 層。對於那些額外的層(23-28),他們使用 ModernBERT-base 原始 22 層的權重進行初始化。對於每一層的權重矩陣,他們使用 Phi-2 的中心平鋪方法。它是這樣工作的:他們把 ModernBERT-base 的權重放在 ModernBERT-large 矩陣的正中間。對於仍然空著的邊緣部分?他們循環包裹原始權重來填充它們。

這種初始化策略給 ModernBERT-large 帶來了顯著優勢——它不是從頭開始,而是利用了較小版本預先學習的模式。它在這個規模範圍內擴展語言模型特別有效。

我們發現熱啟動模型能夠迅速從較高的初始損失(由於增加的參數)恢復,達到接近基礎模型的損失。我們能夠將 417M 參數擴展超過 3 倍,並保持比從頭開始訓練的等效模型更好的性能,這意味著收益不僅限於訓練初期。然而,在更大的規模下,收斂時的相對收益會減少,特別是在寬度擴展方面。

循環權重包裹不僅僅是為了方便——它與注意力矩陣自然呈現的周期性模式很好地契合。Gopher 的研究表明,這種方法在 SLM(不到 9B 參數)中特別有效,儘管當你進入更大模型領域時,這些好處開始逐漸減少。

tagModernBERT 的程式碼建模

ModernBERT 通過其程式碼優化的分詞器和訓練數據,為程式碼理解帶來了專門的方法。這種針對程式碼處理的微調在理解和檢索任務中都取得了成效。

我們使用 jina-embeddings-v2-code 語料庫進行了基準測試,比較了三個模型作為骨幹:ModernBERT、jina-XLM-RoBERTa 和 RoBERTa-large。測試使用 CodeSearchNet ——將文本描述與程式碼片段匹配。ModernBERT 在各方面都優於其他兩種選擇。

這個差距是有道理的—— jina-XLM-RoBERTa 和 RoBERTa-large 在訓練過程中都沒有接觸過程式語言。與此同時,ModernBERT-large 訓練了兩萬億個 tokens,包括大量的程式碼。這種對程式語法和模式的接觸使它在程式碼相關任務中具有明顯優勢。jina-XLM-RoBERTa 略優於 RoBERTa-large,可能是因為其更大的多語言訓練數據——相同的架構,更多的接觸。儘管如此,兩者都明顯落後於 ModernBERT-large。
任務 ModernBERT-large jina-XLM-RoBERTa RoBERTa-large
AdvRetrieval 0.342 0.363 0.331
QueryRetrieval.python 0.521 0.530 0.525
QueryRetrieval java 0.679 0.633 0.644
QueryRetrieval.javascript 0.755 0.768 0.732
QueryRetrieval.php 0.815 0.781 0.755
QueryRetrieval.ruby 0.729 0.744 0.722
QueryRetrieval.go 0.833 0.809 0.796
Retrieval.go 0.778 0.750 0.759
Retrieval.java 0.840 0.792 0.796
Retrieval.javascript 0.817 0.792 0.757
Retrieval.php 0.852 0.805 0.796
Retrieval.python 0.849 0.816 0.787
Retrieval.ruby 0.849 0.796 0.803
Avg. 0.743 0.721 0.708

tag分詞器的優勢

讓我們深入了解為什麼 ModernBERT 能夠很好地處理程式碼 - 它使用了專門針對程式碼進行訓練的 OLMo tokenizer,而不是標準的 BERT/RoBERTa 分詞器。

分詞器將 UTF-8 文本分解為可映射到向量的詞符 - 這些是模型實際處理的內容。在訓練期間,它會學習將經常出現的字符序列組合成單個詞符。差異在哪裡?標準分詞器可能會將 init 分解為 in + it,忽略了程式設計的上下文。但 ModernBERT 的程式碼感知分詞器可以完整保留它。

關於空格處理,事情變得更有趣:ModernBERT 將 Python 的前導空格保留為單個詞符,並區分 4 個和 8 個空格的差異 - 這對程式碼結構至關重要。而 jina-XLM-RoBERTa 將所有連續空格合併為單個 _,RoBERTa-large 則將每個空格都視為獨立的詞符。這意味著在處理程式碼時,ModernBERT 的編碼器可以獲得更乾淨、更有意義的輸入,而其他模型則在處理零碎、連貫性較差的詞符。

ModernBERT 將 Python 的前導空格保留為單個詞符,並區分 4 個和 8 個空格的差異 - 這對程式碼結構至關重要;而其他模型則在處理零碎、連貫性較差的詞符。

tagModernBERT 的長文本處理能力

ModernBERT 在處理長文本方面取得了重大進展,這要歸功於其龐大的訓練語料庫(3000 億個詞符,每個樣本包含 8,192 個詞符)以及結合全局和局部注意力等先進技術。

為了評估長文檔處理能力,我們使用了 MLDR 數據集 - 這是一個涵蓋 13 種語言的綜合長文本基準。由於 ModernBERT 目前僅支持英語,我們專注於 MLDR 的英語子集來對比 ModernBERT 和 jina-XLM-RoBERTa。雖然這兩個模型都能處理 8K 詞符的輸入,但由於 RoBERTa-large 的 512 詞符限制不足以進行長文本分析,因此在這個基準測試中被排除。

ModernBERT-large jina-XLM-RoBERTa
MLDR-en 0.351 0.290

ModernBERT 的卓越表現不僅歸功於其大量的長文本訓練,更重要的是得益於其創新的全局和局部注意力機制組合。與在每一層都應用計算成本高昂的全局注意力的 jina-XLM-RoBERTa 不同,ModernBERT 採用了更高效的方法。它在全局注意力(每三層使用一次,theta 值為 160,000)和局部注意力(使用 128 詞符的滑動窗口,theta 值為 100,000)之間交替。這種混合策略在保持高性能的同時大大減少了訓練時間。

在 ModernBERT 中,每三層採用全局注意力,RoPE theta 值為 160,000,其餘層使用 128 詞符的局部滑動窗口注意力,RoPE theta 值為 10,000。—— ModernBERT

tag痛苦的教訓?

擴展定律和痛苦的教訓表明,性能的主要改進主要來自增加參數數量和訓練數據。這一原則指導我們擴展語料庫並使用 LoRA 進行特定任務適配。

然而,ModernBERT 的成功表明我們低估了架構優化的力量。它證明了 SLM 可以通過更好的數據模型效率來實現卓越的結果,而不一定要增加參數。最近的Stella Embeddings 技術報告強化了這一發現,表明當前的嵌入模型訓練方法可以在不增加語料庫或模型規模的情況下得到改進。

Graph showing Scaling Law of Embedding Models with 'Parameter Size' on the x-axis and 'MTEB Performance' on the y-axis, featu
嵌入模型的擴展定律。圖中展示了英語任務的平均 MTEB 性能與模型參數數量的關係。每個點代表一個嵌入模型。趨勢線代表所有模型,多語言模型以青色突出顯示。可以看到 jina-embeddings-v3 相比同規模模型展現出優異的性能,同時相比其前身 jina-embeddings-v2 也顯示出超線性的改進。該圖表是通過從 MTEB 排行榜中選取前 100 個嵌入模型創建的,排除了沒有大小信息的模型(通常是封閉源或專有模型)。明顯的惡意提交也被過濾掉了。

展望未來,隨著我們對數據利用的深入理解和 ModernBERT 技術的實施,我們預計計算成本和模型規模都將降低。短期內,我們可以實施 ModernBERT 論文中概述的直接改進 - 特別是整合更多與程式碼相關的數據並採用適合程式碼的分詞器。更複雜的改變,如切換到深而窄的架構或從較小的模型引導大型模型,將需要從頭開始構建骨幹模型 - 這是一個中期計劃。

雖然 ModernBERT 的效率令人矚目,但其僅限文本的限制指出了未來的挑戰。隨著多模態嵌入模型的普及,我們的下一個挑戰是開發更智能、更快速、更具能力的搜尋基礎模型,以處理多模態應用的輸入。這些應用需要更長的上下文窗口 - 這是一個尚待解決的效率挑戰。

tag結論

在本文中,我們探討了 ModernBERT 如何通過三個關鍵創新推進 BERT 家族模型:其深而窄的架構、優化的分詞器以及使用權重平鋪的高效擴展。這些改進使 ModernBERT 能夠在相對緊湊的規模下提供出色的性能,在各種任務中超越 RoBERTa-large 和 jina-XLM-RoBERTa。ModernBERT 證明了架構改進可能比參數規模更重要,為更高效的模型開闢了道路。其成功運用權重平鋪表明,漸進式擴展可以在保持或甚至提升性能的同時降低訓練成本。此外,其緊湊的詞彙表和針對性優化表明,在資源有限的環境下,專門的 SLM 具有越來越多的機會。

類別:
技術文章
rss_feed
辦公室
location_on
加利福尼亞州桑尼維爾
710 Lakeway Dr, Ste 200, 桑尼維爾, CA 94085, 美國
location_on
德國柏林(總部)
Prinzessinnenstraße 19-20,10969 柏林,德國
location_on
中國北京
中國北京市海淀區西大街48號6號樓5層
location_on
中國深圳
中國深圳市賦安科技大廈4樓402
搜索底座
深度搜索
讀取器
向量模型
重排器
分類器
切分器
API 文檔
獲取 Jina API 密鑰
速率限制
API 狀態
公司
關於我們
聯繫銷售
新聞
實習生計劃
加入我們
open_in_new
下載Logo
open_in_new
條款
安全
條款及條件
隱私
管理 Cookie
email
Jina AI © 2020-2025.