🚀 RetrievaBERTモデル
RetrievaBERTは、Megatron - LMを使用して事前学習されたTransformerエンコーダです。このモデルは日本語での使用を想定して設計されています。
🆕 新機能
- 2024年11月 (
v1.0.1
):モデルパラメータのバグ修正。
up_proj
のバイアスがゲートのバイアスで初期化されていた問題が修正されました。
📚 モデルの詳細
モデルの説明
RetrievaBERTは、Megatron - LMを使用して事前学習されたTransformerエンコーダです。このモデルは日本語での使用を想定して設計されています。
従来のBERTモデルと比較して、このモデルにはいくつかの高度な機能があります。
- PreNorm:学習中の安定性が向上します。
- SwiGLU:より良い性能を得るための強化された活性化関数です。
- Grouped - Query Attention (Multi - Query Attention):効率的なアテンションメカニズムです。
- 最大シーケンス長:2048トークンで、より長いコンテキストを扱えます。
- パラメータ数:13億個のパラメータです。
- 事前学習の目的:Masked Language Modeling (MLM)のみで、Next Sentence Prediction (NSP)は行われません。
- トークンタイプID:このモデルでは使用されません。
モデルの情報源
- 開発元:Retrieva, Inc.
- モデルタイプ:MegatronBERTアーキテクチャに基づいています。
- 言語 (NLP):主に日本語(英語のオプションサポートあり)
- ライセンス:Apache 2.0
💻 使用方法
このモデルはMasked Language Model (MLM)として使用できますが、主に下流タスクでのファインチューニングを想定しています。使用ケースに応じて、以下の該当するセクションを参照してください。
直接使用
このモデルはMasked Language Modelingを使用して事前学習されています。使用されるマスクトークンは<MASK|LLM - jp>
です。RetrievaBERTはカスタムモデル実装を使用しているため、trust_remote_code
をTrue
に設定する必要があります。
直接使用するためのコード例:
from transformers import AutoModelForMaskedLM, AutoTokenizer, pipeline
model_id = "retrieva-jp/bert-1.3b"
model = AutoModelForMaskedLM.from_pretrained(model_id, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)
pipe = pipeline("fill-mask", model=model, tokenizer=tokenizer)
text = "こんにちは!私の名前は<MASK|LLM-jp>です!"
print(pipe(text))
下流タスクでの使用
RetrievaBERTはHugging FaceのAutoModelsと互換性があります。特定のタスクでRetrievaBERTをファインチューニングするには、対応するAutoModelクラスを使用してください。詳細な設定については、config.json
ファイルを参照してください。
📈 学習の詳細
学習データ
RetrievaBERTモデルは、5つのデータセットを統合して事前学習されました。
このモデルは、上記のデータセットを使用して1800億トークンで学習されました。
学習手順
このモデルは、4から32台のH100 GPUでバッチサイズ1,024で学習されました。Sequence Length Warmupに似たカリキュラム学習を採用し、以下のシーケンス長とステップ数で学習されました。
- シーケンス長128:31,000ステップ
- シーケンス長256:219,000ステップ
- シーケンス長512:192,000ステップ
- シーケンス長2048:12,000ステップ
学習ハイパーパラメータ
このモデルは以下のハイパーパラメータで学習されました。
- 学習率:1.5e - 4
- 学習率の減衰スタイル:線形
- 学習率のウォームアップ割合:0.01
- 最小学習率:1e - 6
- 浮動小数点表現:BF16
🧪 評価
以下のモデルをファインチューニングし、JGLUE開発セットで評価しました。各モデルとタスクに対して、JGLUE論文に従って学習率と学習エポック数を調整しました。
モデル |
MARC - ja/acc |
JSTS/pearson |
JSTS/spearman |
JNLI/acc |
JSQuAD/EM |
JSQuAD/F1 |
JComQA/acc |
tohoku - nlp/bert - base - japanese - v3 |
0.957 |
0.914 |
0.876 |
0.906 |
0.878 |
0.946 |
0.849 |
tohoku - nlp/bert - large - japanese - v2 |
0.959 |
0.916 |
0.877 |
0.901 |
0.884 |
0.951 |
0.867 |
ku - nlp/deberta - v3 - base - japanese |
0.958 |
0.925 |
0.890 |
0.902 |
0.925 |
0.910 |
0.882 |
retrieva - jp/bert - 1.3b |
0.959 |
0.917 |
0.881 |
0.898 |
0.875 |
0.874 |
0.827 |
🔧 技術仕様
モデルアーキテクチャ
RetrievaBERTモデルは、以下のハイパーパラメータを持つBERTに基づいています。
- レイヤー数:48
- 隠れ層のサイズ:1536
- FFN隠れ層のサイズ:4096
- アテンションヘッドの数:24
- 位置埋め込みの最大長:2048
前述の通り、元のBERTとの主な違いは以下の通りです。
- PreNorm:学習中の安定性が向上します。
- SwiGLU:より良い性能を得るための強化された活性化関数です。
- Grouped - Query Attention (Multi - Query Attention):効率的なアテンションメカニズムです。
コンピュートインフラ
TSUBAME 4
このモデルは、TSUBAMEディープラーニングミニキャンプで得られた結果に基づいています。
ソフトウェア
このモデルはMegatron - LMを使用して学習されました。
ℹ️ 詳細情報
https://note.com/retrieva/n/n715bea2c2cd1 (日本語)
📝 モデルカード作成者
Satoru Katsumata, Daisuke Kimura, Jiro Nishitoba
📞 モデルカード問い合わせ先
pr@retrieva.jp
📄 ライセンス
Apache 2.0