2018 年、Google が BERT を公開し、現在の LLM ブーム以前から NLP のゲームチェンジャーとなりました。現在でも、多くの Small Language Model が BERT をベースに構築されています。2024 年 12 月、ModernBERT は最近の LLM 開発から得られた知見をこれらの小規模モデルに適用しました。主なポイントは?パラメータ効率の向上、コード理解能力の向上、長文脈処理の改善です。
この投稿では、私たちがよく知る 2 つのモデル:jina-XLM-RoBERTa
(jina-embeddings-v3 の多言語バックボーン)と RoBERTa-large
と比較して ModernBERT を分析します。各モデルを見てみましょう:
- ModernBERT(2024 年 12 月)は、Answer.AI、LightOn、HuggingFace が共同開発した最新の SLM です。8,192 トークンのコンテキストウィンドウのための RoPE や GeGLU レイヤーなどの最新の最適化を活用し、効率性を維持しながらパフォーマンスを向上させています。
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 が開発した、3 億 5,500 万パラメータを持つ BERT の改良版です。拡張トレーニング、より大規模なデータセット、ダイナミックマスキングなどの革新により、GLUE、SQuAD、RACE などの主要ベンチマークで印象的な結果を達成しています。これにより、テキスト分類から質問応答まで、様々な NLP タスクに適しています。
これらのモデルを 3 つの核心的な側面から比較することで、モデル開発者向けに ModernBERT の効果的な設計選択を強調し、将来の BERT 系モデルの開発に向けた重要な洞察を特定することを目指します。また、jina-embeddings-v3 の開発から得た学びと、jina-embeddings-v4
および jina-reranker-v3
に向けた改善計画についても共有します。
tagModernBERT のパラメータ効率
まず、ModernBERT のパラメータ効率へのアプローチを検討しましょう - 最近の LLM 開発からいくつかの重要な洞察を取り入れています。ModernBERT は 3 つの主要な戦略を活用しています:より深くより薄いアーキテクチャ、制御された語彙サイズ、小規模モデルからの段階的なモデルのアップスケーリングです。
tag深くて薄いアーキテクチャ
ModernBERT-large は 28 層と深くなっていますが、jina-XLM-RoBERTa
と RoBERTa-large
は 24 層です。興味深いのは、追加の層があるにもかかわらず RoBERTa-large
とパラメータ数が同じということです。jina-XLM-RoBERTa
は 89 言語を扱うため、より多くのパラメータが必要ですが、他の 2 つは英語のみに焦点を当てています。
トランスフォーマーのパラメータの大部分は、アテンション層と全結合層から来ています。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 研究と一致しており、小規模モデルでは複雑なパターンの捕捉とパフォーマンスの向上において、幅よりも深さが重要であることが分かっています。本質的に、並列処理のために広いレイヤーを持つよりも、より多くのトランスフォーマーレイヤーを通じて情報を処理する能力の方が価値があることが証明されています。
この深くて薄いアーキテクチャがどのように機能するか、データを見てみましょう。
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
の浅くて太いアーキテクチャをベースに、語彙を 50K から 250K トークンに増やし、より多くのデータで訓練していますが、それでも ModernBERT の方が優れています。これは、アーキテクチャの変更が効率性に大きな違いをもたらしていることを示唆しています。
tag語彙サイズの重要性
まず、トランスフォーマーでの語彙パラメータの計算方法を見てみましょう。トランスフォーマーでは、語彙パラメータ = 個別トークン数 × 隠れ次元数
となります。jina-XLM-RoBERTa
の例では:25 万トークンと 1,024 次元で、実際の言語タスクを処理する前に、語彙エンコーディングだけで 2 億 5,600 万パラメータが必要になります!
1,112,064 × 1,024 = 1 B
のパラメータが必要になります。より大きな LLM(100B 以上のパラメータ)ではこのオーバーヘッドを処理できますが、小規模なモデルでは深刻な制約となります。これがまさに、BPE のようなトークナイザーを使用する理由です。これは一般的な UTF-8 コードポイントを 1 つのトークンに効率的に統合します。ただし、次のことに注目してください:語彙の重みはアテンションメカニズムに寄与しません - 単なる参照テーブルです。固定パラメータ予算で動作する 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 の研究を基に構築され、Microsoft の Phi-2 モデルでも見られます。しかし、ここでの適用は SLM トレーニングのボトルネックに対処する上で特に効果的です。
この初期化戦略により、ModernBERT-large は大きな利点を得ています - ゼロから始めるのではなく、より小規模な対応モデルからの事前学習されたパターンを活用します。これはこのサイズ範囲の言語モデルのスケールアップに特に効果的であることが証明されています。
ウォームスタートしたモデルは、(追加されたパラメータによる)高い初期損失から、ベースモデルの損失に非常に近い値まで急速に回復することがわかりました。417M のパラメータを 3 倍以上に拡大し、ゼロから収束まで訓練された同等のモデルよりも高いパフォーマンスを維持できました。これは、利点がトレーニングの開始時に限定されていなかったことを意味します。ただし、より大きなサイズでは、収束時に得られる相対的な利点は減少し、特に幅の拡大では顕著です。
循環的な重みの巻き付けは単なる便宜的なものではありません - アテンション行列が自然に周期的なパターンを示す方法とうまく一致します。Gopher の研究では、このアプローチは SLM(9B パラメータ未満)で特に効果を発揮しますが、より大規模なモデルの領域に移行すると、その利点は徐々に減少し始めることが示されています。
tagModernBERT のコードモデリング
ModernBERT は、コード最適化されたトークナイザーとトレーニングデータを使用して、コード理解に特化したアプローチを提供します。このコード処理のための微調整は、理解とリトリーバルのタスクの両方で成果を上げています。
私たちは jina-embeddings-v2-code
コーパスを使用してベンチマークを実行し、3 つのモデルをバックボーンとして比較しました:ModernBERT
、jina-XLM-RoBERTa
、RoBERTa-large
。テストは CodeSearchNet - テキスト説明をコードスニペットにマッチングさせるものでした。ModernBERT は全面的に両方の代替モデルを上回りました。
jina-XLM-RoBERTa
も RoBERTa-large
もトレーニング中にプログラミング言語を見ていません。一方、ModernBERT-large は 2 兆のトークンでトレーニングされ、その中には相当量のコードが含まれていました。このプログラミング構文とパターンへの露出が、コード関連タスクで明確な優位性を与えています。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 トークナイザーを使用しているためで、標準の BERT/RoBERTa トークナイザーとは異なり、特にコード用に学習されています。
トークナイザーは UTF-8 テキストをベクトルにマッピングされるトークンに分割します - これが実際にモデルが処理するものです。学習中に、頻繁に出現する文字列を単一のトークンに組み合わせることを学習します。違いは何でしょうか?標準のトークナイザーは init
を in
+ it
に分割してしまい、プログラミングのコンテキストを見失います。しかし ModernBERT のコードを意識したトークナイザーは、分割せずにそのまま理解します。
スペースの扱いについて興味深い点があります:ModernBERT は Python の先頭スペースを単一のトークンとして保持し、4 スペースと 8 スペースを区別します - これはコード構造にとって重要です。一方で、jina-XLM-RoBERTa
は連続するすべてのスペースを単一の _
に圧縮し、RoBERTa-large は各スペースを個別のトークンとして扱います。これは、ModernBERT のエンコーダーがコードを処理する際により整理された、意味のある入力を受け取る一方で、他のモデルは断片化された、一貫性の低いトークンで作業していることを意味します。
tagModernBERT の長文コンテキスト処理
ModernBERT は、その広範な学習コーパス(8,192 トークンのサンプルで 300B トークン)とグローバルとローカルの注意を組み合わせた高度な技術のおかげで、長文処理において大きな進歩を遂げています。
長文処理能力を評価するために、13 の言語にわたる包括的な長文ベンチマークであるMLDR データセットを使用しました。ModernBERT は現在英語のみをサポートしているため、ModernBERT と jina-XLM-RoBERTa
を比較するために MLDR の英語サブセットに焦点を当てました。これらのモデルは両方とも 8K トークンの入力を処理できますが、RoBERTa-large
は 512 トークンの制限があり、長文分析には不十分なため、このベンチマークから除外されました。
ModernBERT-large | jina-XLM-RoBERTa |
|
---|---|---|
MLDR-en | 0.351 | 0.290 |
ModernBERT の優れたパフォーマンスは、単に広範な長文学習によるものだけではありません - それは主にグローバルとローカルの注意メカニズムを革新的に組み合わせたことによります。すべての層で計算コストの高いグローバル注意を適用する jina-XLM-RoBERTa
とは異なり、ModernBERT はより効率的なアプローチを取ります。グローバル注意(3 層ごとに theta
160,000 で使用)とローカル注意(theta
100,000 で 128 トークンのスライディングウィンドウを使用)を交互に切り替えます。このハイブリッド戦略は、高いパフォーマンスを維持しながら、学習時間を劇的に削減します。
ModernBERT では、3 層ごとに RoPE theta 160,000 のグローバル注意を採用し、残りの層では RoPE theta 10,000 の 128 トークンのローカルスライディングウィンドウ注意を使用します。—— ModernBERT
tag苦い教訓?
スケーリング則と苦い教訓は、主要なパフォーマンスの改善はパラメータ数と学習データの増加から来ることを示唆しています。この原則は、コーパスを拡大し、タスク特有の適応に LoRA を使用するというアプローチを導きました。
しかし、ModernBERT の成功により、アーキテクチャの最適化の力を過小評価していたことが明らかになりました。SLM がパラメータを必ずしも拡大せずとも、より良いデータモデル効率を通じて優れた結果を達成できることを示しています。最近のStella Embeddings 技術レポートもこの発見を裏付けており、コーパスやモデルサイズを増やすことなく、現在の埋め込みモデルの学習方法を改善できることを示しています。
jina-embeddings-v2
からスーパーリニアな改善を示していることがわかります。このグラフは MTEB リーダーボードから上位 100 の埋め込みモデルを選択し、サイズ情報のないもの(通常はクローズドソースまたはプロプライエタリモデル)を除外して作成されました。明らかなトロール投稿も除外されました。今後、データ利用についての理解が深まり、ModernBERT の技術を実装するにつれて、計算コストの低下とモデルサイズの縮小が予想されます。短期的には、ModernBERT 論文で概説された直接的な改善 - 特にコード関連データの統合とコードフレンドリーなトークナイザーの採用 - を実装できます。deep-and-thin アーキテクチャへの移行や、小さなモデルからの大規模モデルのブートストラップなど、より複雑な変更には、バックボーンモデルを一から構築する必要があります - これはより中期的な取り組みです。
ModernBERT の効率性は注目に値しますが、テキストのみという制限は今後の課題を示しています。マルチモーダル埋め込みモデルが人気を集める中、次の課題は、マルチモーダルアプリケーション向けの入力を処理できる、よりスマートで高速、そして高性能な検索基盤モデルの開発です。これらのアプリケーションはさらに長いコンテキストウィンドウを必要とします - これは解決すべき効率性の課題として残されています。
tag結論
この記事を通じて、ModernBERT が deep-and-thin アーキテクチャ、最適化されたトークナイザー、そしてウェイトタイリングを使用した効率的なスケーリングという 3 つの主要な革新によって BERT ファミリーモデルを進化させた方法を探ってきました。これらの改善により、ModernBERT は比較的コンパクトなサイズで優れたパフォーマンスを提供し、様々なタスクで RoBERTa-large
と jina-XLM-RoBERTa
の両方を上回ることができます。ModernBERT は、アーキテクチャの改善がパラメータサイズよりも重要になり得ることを示し、より効率的なモデルへの道を開いています。ウェイトタイリングの成功的な使用は、パフォーマンスを維持または向上させながら学習コストを削減できることを示しています。さらに、コンパクトな語彙と的を絞った最適化は、リソースが限られた環境での特化型 SLM の機会が広がっていることを示唆しています。