ModernBERTとは?BERT後継エンコーダの特徴・base/large・日本語版と使い方
ModernBERTは、2024年12月にAnswer.AIとLightONが公開したエンコーダ型(BERT系)の自然言語処理モデルです。2018年のBERTを土台に、RoPEやFlashAttention、交互ローカル/グローバルアテンションといった大規模言語モデル側で培われた技術を取り込み、扱える文脈長を512から8192トークンへ拡張しながら推論・学習を高速化しました。この記事では、ModernBERTがBERTから何を変えたのか、base(149M)とlarge(395M)の違い、日本語で使えるModernBERT-Ja、そしてTransformersでの具体的な使い方までを公式情報にもとづいて整理します。
目次
まとめ:ModernBERTの要点
- 公開時期と開発元:2024年12月19日にAnswer.AI・LightONが中心となり公開。ライセンスはApache 2.0で商用利用も可能。
- 正体:文章を「理解」してベクトル化するエンコーダ型モデル。文章を「生成」するGPTなどのデコーダ型とは用途が異なり、検索・分類・固有表現抽出などに向く。
- BERTからの主な進化:文脈長512→8192トークン、RoPE、交互ローカル/グローバルアテンション、FlashAttention、unpadding+sequence packing、学習データ2兆トークン(コード含む)。
- 2サイズ展開:
ModernBERT-base(149M・22層)とModernBERT-large(395M・28層)。※30M〜310Mは後述の日本語版のサイズで、本家とは別物。 - 日本語で使うなら:SB Intuitionsの
ModernBERT-Ja(30M/70M/130M/310M・MITライセンス)か、NIIのllm-jp-modernbert。本家は英語+コード中心なので日本語タスクは日本語版を選ぶ。
以下で、BERTからの変更点・モデルの選び方・日本語版・使い方の順に掘り下げます。
ModernBERTとは:エンコーダ型モデルの立ち位置と公開時期
ModernBERTは、Answer.AIとLightONを中心に、Hugging Faceのメンバーらも加わって開発され、2024年12月19日に公開されました。技術詳細は論文「Smarter, Better, Faster, Longer」(arXiv:2412.13663)にまとまっています。名前のとおりBERTの系譜にあるエンコーダ専用(encoder-only)モデルで、入力文を双方向に読み取り、単語や文の意味を表すベクトルを出力します。
ここを押さえると用途を誤りません。ChatGPTのようなデコーダ型は次の単語を予測して文章を生成しますが、ModernBERTは生成をしません。代わりに「この文はポジティブか」「この2文は似ているか」「この単語は組織名か」といった判定・検索・分類に強く、しかも生成モデルより軽量で速いのが持ち味です。実際、検索エンジンのランキングや大量文書の分類のように、精度と処理コストの両立が求められる場面で使われます。
BERTから何が変わったか:8192トークンと高速化の中身
GSCで「bertアップデート」というクエリからの流入が多いことからも、読者の関心はBERTと比べて何が新しいのかに集まっています。主要な変更点を表で押さえ、順に補足します。
| 項目 | BERT(2018) | ModernBERT(2024) |
|---|---|---|
| 最大文脈長 | 512トークン | 8192トークン |
| 位置表現 | 絶対位置埋め込み | RoPE(回転位置埋め込み) |
| 注意機構 | 全層フルアテンション | 交互ローカル/グローバル+FlashAttention |
| 学習タスク | MLM+NSP | MLMのみ(マスク率30%) |
| 学習データ | 約33億語(英語) | 2兆トークン(英語+コード) |
| 語彙数 | 約3万 | 50,368 |
文脈長512→8192トークンへの拡張
BERTは一度に512トークンまでしか読めず、長い文書は分割が必要でした。ModernBERTは8192トークンに対応し、長い技術文書やコードファイルを分割せずに扱えます。長文を丸ごと入力できるため、検索やRAGの前処理でチャンク分割の粒度を粗くでき、文脈の途切れによる精度低下を抑えられます。
RoPEと交互ローカル/グローバルアテンション
位置情報は、学習時より長い系列にも外挿しやすいRoPE(回転位置埋め込み)に置き換えられました。加えて全層でフルアテンションを使うのをやめ、3層に1回だけ文章全体を見るグローバルアテンションを挟み、残りの層は128トークンのローカル窓に限定します。長文でも計算量を抑えつつ、必要な箇所では全体の文脈を捉える設計です。
FlashAttention・unpaddingによる高速化
「modernbert unpadding」で検索されるとおり、速度面の鍵はunpaddingです。バッチ処理では長さの違う文をパディング(詰め物)で揃えますが、この詰め物の計算は無駄になります。ModernBERTは詰め物を取り除いて実データだけを連結し、greedyなsequence packingで99%超の充填率にそろえてから、FlashAttentionで一括計算します。これにより長さがまちまちなバッチでも計算資源を捨てずに済み、同等の8kコンテキストを扱う既存モデルより2〜3倍高速とされています。
学習タスクと学習データの見直し
BERTにあった次文予測(NSP)は効果が薄いとされ廃止され、事前学習はマスク言語モデル(MLM)に一本化されました。マスク率もBERTの15%から30%へ引き上げ、一度の学習で得られる信号を増やしています。学習データは英語Web・論文に加えてソースコードを含む2兆トークンで、大量のコードを学習に用いた初のエンコーダとされ、コード検索の精度向上につながっています。
ModernBERT-baseとModernBERT-largeの違いと選び方
本家ModernBERTはbaseとlargeの2サイズです。旧来の記事で見かける「30M/70M/130M/310M」は後述の日本語版のサイズであり、本家のバリエーションではない点に注意してください。
| モデル | パラメータ | 層数 | 隠れ次元 | 用途の目安 |
|---|---|---|---|---|
| ModernBERT-base | 149M | 22 | 768 | 推論速度・省メモリ重視 |
| ModernBERT-large | 395M | 28 | 1024 | 精度最優先 |
baseとlargeの選び分け基準
まずbaseで試すのが実務的です。baseでも8192トークン対応やFlashAttentionの高速化は共通で、分類・検索の多くはbaseで十分な精度が出ます。largeは分類・検索ベンチマークでbaseを上回りますが、パラメータが2.6倍でメモリ・推論時間が増えます。レイテンシやGPUメモリに制約があるならbase、オフラインの高精度バッチ処理ならlarge、という切り分けが判断の起点になります。いずれもHugging Face(ハギングフェイス)から入手でき、モデルIDはそれぞれanswerdotai/ModernBERT-base、answerdotai/ModernBERT-largeです。
日本語で使えるModernBERT:ModernBERT-Jaとllm-jp-modernbert
本家ModernBERTは英語とコード中心で学習しているため、日本語タスクには日本語で事前学習された派生モデルを使います。現在、系統の異なる2つの日本語ModernBERTが公開されています。
ModernBERT-Ja(SB Intuitions)
SB Intuitionsが公開した日本語ModernBERTで、30M・70M・130M・310Mの4サイズがそろいます(2025年2月に130Mを先行公開し、同月下旬に30M/70M/310Mを追加)。語彙数は102,400、文脈長は日本語モデルとして最長級の8192トークン。130Mは日英あわせて約4.39兆トークン、310Mは約4.09兆トークンで学習しています。ライセンスはMITで商用利用可能です。JGLUEなどの評価では、130M(base級)が東北大BERT-largeを上回り、310Mは自身より大きなモデルと比べても最高水準の性能を示したと報告されています。モデルIDはsbintuitions/modernbert-ja-130mなどです。
llm-jp-modernbert(LLM-jp/NII)
もう一つが、国立情報学研究所を中心とするLLM-jpが2025年4月24日に公開したllm-jp-modernbertです(arXiv:2504.15544)。llm-jp-corpus-v4の日本語サブセット約0.69兆トークンで学習し、tokenizerはllm-jp-tokenizer v3、文脈長は8192トークンです。JGLUEの一部サブタスクでは既存モデルを上回らなかった一方、穴埋めテストでは新しい知識や常識をよく捉えると報告されており、コーパスの新しさを重視する用途で選択肢になります。
日本語版を選ぶときの注意
用途がJGLUE的な分類・意味検索で精度を重視するならModernBERT-Jaの130M/310M、最新知識の反映を重視するならllm-jp-modernbertが目安です。両者は学習コーパスもtokenizerも異なるため、実際の下流タスクで両方を試して比較するのが確実です。日本語入力のトークン化やmaskトークンの扱いはモデルごとに違うので、後述のようにtokenizerから取得して固定値を書かないようにします。
ModernBERTの使い方:Transformersでの導入とコード例
ModernBERTはHugging Face Transformersから利用します。ModernBERTのアーキテクチャはTransformers 4.48.0以降に取り込まれているため、まず最新版へ更新します。
pip install -U transformers torch
穴埋め(Fill-Mask)で動作確認する
最初はマスクした単語を予測させて、モデルが読み込めるか確認します。maskトークンはモデルごとに異なるため、tokenizerから取得して埋め込みます。
from transformers import AutoTokenizer, pipeline
model_id = "answerdotai/ModernBERT-base"
tok = AutoTokenizer.from_pretrained(model_id)
fill = pipeline("fill-mask", model=model_id)
text = f"The capital of France is {tok.mask_token}."
for r in fill(text)[:3]:
print(r["token_str"], round(r["score"], 3))
日本語版に差し替える場合はmodel_idをsbintuitions/modernbert-ja-130mに変えるだけです。maskトークンを直書きせずtokenizerから取っているので、モデルを変えてもコードはそのまま動きます。
文をベクトル化して検索・分類に使う
エンコーダの本来の使い道は、文をベクトル(埋め込み)に変換して検索や分類に使うことです。分類タスクに微調整するときは、分類ヘッド付きのクラスで読み込み、下流データで学習します。
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = "answerdotai/ModernBERT-base"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(
model_id, num_labels=2
)
# このあと Trainer で下流タスク(例: 二値分類)に微調整する
微調整の一般的な流れやデータセット設計はファインチューニングの概要と目的を、GPU資源を抑えて微調整したい場合はPEFTとLoRAの違いもあわせて参照してください。得られた埋め込みを類似度検索に使う場合の設計はベクトル検索とセマンティック検索の違いで整理しています。
ModernBERTが得意な場面・不向きな場面
ModernBERTは万能ではありません。採否を分ける境界をはっきりさせておきます。
得意な場面:意味検索・RAGの埋め込み生成、テキスト分類、固有表現抽出(NER)、コード検索。特にコードを学習に含むため、コードとクエリを同じ空間でベクトル化する類似コード検索と相性が良く、8192トークン対応で長いファイルも分割せず扱えます。
不向きな場面:文章生成・要約・対話。ModernBERTはエンコーダ専用で、テキストを出力する設計になっていません。「ModernBERTで文章を書かせたい」という用途は根本的に噛み合わないため、その場合はGPTやLlamaなどのデコーダ型を選びます。また、日本語主体のタスクに英語中心の本家をそのまま使うと精度が落ちるため、日本語版を選ぶべきです。
よくある質問(FAQ)
ModernBERTはいつ公開されましたか?
2024年12月19日に、Answer.AIとLightONを中心に公開されました。技術論文はarXiv:2412.13663として同時期に公開されています。
ModernBERT-baseとlargeはどちらを使うべきですか?
まずbase(149M)で試すのが実務的です。メモリや推論速度に制約があればbase、精度を最優先し資源に余裕があればlarge(395M)を選びます。8192トークン対応や高速化の仕組みは両者共通です。
ModernBERTは日本語で使えますか?
本家は英語+コード中心のため日本語タスクには不向きです。日本語で使う場合はSB IntuitionsのModernBERT-Ja(30M〜310M・MIT)か、LLM-jpのllm-jp-modernbertを選びます。
ModernBERTは商用利用できますか?
本家ModernBERTはApache 2.0ライセンスで商用利用が可能です。日本語版のModernBERT-JaはMITライセンスで、こちらも商用利用できます。利用前に各モデルカードのライセンス表記を確認してください。
ModernBERTでChatGPTのように文章を生成できますか?
できません。ModernBERTは文章を理解・ベクトル化するエンコーダ型で、文章生成には対応しません。生成が目的ならGPTやLlamaなどのデコーダ型モデルを使います。