ついにBERTの代替モデル登場:ModernBERTを発表
本文の状態
日本語全文を表示中
詳細モードで約22分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Answer.AI
Hugging Faceは、既存のBERT系モデルに置き換え可能なエンコーダー専用モデル「ModernBERT」を発表した。最大8192トークンのシーケンス長に対応し、処理速度と下流タスクの性能を向上させた。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
ついに BERT の代替モデルが登場
注記
これは、🤗 HuggingFace ブログに投稿された発表ブログ記事のクロスポストです。
TL;DR(要約)
本ブログ記事では、ModernBERT を紹介します。これは最新のエンコーダー専用モデルファミリーであり、あらゆる面で旧世代のエンコーダーよりも改善されており、シーケンス長は 8192、下流タスクでの性能が向上し、処理速度も大幅に高速化されています。
ModernBERT は、BERT に似たモデルに対するスロットイン(差し込み)代替として利用可能です。ベースサイズ(パラメータ数 149M)とラージサイズ(パラメータ数 395M)の両方が用意されています。
これらのモデルの使用方法についてはこちらをクリックしてください。
ModernBERT は transformers の v4.48.0 に含まれます。それまでは、メインブランチから transformers をインストールする必要があります:
pip install git+https://github.com/huggingface/transformers.git
ModernBERT はマスク言語モデル(MLM: Masked Language Model)であるため、fill-mask パイプラインを使用するか、AutoModelForMaskedLM を経由して読み込むことができます。分類、検索、QA などの下流タスクに ModernBERT を使用するには、標準的な BERT のファインチューニングレシピに従ってファインチューニングを行ってください。⚠️ GPU が対応している場合は、最高効率を達成するために Flash Attention 2 と併用することを推奨します。そのためには、以下のように Flash Attention をインストールし、通常通りモデルを使用してください:
pip install flash-attn
AutoModelForMaskedLM の使用例:
from transformers import AutoTokenizer, AutoModelForMaskedLM
model_id = "answerdotai/ModernBERT-base"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForMaskedLM.from_pretrained(model_id)
text = "The capital of France is [MASK]."
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
To get predictions for the mask:
masked_index = inputs["input_ids"][0].tolist().index(tokenizer.mask_token_id)
predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1)
predicted_token = tokenizer.decode(predicted_token_id)
print("Predicted token:", predicted_token)
Predicted token: Paris
Using a pipeline:
import torch
from transformers import pipeline
from pprint import pprint
pipe = pipeline(
"fill-mask",
model="answerdotai/ModernBERT-base",
torch_dtype=torch.bfloat16,
)
input_text = "He walked to the [MASK]."
results = pipe(input_text)
pprint(results)
Note: ModernBERT does not use token type IDs, unlike some earlier BERT models. Most downstream usage is identical to standard BERT models on the Hugging Face Hub, except you can omit the token_type_ids parameter.
Introduction
BERT は 2018 年にリリースされました(AI の年次では数千年前!)ですが、今日でも広く使用されています。実際、現在 HuggingFace ハブで最もダウンロードされたモデルの第二位であり、月間ダウンロード数は 6,800 万回を超えています。これは、検索(RAG など)、分類(コンテンツモデレーションなど)、エンティティ抽出(プライバシーや規制コンプライアンスのため)といった、毎日直面する現実世界の問題に理想的なエンコーダー専用アーキテクチャを持っているからです。
ついに、6 年後の今日、その代替モデルが登場しました。Answer.AI と LightOn(そして仲間たち!)が ModernBERT をリリースします。ModernBERT は、速度と精度の両面で BERT やその若き兄弟たちに対するパレート最適化(Pareto improvement:より良い結果を犠牲なく達成する改善)を実現した新しいモデルシリーズです。このモデルは、近年の大規模言語モデル(LLM: Large Language Model)の研究から数十の進歩を取り入れ、アーキテクチャとトレーニングプロセスの更新を含む BERT スタイルのモデルに適用しています。

ModernBERT は、RAG パイプライン(検索拡張生成:Retrieval Augmented Generation)や推薦システムなど、現在エンコーダー専用モデルが展開されている多数のアプリケーションにおいて新たな標準となることを期待しています。
さらに、高速化と精度向上に加え、ModernBERT はコンテキスト長を 8k トークンに拡張しました(従来のエンコーダーでは通常 512 トークン程度)。また、トレーニングデータに大量のコードを含んだ初のエンコーダー専用モデルでもあります。これらの特徴により、大規模なコード検索、新しい IDE 機能、小片断ではなく文書全体に基づく検索パイプラインなど、これまでオープンモデルでは実現が難しかった新たな応用分野が開かれました。
しかし、私たちが何を行ったのかを説明するために、まずは一歩引いてこれまでの道のりを振り返ってみましょう。
デコーダー専用モデル
最近の注目すべき LLM(大規模言語モデル)の進展は、GPT、Llama、Claude などのモデルにおいて見られました。これらはデコーダー専用モデル、つまり生成モデルです。人間のようなコンテンツを生成する能力により、生成アートや対話型チャットといった驚くべき新しい GenAI(生成 AI)応用分野が実現しました。これらの目覚ましいアプリケーションは主要な投資を引きつけ、研究ブームを資金面で支え、技術的な急速な進展をもたらしました。私たちが行ったことは、本質的にこれらの進展をエンコーダー専用モデルへと移植したことです。
なぜか?多くの実用的な応用では、軽量で効率的なモデルが必要だからです。また、それが生成モデルである必要もありません。
より率直に言えば、デコーダー専用モデルは多くの業務において大きすぎ、遅すぎて、プライバシーの観点からもコスト高であり実用的ではありません。元々の GPT-1 は 1 億 1700 万パラメータを持つモデルでしたが、対照的に Llama 3.1 モデルには 4050 億パラメータが搭載されており、その技術報告書に記載されたデータ合成とキュレーションのレシピは、ほとんどの企業にとって再現するには複雑すぎ、コスト高すぎます。したがって、ChatGPT のようなモデルを利用する場合、外部の制御下にない重厚なサーバーから API 応答を得るために、セント単位で支払いを行い、秒単位で待たなければなりません。
もちろん、これらの巨大な生成モデルが持つオープンエンドな能力により、やむを得ない状況では非生成タスクや判別タスク(classification)にも使用することができます。これは、分類タスクを平易な英語で記述し、… モデルに分類させるだけで済むからです。しかし、このワークフローはプロトタイピングには素晴らしいものですが、量産段階に入ったらプロトタイプ用の価格を支払いたくはないはずです。
GenAI に関する人気の話題が、エンコーダー専用モデルの役割を覆い隠してしまっています。これらは実用的な言語処理における主力であり、多くの科学分野や商業アプリケーションで実際に現在もそのようなワークロードに使用されているモデルです。
エンコーダー専用モデル
エンコーダーモデルの出力は、数値のリスト(埋め込みベクトル)です。テキストで答えるのではなく、エンコーダーモデルはこの圧縮された数値形式に「答え」を literally 符号化していると言えます。このベクトルはモデルの入力の圧縮表現であり、そのためエンコーダー専用モデルは時として表現モデルとも呼ばれます。
デコーダー専用モデル(GPT など)はエンコーダー専用モデル(BERT など)の役割を果たすことも可能ですが、重要な制約によって足かせを付けられています。生成モデルであるため、数学的に「後続のトークンを覗き込む」ことが許されておらず、常に過去方向しか見ることができないのです。これに対し、エンコーダー専用モデルは各トークンが前後(双方向的)に参照できるように訓練されており、そのために設計されています。この構造こそが、彼らが得意とする分野において非常に効率的である理由です。
要するに、OpenAI の O1 などの最先端モデルはフェラーリ SF-23 のようなものです。明らかに工学上の偉業であり、レースで勝つために設計されたため、私たちがこれについて語るのです。しかし、タイヤを交換するためには特別なピットクルーが必要であり、個人で購入することもできません。一方、BERT モデルはホンダ・シビックのようなものです。これもまた工学上の偉業ですが、より微妙な点として、手頃な価格で、燃費が良く、信頼性が高く、極めて有用であるように設計されています。だからこそ、そこら中に溢れているのです。
これは様々な角度から見て確認できます。
生成モデルのサポート:表現モデル(エンコーダー専用)の普及を理解する一つの方法は、安全かつ効率的なシステムを構築するために、これらがデコーダー専用のモデルとどのように頻繁に併用されているかを確認することです。
明白な例として RAG が挙げられます。LLM のパラメータに学習された知識に依存するのではなく、このシステムはドキュメントストアを使用して、クエリに関連する情報を LLM に提供します。しかしもちろん、これは問題を先送りしているだけです。LLM がどのドキュメントがクエリに関連するかを知らない場合、システムはそのドキュメントを選択するための他のプロセスが必要になります。つまり、LLM を有用にするために必要な大量の情報をエンコードするために使用できるほど高速かつ安価なモデルが必要です。そのモデルは多くの場合、BERT に似たエンコーダー専用モデルです。ModernBERT などのエンコーダーが RAG パイプラインにおいてどのように重要であるかについては、Benjamin Clavié の講演をご覧ください。
もう一つの例として、生成されたテキストがコンテンツの安全性要件に違反しないことを保証するために安価な分類器を使用する監督アーキテクチャがあります。
要するに、デプロイされているデコーダー専用モデルを目にする whenever には、エンコーダー専用モデルもシステムの一部である可能性が高いです。しかし、その逆は真ではありません。
エンコーダーベースのシステム:GPT が登場する以前から、ソーシャルメディアや Netflix などのプラットフォームではコンテンツ推薦が行われていました。また、これらの場所や検索、その他様々な場所でも広告ターゲティングが実施されており、スパム検出や悪質行為検出のためのコンテンツ分類も存在していました。これらすべてのシステムは生成モデルではなく、エンコーダーのみで構成されるような表現モデルを基盤として構築されたものです。そして、これらすべてのシステムは今なお世界中に存在し、膨大な規模で稼働し続けています。1 秒間に世界中でどれほどの広告がターゲティングされているかを想像してみてください!
ダウンロード数:HuggingFace において、主要な BERT ベースモデルの一つである RoBERTa のダウンロード数は、同プラットフォーム上で最も人気のある大規模言語モデル(LLM)10 個を合わせたものよりも多くなっています。実際、現在、エンコーダーのみで構成されるモデルの月間ダウンロード合計は 10 億回を超え、3.97 億回の月間ダウンロード数を持つデコーダーのみで構成されるモデルの約 3 倍に達しています。さらに、「fill-mask」モデルカテゴリ(ModernBERT のようなエンコーダー「ベースモデル」で構成され、他の下流タスク用に微調整可能な状態にあるもの)は、全体として最もダウンロードされているモデルカテゴリとなっています。
推論コスト:上記の示唆するところは、推論単位あたりの比較において、エンコーダー専用モデルに対してデコーダー専用モデルや生成モデルの方が、1 年間に実行される推論回数が桁違いに多いということです。興味深い例として FineWeb-Edu が挙げられますが、ここではモデルベースの品質フィルタリングを 15 トリリオントークン規模で実施する必要がありました。FineWeb-Edu チームは、デコーダー専用モデルである Llama-3-70b-Instruct を用いて注釈を生成し、フィルタリングの大部分を微調整済みの BERT ベースモデルで行うことを選択しました。このフィルタリングには 6,000 H100 時間の計算リソースが必要となり、HuggingFace Inference Points の価格(1 時間あたり 10 ドル)で計算すると、合計 60,000 ドルとなりました。一方、15 トリリオントークンを人気のあるデコーダー専用モデルに投入した場合、Google の Gemini Flash を用いて最も低コストなオプション(推論コストは 100 万トークンあたり 0.075 ドル)を選んだとしても、費用は 100 万ドルを超えてしまいます!
パフォーマンス
概要
以下に、標準的な学術ベンチマークで測定された ModernBERT とその他のモデルの精度のスナップショットを示します。ご覧の通り、ModernBERT はあらゆるカテゴリで最高スコアを記録している唯一のモデルであり、エンコーダーベースのタスクすべてに対応できる単一のモデルとして最適です:

もしあなたが Kaggle で NLP コンペティションに参加した経験があれば、DeBERTaV3 が長年チャンピオンの選択となってきたことを知っているでしょう。しかしもはやそうではありません:ModernBERT は GLUE ベンチマークで DeBERTaV3 を打ち破った初のベースサイズモデルであるだけでなく、Deberta のメモリ使用量の 5 分の 1 未満しか消費しません。
もちろん ModernBERT は高速です。DeBERTa と比較して 2 倍速であり、実際には入力長が混合されているより一般的な状況では最大 4 倍も高速です。その長いコンテキスト推論は、NomicBERT や GTE-en-MLM などの他の高品質モデルと比較してほぼ 3 倍の速度を誇ります。
ModernBERT のコンテキスト長は 8,192 トークンで、既存のエンコーダーの多くよりも 16 倍以上大きくなっています。これは例えば RAG パイプラインにおいて極めて重要です。なぜなら、小さなコンテキストではセマンティック理解のためにチャンクが小さすぎる場合があるからです。ModernBERT は ColBERT と組み合わせて最良の長文コンテキスト検索器としても機能し、他の長文コンテキストモデルよりも 9 ポイント高いスコアを記録しています。さらに印象的なのは、この非常に短期間で訓練されたモデルが、単に他のバックボーンと比較するように調整されただけで、長文コンテキストタスクにおいて広く使用されている検索モデルさえも上回っていることです。
コードの検索においては、ModernBERT は唯一無二です。これと比較できるものはほとんどありません。なぜなら、これまでこのような大量のコードデータで訓練されたエンコーダーモデルは存在しなかったからです。例えば、コードと自然言語を混合したハイブリッドデータセットである StackOverflow-QA データセット(SQA)では、ModernBERT の専門的なコード理解能力と長文コンテキスト対応機能が組み合わさり、このタスクで 80 を超えるスコアを記録できる唯一のバックボーンとなっています。
これは、この能力を基盤とした全く新しいアプリケーションが構築される可能性を示しています。例えば、ModernBERT の埋め込みベクトルを用いて企業全体のコードベースをインデックス化し、すべてのリポジトリにわたって関連するコードの高速な長文脈検索を提供する AI 接続 IDE を想像してみてください。あるいは、数十の別々のプロジェクトを統合したアプリケーション機能の動作方法を説明するコードチャットサービスも考えられます。
主流モデルと比較して、ModernBERT は検索、自然言語理解、コード検索というほぼすべての主要タスクカテゴリにおいて優れたパフォーマンスを発揮します。自然言語理解の特定の領域では DeBERTaV3 にわずかに劣りますが、その処理速度は桁違いに高速です。なお、ModernBERT も他のベースモデルと同様、標準状態ではマスクされた単語予測のみが可能です。その他のタスクを実行するためには、これらのボイラープレートで行われているように、ベースモデルをファインチューニングする必要があります。
専門化されたモデルと比較すると、ModernBERT はほとんどのタスクにおいて同等かそれ以上の性能を示します。さらに、ModernBERT はほとんどのタスクで他のモデルよりも高速であり、最大 8,192 トークンの入力を処理可能です。これは主流モデルの約 16 倍に相当する長さです。
効率性
NVIDIA RTX 4090 における ModernBERT とその他のデコーダーモデルのメモリ(最大バッチサイズ、BS)および推論(秒間数千トークン)の効率性結果は以下の通りです:

まず気づくかもしれないのは、最新の入手困難で過熱しているハードウェアではなく、手頃な価格の消費者向け GPU で効率性を分析している点です。何よりも、ModernBERT は hype(過剰な期待)ではなく実用性に焦点を当てています。
この焦点の一環として、ModernBERT がベンチマークだけでなく、実際のアプリケーションでも十分に機能するように確保しました。このようなモデルは通常、最も得意とする特定のサイズ、つまり最大コンテキスト長でのみテストされます。これが表の「固定」列で示されている内容です。しかし、現実世界では入力サイズは多様であるため、私たちが特に最適化に取り組んだのはそのパフォーマンス、すなわち「可変」列の結果です。ご覧の通り、可変長の入力を扱う場合、ModernBERT は他のすべてのモデルよりもはるかに高速です。
最も価値があり重要な将来のアプリケーションの基盤になると信じている長いコンテキスト入力においては、ModernBERT は次点のモデルよりも 2〜3 倍高速です。そして、「実用性」の観点から再び申し上げます:ModernBERT は追加の重い「xformers」依存性を必要とせず、代わりに現在では一般的になった Flash Attention(フラッシュアテンション)のみを依存関係として要求します。
さらに、ModernBERT の効率性のおかげで、ほぼ他のどのモデルよりも大きなバッチサイズを使用でき、より小さく安価な GPU でも効果的に利用可能です。特にベースサイズの効率は、ブラウザやスマートフォン上で直接動作する新たなアプリケーションの実現を可能にするかもしれません。
なぜ ModernBERT は「モダン」なのか?
さて、エンコーダーモデルにより多くの愛を注ぐべき理由について、私たちは主張してきました。信頼できる、過小評価された労働馬として、彼らは 2018 年の BERT 以来、驚くほど少ない更新しか受けていません。
さらに驚くべきことに、RoBERTa 以降、トレードオフなしに全体的な改善をもたらすエンコーダーは存在しません(これは「パレート最適化」というおしゃれな言葉で知られています)。DeBERTaV3 は GLUE や分類性能において優れていましたが、効率性と検索能力の両方を犠牲にしました。他のモデル、例えば AlBERT や、より新しい GTE-en-MLM などは、元の BERT や RoBERTa のいくつかの点では改善しましたが、別の点では後退しています。
しかし、このデュオが最初にリリースされて以来、より良い言語モデルを構築する方法について膨大な量の知識を得てきました。LLM を一度でも使用したことがある方ならご存知でしょう:エンコーダーの世界では稀ですが、デコーダーの世界ではパレート最適化は常態化しており、モデルは常にあらゆる点で向上し続けています。そして今や私たちが皆学んだように、モデルの改善は部分的には魔法のようなものですが、大部分はエンジニアリングによるものです。
(おそらく適切な名付けがされた)ModernBERT プロジェクトの目標は、非常にシンプルでした:この現代的なエンジニアリングをエンコーダーモデルに持ち込むことです。私たちはそれを 3 つのコアな方法で実現しました。
現代化されたトランスフォーマーアーキテクチャ
効率性への特別な配慮
現代的なデータスケールとソース
新しいトランスフォーマー、旧いトランスフォーマーと同じ
トランスフォーマーアーキテクチャは支配的となり、現在では大多数のモデルで使用されています。しかし、トランスフォーマーには一つではなく多数存在することを忘れないでください。それらが共有する主な点は、アテンションこそがすべて必要であるという深い信念であり、その結果、アテンションメカニズムを中心に様々な改良を施しています。
ModernBERT は、Mamba によって命名された「Transformer++」から多大なインスピレーションを得ており、これは Llama2 シリーズのモデルで初めて採用されました。具体的には、従来の BERT 風の構成要素を、その改良版に置き換えます。すなわち、以下の通りです。
古い位置エンコーディングを「回転位置埋め込み(Rotary Positional Embeddings: RoPE)」に置き換え、単語間の相対的な位置関係を理解する能力を大幅に向上させ、より長いシーケンス長へのスケーリングを可能にします。
従来の MLP 層を GeGLU 層に切り替え、オリジナルの BERT で使用されていた GeLU 活性化関数を改善します。
不要なバイアス項を削除してアーキテクチャを簡素化し、パラメータ予算をより効果的に活用できるようにします。
埋め込み層の後に追加の正規化層を追加し、トレーニングの安定性を高めます。
ホンダ・シビックのレーストラック向けアップグレードについて
これはすでに解説済みです:エンコーダーはフェラーリではなく、ModernBERT も例外ではありません。しかし、それが高速ではないという意味ではありません。ハイウェイを走行する際、通常は車を乗り換えてレーシングカーにするのではなく、信頼性の高い日常車でも速度制限を快適に達成できることを望むものです。
実際、上記で挙げたすべてのアプリケーションケースにおいて、速度は不可欠です。エンコーダーは、膨大なデータを処理する必要があり、わずかな速度の向上でもすぐに大きな効果をもたらす場合や、RAG(検索拡張生成)のようにレイテンシが極めて重要な場合に非常に人気があります。多くの状況では、エンコーダーは CPU で実行されており、合理的な時間内に結果を得るためには、ここでさらに効率性が重要になります。
研究におけるほとんどの事柄と同様に、私たちは巨人の肩の上に立って構築しており、Flash Attention 2 の速度向上を積極的に活用しています。私たちの効率化の改善は、3 つの主要なコンポーネントに依存しています:処理効率を高めるための「交互アテンション(Alternating Attention)」、計算上の無駄を減らすための「アンパディングとシーケンスパッキング(Unpadding and Sequence Packing)」、そしてハードウェア利用率を最大化するための「ハードウェア対応モデル設計(Hardware-Aware Model Design)」です。
グローバルおよびローカルアテンション
ModernBERT の最も影響力のある機能の一つは、フルグローバルアテンションではなく、交互アテンションです。技術的な用語で言えば、これは私たちのアテンションメカニズムが 3 レイヤーごとに全入力にアテンションを向ける(グローバルアテンション)一方で、他のすべてのレイヤーではスライディングウィンドウを使用し、各トークンが自分自身から最も近い 128 トークンのみにアテンションを向ける(ローカルアテンション)ことを意味します。
アテンションの計算複雑性は追加されるトークンごとに爆発的に増加するため、これにより ModernBERT は他のどのモデルよりもはるかに長い入力シーケンスを高速に処理できます。
実際の実装では、以下のようになります:

概念的には、これが機能する理由は非常にシンプルです。本を読んでいる自分を想像してみてください。あなたが読む文ごとに、その文のほとんどを理解するために、プロット全体を完全に把握する必要がありますか?
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み