概要
こんにちは、SB Intuitions株式会社インターンの塚越です。
日本語・英語合わせて約4.4T tokensを学習した日本語ModernBERTというモデルを構築・公開しました。 本記事では、その開発過程や評価結果についてお話しします。 我々が開発した日本語ModernBERTは、30m, 70m, 130m, 310mと4つの異なるパラメータサイズをもち、それぞれのモデルが同パラメータ規模のモデルと比較して、本記事公開時点では最も高い性能を達成しています。
開発した一連のモデルはHuggingFaceにてMITライセンスのもと公開しておりますので、商用・研究用問わず自由にお使いいただけます。
- https://huggingface.co/sbintuitions/modernbert-ja-30m
- https://huggingface.co/sbintuitions/modernbert-ja-70m
- https://huggingface.co/sbintuitions/modernbert-ja-130m
- https://huggingface.co/sbintuitions/modernbert-ja-310m
また、本記事の内容は言語処理学会第31回年次大会 併設ワークショップ JLR2025 日本語言語資源の構築と利用性の向上でも発表しております。そちらの発表資料も併せてご覧ください。
本記事ではまず、BERTとModernBERTという二つの要素技術について述べます。 その後、我々が開発した日本語ModernBERTの構築過程と、その評価についてお話しします。
BERTとModernBERT
BERT (Bidirectional Encoder Representations from Transformers)は、2018年に提案された自然言語を処理するためのモデルです。 近年盛んに利用されている大規模言語モデル(Large Language Model: LLM)と異なり、BERTは文の生成が(基本的には)できません。 その代わり、BERTは入力された文の双方向の文脈を考慮して、入力文の理解をすることが得意なエンコーダ型のモデルになっています。 特にBERTは、マスク穴埋め(Masked Language Modeling)というタスクを通して汎用的な言語知識を学習しており、文の分類や意味の理解といった、自然言語の理解が必要なタスクにおいて高い性能を示してきました。
BERTをはじめとするエンコーダ型言語モデルは、LLM全盛のこの時代においても盛んに利用されています。 例えば、RAG(検索補助付き生成)におけるリランキング・埋め込みモデルに利用する事例や、検索クエリのカテゴライズに利用する事例があります。
しかし、BERTは2018年後半に提案されたモデルであり、その公開から6年以上の時間が経っています。 そのため、LLMをはじめとするNLP技術が進展するにつれて、BERTに存在する問題点も指摘されるようになってきました。 なかでも、以下の点は解決すべき課題としてよく指摘されています:
- 入力可能な最大系列長が短い
- 最大系列長が512であり、近年のLLMにおいて対応されている128kなどの値と比較すると極めて小さい
- ナイーブなAttention機構に依存しており、処理が遅い
- FlashAttentionなど高速なAttentionの実装が簡単に利用できない
- LLM開発に伴うモデルの工夫が取り入れられていない
- LLMで採用されているがBERTでは採用されていない技術たちの例
- 学習トークン量が少ない
- 英語のBERTは約128B tokensで事前学習されています(BERT論文のAppendix A.2を参照)が、近年のLLMは数T tokens以上で訓練されることが普通になってきています
これらの課題を解決するべく、"現代的な" BERTを提案したのが、2024年12月に公開されたModernBERTです。
ModernBERTの特徴は以下の通りです:
- 最大系列長8192で、2T tokensを用いて事前学習
- FlashAttention-2, FlashAttention-3を採用し訓練・推論を高速化、メモリ消費量を低減
- Sliding Window Attention (SWA)とGlobal Attention (通常のAttention) を組み合わせたアーキテクチャを採用
- 文章全体の文脈をGlobal Attentionで考慮し、あるトークン近辺の文脈はSliding Window Attentionで考慮することで長文の計算コストを削減
- 位置埋め込みにRoPEを採用
- 元のBERTは訓練時の系列長(512)より長いテキストは扱えなかったが、ModernBERTでは入力が可能に
- 次文予測 (Next Setnence Predicion)タスクを削除
- 次文予測があっても下流タスクの性能を向上させないため
- RoBERTaと同様の決定
これらの工夫により、ModernBERTは英語タスクにおいて高い性能と効率性を両立しています。
モデルのデザイン以外の特筆すべき点としては、高いマスク率と段階的な訓練があります。 オリジナルのBERTはマスク穴埋めの際のマスクの割合(マスク率)を15%に設定していましたが、ModernBERTではWangら(EACL 2023)の研究を参考に、マスク率を30%と高い値にしています。 また、ModernBERTの訓練工程は以下の3つに分かれています。
- 事前学習 (1.72T tokens)
- 系列長1024で大規模なマスク穴埋めによる訓練を実施し、モデルの基礎を作る
- モデルの訓練全体を指して事前学習と呼ぶこともありますが、本記事ではオリジナルのModernBERTの呼称にならって、この過程を事前学習と呼ぶこととします
- 系列長拡張: Phase 1 (250B tokens)
- 系列長を1024→8192に伸ばして長い系列に対応できるよう学習
- 系列長拡張: Phase 2 (50B tokens)
- 高品質な長系列データをアップサンプリングして仕上げの学習
- データの選び方はProLongと呼ばれるモデルを参考に選定
オリジナルのBERTは英語を中心言語とした取り組みですが、日本語においてもModernBERTを訓練することは学術・産業界に資するため有用であると考え、我々も日本語に特化したModernBERTを開発することとしました。
日本語ModernBERTの開発
日本語ModernBERTの開発にあたって、まず訓練データセットを用意しました。 これには、我々が開発しているLLMであるSarashinaの訓練データセットを用いました。 最新のSarashinaに関する取り組みについては「Sarashina2.2-Instruct:コンパクトかつ性能の高い日本語Instructモデル」をご覧ください。
また、tokenizerについてもSarashinaと同じものを利用しました。 Sarashinaの訓練データ、および、tokenizerは、日本語と英語の二つの言語に対応しています。 日本語の処理をしていても、英語を処理する機会は多意図考えられるため、日本語を中心としたモデルを構築するにあたっても、英語に対応できた方がベターであるとの判断です。
訓練にあたっては、オリジナルのModernBERTと同じ工程を踏みました。 ただし、それぞれの工程にオリジナルのModernBERTから変更している箇所があります。
以下に構築の過程をまとめます:
- 事前学習 (日英3.50T tokens)
- 日英2言語を扱うこともあり、オリジナルのModernBERTの2倍程度の規模を学習
- マスク率は30%でオリジナルと同様
- 系列長拡張: Phase 1 (高品質日英400B tokens)
- 日本語・英語における高品質データに絞って学習
- 系列長拡張: Phase 2 (高品質日本語150B tokens * 3 epoch = 450B tokens)
- 日本語の高品質データのみで仕上げの学習
- マスク率を15% (オリジナルは30%) に設定
- epoch数を3に設定 (オリジナルは1)
- 補足: 計算機の都合上、310Mモデルのみ1 epoch
オリジナルのModernBERTとの主な違いは以下の通りです:
- 日本語と英語のコーパスで事前学習を行っており、総学習トークン数が約4.39T tokensとオリジナルのModernBERTの2倍以上であること
- 系列長拡張: Phase 2におけるマスク率を30%から15%に下げることで、モデルの性能が向上することを確認
- 語彙サイズが102400と大きい
- weight decayを0.1に設定 (オリジナルは1e-5または1e-6と非常に小さい)
- LLMの事前学習において、Weight decayの値は0.1の方が一般的な値であるため変更
「事前学習フェーズ」にかかった時間は、310MモデルがNVIDIA H100を256枚使用して約70時間、130MモデルがNVIDIA A100を128枚使用して約120時間でした。
モデル構築においては、HuggingfaceのAccelerateやDeepSpeed (ZeRO 2)などを用いました。
今回構築したモデルは、LlamaやSarashinaのようなデコーダ型のLLMと比較すると極めて軽量であり、4T tokens程度の事前学習でも高速に完了しました。
以下に「事前学習フェーズ」における開発セットでの損失とマスク穴埋めの正解率の推移をプロットした図を示します。 横軸がステップ数であり、縦軸が開発セット損失・開発セットでの正解率です。 今回構築した30m, 70m, 130m, 310mモデルの4つの推移が記載されています。
図から、事前学習全体で極めて安定して性能が改善している様子が確認できます。 また、モデルサイズを向上させることでも性能が改善していることがわかります。 特に310mモデルについては、学習終盤におけるマスク穴埋めの正解率が73%を超えており、系列中のマスクの割合が30%であることを考えると、かなり高い割合で穴埋めを正解できていると言えるでしょう。
評価
日本語ModernBERTの公開にあたり、既存のモデルも含めて網羅的にエンコーダ型モデルの性能評価を行うことはコミュニティにとって有用であると考え、広範な評価を実施しました。
具体的には、JGLUE中のデータを含む12のデータセットを用いて、さまざまなタスクでモデルの評価を行いました。
評価に用いたデータセットは以下の通りです:
- 知識ベースのタスク: JCommonsenseQA(JComQA)、RCQA
- 日本語の文法受容性分類タスク: JCoLA
- 自然言語推論(NLI)タスク: JNLI、JSICK、JSNLI、京大 RTE(KU RTE)
- 意味的テキスト類似性(STS)タスク: JSTS
- 各種分類タスク: Livedoor ニュースコーパス(Livedoor)、LLM-jp Toxicity(Toxicity)、MARC-ja、WRIME v2(WRIME)
これらのタスクは、いずれも短い系列長での評価タスクであり、最大でも系列長は512以下です。 また、各タスクにおいて系列長やその他の実験設定は全モデルで同じ設定に統一しています。
なお、JCoLAについては、原論文の評価方法にならい、開発セットでの評価指標としてMatthews Correlation Coefficient (MCC)を用い、テストセットでの評価指標としては正解率を用いました。 JCoLAにはテストセットが2種類あるため、最終的なスコアはその平均を用いています。 同様にJSICKにもテストセットが2種類存在するため、JSICKについても正解率の平均をとって最終的な評価スコアとしました。
ハイパーパラメータの探索
評価においては、以下の範囲でハイパーパラメータを探索しました:
- 学習率: {5e-6, 1e-5, 2e-5, 3e-5, 5e-5, 1e-4}
- エポック数:
- 事例数の多いタスク:{1, 2}
- 事例数の少ないタスク:{3, 5, 10}
上述の学習率・エポック数のすべての組み合わせによりモデルのfine-tuningを行い、開発セットにおける性能が最も高いハイパーパラメータの組み合わせにより訓練されたモデルを、最終的な評価に用いました。
モデル評価におけるfine-tuningの方法
HuggingFace 上に公開されている日本語モデルを AutoModel
を使って読み込み、線形層+GELU活性化関数+線形層からなる分類層を追加して分類モデルを構築しました。
特筆すべき点として、HuggingFace Transformersには AutoModelForSequenceClassification
という分類モデル用クラスがありますが、今回の評価ではこちらのクラスは利用しませんでした。
というのも、このクラスはモデルごとに分類層の実装が異なることがあり、厳密な比較が困難になるためです。
例としては、BERTの分類層における活性化関数はTanhですが、DistilBERTではReLUが採用されており、ModernBERTではGeLUが使われています。
これらの実装の違いによる性能への影響を防ぐため、独自の層を追加してfine-tuningを行っています。
分類層に入力するベクトルとしては、文の先頭にある特殊トークンに対応する最終層の出力埋め込み表現を使用しました。
BERTでは [CLS]
、RoBERTa では <s>
がこの特殊トークンに該当します。
我々のモデルは事前学習時に次文予測 (Next Sentence Prediction: NSP)を行っていないため、文の先頭には <cls>
ではなく <s>
を付加しています。
したがって、我々のモデルでの分類には <s>
トークンを使用しました。
評価実験の設定
5分割交差検証(5-fold cross-validation)により評価を行いました。 手続きとしては、まず訓練セット(train set)でモデルを訓練し、開発セット(dev set)で評価します。 そして、5 fold分の開発セットの平均スコアに基づいて最適なハイパーパラメータ(学習率、エポック数)を決定し、その設定でテストセットに対する平均スコアを報告しています。
データの分割は、以下のルールに基づいて行いました。
- 事前に分割が定義されていないデータセット:
- データの10%をテストセットとして取り置き、残りのデータを5分割して訓練・開発セットとして用いました
- JGLUEの一部タスクなど、訓練セットと開発セットしか公開されていない場合:
- 開発セットをテストセットとみなし、訓練セットを5分割して訓練・開発セットとして用いました
- 我々がモデルを評価した段階では、JGLUEのテストセットは公開されていなかったため、本記事における評価結果はJGLUEのテストセットは利用していない値になっています
- 訓練・開発・テストセットの分割が明示されているデータセット
- ランダムシードを変えて5回訓練・開発セットでの評価を行い、開発セット最良のモデルをテストセットで評価しました
結果
実験の結果を以下の表に示します。 スペースの都合上、一部タスクと評価タスク全体(12タスク)の平均のみ掲載します。 表には、開発中の日本語ModernBERT 1.4Bモデルの結果も加えています。
モデル | #Param | 12タスク平均 | JComQA (Acc.) |
JCoLA (Acc.) |
JNLI (Acc.) |
Toxicity (Acc.) |
---|---|---|---|---|---|---|
ModernBERT-Ja-30M | 37M | 85.67 | 80.95 | 78.85 | 88.69 | 89.33 |
ModernBERT-Ja-70M | 70M | 86.77 | 85.65 | 80.26 | 90.33 | 91.01 |
ModernBERT-Ja-130M | 132M | 88.95 | 91.01 | 84.18 | 92.03 | 91.57 |
ModernBERT-Ja-310M | 315M | 89.83 | 93.53 | 84.81 | 92.93 | 91.24 |
ModernBERT-Ja-1.4B | 1.44B | 91.36 | 96.46 | 86.32 | 93.10 | 94.38 |
LINE DistillBERT | 68M | 85.32 | 76.39 | 81.04 | 87.49 | 91.46 |
東北大BERT-base v3 | 111M | 86.74 | 82.82 | 81.50 | 89.68 | 93.15 |
日本語LUKE-base | 133M | 87.15 | 82.95 | 82.39 | 90.36 | 93.48 |
京大DeBERTa-v3 | 160M | 88.31 | 87.44 | 84.35 | 91.91 | 92.58 |
KoichiYasuoka/modernbert-base-japanese-wikipedia | 160M | 82.41 | 62.59 | 76.80 | 84.11 | 90.34 |
llm-jp/llm-jp-modernbert-base | 187M | 86.75 | 84.29 | 78.00 | 90.28 | 92.13 |
東北大BERT-large char v2 | 311M | 87.23 | 85.08 | 81.79 | 90.55 | 93.26 |
東北大BERT-large v2 | 337M | 88.36 | 86.93 | 82.89 | 92.05 | 94.38 |
早稲田大RoBERTa-large (Seq. 512) | 337M | 88.37 | 88.81 | 82.34 | 91.37 | 95.06 |
早稲田大RoBERTa-large (Seq. 128) | 337M | 88.36 | 89.35 | 84.26 | 91.53 | 93.60 |
日本語LUKE-large | 414M | 88.94 | 88.01 | 84.34 | 92.37 | 93.71 |
RetrievaBERT | 1.30B | 86.79 | 80.55 | 80.67 | 89.86 | 92.70 |
hotchpotch/mMiniLMv2-L6-H384 | 107M | 81.53 | 60.34 | 78.61 | 86.24 | 86.40 |
hotchpotch/mMiniLMv2-L12-H384 | 118M | 82.59 | 62.70 | 78.61 | 87.69 | 90.00 |
mBERT | 178M | 83.48 | 66.08 | 77.32 | 88.15 | 89.21 |
XLM-RoBERTa-base | 278M | 84.36 | 69.44 | 78.71 | 88.14 | 91.91 |
XLM-RoBERTa-large | 560M | 86.95 | 80.07 | 80.42 | 92.16 | 93.37 |
評価結果全体の表
モデル | #Param. | #Param. w/o Emb. |
平均 | JComQA (Acc.) |
RCQA (Acc.) |
JCoLA (Acc.) |
JNLI (Acc.) |
JSICK (Acc.) |
JSNLI (Acc.) |
KU RTE (Acc.) |
JSTS (Spearman's ρ) |
Livedoor (Acc.) |
Toxicity (Acc.) |
MARC-ja (Acc.) |
WRIME (Acc.) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ModernBERT-Ja-30M | 37M | 10M | 85.67 | 80.95 | 82.35 | 78.85 | 88.69 | 84.39 | 91.79 | 61.13 | 85.94 | 97.20 | 89.33 | 95.87 | 91.61 |
ModernBERT-Ja-70M | 70M | 31M | 86.77 | 85.65 | 83.51 | 80.26 | 90.33 | 85.01 | 92.73 | 60.08 | 87.59 | 96.34 | 91.01 | 96.13 | 92.59 |
ModernBERT-Ja-130M | 132M | 80M | 88.95 | 91.01 | 85.28 | 84.18 | 92.03 | 86.61 | 94.01 | 65.56 | 89.20 | 97.42 | 91.57 | 96.48 | 93.99 |
ModernBERT-Ja-310M | 315M | 236M | 89.83 | 93.53 | 86.18 | 84.81 | 92.93 | 86.87 | 94.48 | 68.79 | 90.53 | 96.99 | 91.24 | 96.39 | 95.23 |
ModernBERT-Ja-1.4B | 1.44B | 1.28B | 91.36 | 96.46 | 86.38 | 86.32 | 93.10 | 87.62 | 95.31 | 76.21 | 90.69 | 97.42 | 94.38 | 96.43 | 95.95 |
LINE DistillBERT | 68M | 43M | 85.32 | 76.39 | 82.17 | 81.04 | 87.49 | 83.66 | 91.42 | 60.24 | 84.57 | 97.26 | 91.46 | 95.91 | 92.16 |
東北大BERT-base v3 | 111M | 86M | 86.74 | 82.82 | 83.65 | 81.50 | 89.68 | 84.96 | 92.32 | 60.56 | 87.31 | 96.91 | 93.15 | 96.13 | 91.91 |
日本語LUKE-base | 133M | 107M | 87.15 | 82.95 | 83.53 | 82.39 | 90.36 | 85.26 | 92.78 | 60.89 | 86.68 | 97.12 | 93.48 | 96.30 | 94.05 |
京大DeBERTa-v3 | 160M | 86M | 88.31 | 87.44 | 84.90 | 84.35 | 91.91 | 86.22 | 93.41 | 63.31 | 88.51 | 97.10 | 92.58 | 96.32 | 93.64 |
KoichiYasuoka/modernbert-base-japanese-wikipedia | 160M | 110M | 82.41 | 62.59 | 81.19 | 76.80 | 84.11 | 82.01 | 90.51 | 60.48 | 81.74 | 97.10 | 90.34 | 94.85 | 87.25 |
llm-jp/llm-jp-modernbert-base | 187M | 110M | 86.75 | 84.29 | 83.99 | 78.00 | 90.28 | 83.76 | 93.40 | 60.32 | 87.71 | 96.64 | 92.13 | 96.33 | 94.09 |
東北大BERT-large char v2 | 311M | 303M | 87.23 | 85.08 | 84.20 | 81.79 | 90.55 | 85.25 | 92.63 | 61.29 | 87.64 | 96.55 | 93.26 | 96.25 | 92.29 |
東北大BERT-large v2 | 337M | 303M | 88.36 | 86.93 | 84.81 | 82.89 | 92.05 | 85.33 | 93.32 | 64.60 | 89.11 | 97.64 | 94.38 | 96.46 | 92.77 |
早稲田大RoBERTa-large (Seq. 512) | 337M | 303M | 88.37 | 88.81 | 84.50 | 82.34 | 91.37 | 85.49 | 93.97 | 61.53 | 88.95 | 96.99 | 95.06 | 96.38 | 95.09 |
早稲田大RoBERTa-large (Seq. 128) | 337M | 303M | 88.36 | 89.35 | 83.63 | 84.26 | 91.53 | 85.30 | 94.05 | 62.82 | 88.67 | 95.82 | 93.60 | 96.05 | 95.23 |
日本語LUKE-large | 414M | 379M | 88.94 | 88.01 | 84.84 | 84.34 | 92.37 | 86.14 | 94.32 | 64.68 | 89.30 | 97.53 | 93.71 | 96.49 | 95.59 |
RetrievaBERT | 1.30B | 1.15B | 86.79 | 80.55 | 84.35 | 80.67 | 89.86 | 85.24 | 93.46 | 60.48 | 87.30 | 97.04 | 92.70 | 96.18 | 93.61 |
hotchpotch/mMiniLMv2-L6-H384 | 107M | 11M | 81.53 | 60.34 | 82.83 | 78.61 | 86.24 | 77.94 | 87.32 | 60.48 | 80.48 | 95.55 | 86.40 | 94.97 | 87.20 |
hotchpotch/mMiniLMv2-L12-H384 | 118M | 21M | 82.59 | 62.70 | 83.77 | 78.61 | 87.69 | 79.58 | 87.65 | 60.48 | 81.55 | 95.88 | 90.00 | 94.89 | 88.28 |
mBERT | 178M | 86M | 83.48 | 66.08 | 82.76 | 77.32 | 88.15 | 84.20 | 91.25 | 60.56 | 84.18 | 97.01 | 89.21 | 95.05 | 85.99 |
XLM-RoBERTa-base | 278M | 86M | 84.36 | 69.44 | 82.86 | 78.71 | 88.14 | 83.17 | 91.27 | 60.48 | 83.34 | 95.93 | 91.91 | 95.82 | 91.20 |
XLM-RoBERTa-large | 560M | 303M | 86.95 | 80.07 | 84.47 | 80.42 | 92.16 | 84.74 | 93.87 | 60.48 | 88.03 | 97.01 | 93.37 | 96.03 | 92.72 |
実験の結果日本語ModernBERTが全体的に高い性能を達成していることが確認できました。 平均性能について、30MモデルはLINE DistillBERTと同等(85.67 vs 85.32)、70Mモデルは東北大BERT-base v3と同等(86.77 vs 86.74)、130Mモデルは日本語LUKE-largeと同等(88.95 vs 88.94)と、各モデルが、ひとつ上のサイズの既存モデルと同等の性能を達成しました。 さらに、310Mモデルは平均89.13と同等規模のモデルの中で最良の性能を達成し、1.4Bモデルは平均91.36と極めて高い性能を達成しました。
個別のタスクごとに性能を見てみると、日本語ModernBERTはJcomQAやRCQAといった常識推論系のタスクで高い性能を達成していることがわかります。 エンコーダ型モデルにおいても、知識系タスクの性能は、事前学習における学習量が重要であることが示唆されます。
一方で、毒性分類タスク(Toxicity)の性能は全体的に既存モデルと比較して低い性能になっています。 日本語ModernBERTの事前学習データはSarashinaと同様のフィルタリング処理を行っており、低品質なテキストをかなり削減しているため、このフィルタリングが影響を与えている可能性があります。 エンコーダ型モデルは基本的にはベクトルを出力したり分類タスク用にfine-tuningされることが多いため、低品質テキストを学習したとしても、倫理的に問題がある出力をする可能性がデコーダ型モデルより小さいと考えられます。 したがって、エンコーダ型モデルの用途としてコーパスの品質フィルタリングや毒性の推定を考えている場合は、デコーダ型モデルのコーパスと異なり、むしろ低品質なテキストもある程度の割合含めることが有用である可能性があります。
性能の推移
次に、130Mモデル構築時の、評価タスクごとの性能の推移を観察します。 評価には、事前学習、系列長拡張 Phase 1、系列長拡張 Phase 2のそれぞれの工程ごとに、特定の間隔で保存しておいたチェックポイントを、先述の設定と同様の設定で評価しました。 JComQA, JCoLA, JSTSの性能の推移をプロットしたものが以下の図です。
図から、日本語知識を図るJComQAの性能 (青色) はモデルの学習を進めるにつれて順調に上がっており、特に最後の系列長拡張 Phase 2のタイミングで大きく性能が向上しています。 系列長拡張 Phase 2は日本語高品質データを用いて学習を行っているため、日本語知識の獲得には、やはり日本語での訓練が重要である可能性が示唆されます。
日本語の意味をとらえる能力を測るJSTSの性能 (黄色) も学習を進めるごとに順調に向上しています。 一方で、系列長拡張Phase 2における伸び幅が小さいことから、意味をとらえる能力については、必ずしも日本語のみのデータで学習する必要はなく、日英の両方が混ざっていても改善できると考えられます。
日本語の自然さを判定する能力を図るJCoLAの性能 (赤色) については、「事前学習」のフェーズにおいて、むしろ学習するほど下がってしまっています。 系列長拡張 Phase 1においても性能の向上は観察できず、日英両方を学習する設定においては、事前学習による性能向上は観察できていません。 しかし、学習コーパスが日本語のみになる系列長拡張 Phase 2では大きく性能が向上しています。このことから、日本語能力を測る場合における英語コーパスの負の影響が確認できます。 日本語能力を改善するには、やはり日本語データが重要なようです。
学習率の検証
BERTなどエンコーダ型モデルを特定のタスクのためにfine-tuningする際には、適切な学習率を設定してあげる必要があります。 baseサイズのBERTでよく利用される学習率は3e-5程度であることが多いですが、モデルが変われば適切な学習率も変化します。
一般に、サイズの大きなモデル・よく学習されたモデルの方が、fine-tuning時の学習率は小さい方がよいと言われています。 我々が開発した日本語ModernBERTは、日英合わせて4.4T tokensと、既存のエンコーダ型モデルと比較しても巨大なコーパスで訓練を行っています。 そのため、既存の日本語BERTよりも学習率は小さい方がいいかもしれません。
そのような傾向があるかを確かめるために、先述の評価実験において、学習率ごとに開発セットで最良のスコアを記録した回数を計測しました。 そしてモデルごとに、最良の開発セット性能を記録した回数が最多の学習率 (最良の学習率と呼称) を示したものが以下の表です。
モデル | 学習率 |
---|---|
ModernBERT-Ja-30M | 2e-05 |
ModernBERT-Ja-70M | 1e-05 |
ModernBERT-Ja-130M | 1e-05 |
ModernBERT-Ja-310M | 1e-05 |
東北⼤BERT-base v3 | 3e-05 |
東北⼤BERT-large v2 | 1e-05 |
⽇本語LUKE-large | 1e-05 |
表から、日本語ModernBERTはいずれのモデルサイズについても最良の学習率が比較的小さな値になっていることがわかります。 その値は既存largeモデルと同等程度の1e-5になっており、東北大BERT-base v3が3e-5であることを考えると、ひとまわり小さい学習率がよいと言えます。
以上より、日本語ModernBERTは既存のモデルと比較して多少小さい学習率でfine-tuningしてあげることで、より高い性能を発揮しやすいと考えられます。 そのため、我々の日本語ModernBERTを利用していただく際は、小さめの学習率でモデルのfine-tuningを行っていただくことを推奨します。
推論速度の検証
最後に、開発した日本語ModernBERTの推論速度を検証します。 ModernBERTはSliding Window AttentionやFlashAttention-2を備えており、長文を既存モデルより高速に処理することが期待できます。
そこで、JCommonsenseQA (JComQA)、RCQA、Livedoorという文の長さが異なる3つのタスクにおいて、訓練セット全体を推論(モデルに入力)するために必要な時間を計測しました。 評価に用いるタスクはそれぞれ平均系列長が異なります。 それぞれのタスクの平均文字列長を示した表が以下です。
JComQA | RCQA | Livedoor | |
---|---|---|---|
事例数 | 7151 | 40861 | 5304 |
平均文字列長 | 16 | 244 | 1245 |
表から、JCommonsenseQAは平均文字列長が非常に短く、Livedoorはかなり長めであることがわかります。
計測は10回行い、その平均を最終的な計測時間としました。 計測した時間には、トークナイズの時間も含みます。 バッチサイズは128で、推論はNVIDIA A100 80GB GPUを1枚用いて行いました。
計測した時間をもとに、1秒あたりに処理可能な事例数をモデルごとに示したものが以下の表です。
1秒あたりに処理可能な事例数を示すグラフであるため、棒グラフの値が高い方が良いことを示すグラフになっています。 また、モデルはモデルサイズ順に左から並んでいます。
結果から、JComQAなど極めて短い系列における処理効率は既存のモデルと同等程度ですが、RCQAやLivedoorといった比較的長い系列での処理効率は、既存モデルを上回っていることがわかります。 例として、RCQAでは東北大BERT-baseと310Mモデルが同等の処理効率となっています。 全体として、今回構築した日本語ModernBERTは高速かつ高性能なモデルになっていることが確認できました。
おわりに
本記事では、SB Intuitionsが公開した日本語ModernBERTについて、その構築過程や評価実験も含めて紹介しました。 各モデルは商用利用も可能なMITライセンスで公開しております。ぜひ商用システム開発や研究開発、OSSモデルの学習などに利用していただければ幸いです。
また、日本語ModernBERTの開発にあたって加えた種々の工夫や、トークナイザを変更した場合の性能評価についてもテックブログを公開予定です。 楽しみにお待ちいただけますと幸いです。