モデル概要
モデル特徴
モデル能力
使用事例
🚀 マルチリンガルernie - m - large - mnli - xnli
このマルチリンガルモデルは、100 言語で自然言語推論(NLI)を実行でき、マルチリンガルのゼロショット分類にも適しています。
🚀 クイックスタート
このモデルは、XNLI開発データセットとMNLIトレーニングデータセットでトレーニングされ、XNLIテストセットで評価されました。以下に使用方法やトレーニングの詳細を示します。
✨ 主な機能
- 100言語での自然言語推論(NLI)が可能。
- マルチリンガルのゼロショット分類に適している。
- RoBERTaモデルよりも同等サイズで性能が優れている。
📦 インストール
ernie - mアーキテクチャは、transformers==4.27以上でのみサポートされます。4.27リリース前にモデルを実行するには、以下のコマンドでtransformersをソースからインストールする必要があります。
pip install git+https://github.com/huggingface/transformers
また、sentencepieceトークナイザーもインストールします。
pip install sentencepiece
4.27リリース後は、以下のコマンドでインストールできます。
pip install transformers[sentencepiece]>=4.27
💻 使用例
基本的な使用法
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/ernie-m-large-mnli-xnli")
sequence_to_classify = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
candidate_labels = ["politics", "economy", "entertainment", "environment"]
output = classifier(sequence_to_classify, candidate_labels, multi_label=False)
print(output)
高度な使用法
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
model_name = "MoritzLaurer/ernie-m-large-mnli-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name).to(device)
premise = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
hypothesis = "Emmanuel Macron is the President of France"
input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device)) # device = "cuda:0" or "cpu"
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["entailment", "neutral", "contradiction"]
prediction = {name: round(float(pred) * 100, 1) for pred, name in zip(prediction, label_names)}
print(prediction)
📚 ドキュメント
モデルの説明
このマルチリンガルモデルは、100言語で自然言語推論(NLI)を実行でき、マルチリンガルのゼロショット分類にも適しています。基盤となるモデルは、MetaのRoBERTa(CC100マルチリンガルデータセットで事前学習)をベースに、百度によって事前学習されました。その後、15言語の仮説 - 前提ペアを含むXNLIデータセットと英語のMNLIデータセットでファインチューニングされました。このモデルは、百度によってthis paperで紹介されました。同等サイズのRoBERTaモデルを上回る性能を発揮します。
もし、より高速(ただし性能はやや低い)なモデルを探している場合は、[multilingual - MiniLMv2 - L6 - mnli - xnli](https://huggingface.co/MoritzLaurer/multilingual - MiniLMv2 - L6 - mnli - xnli)を試してみてください。性能と速度のバランスが良いベースサイズのモデルを探している場合は、[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)を試してみてください。
トレーニングデータ
このモデルは、XNLI開発データセットとMNLIトレーニングデータセットでトレーニングされました。XNLI開発セットは、英語から14の他の言語に専門家によって翻訳された2490のテキストで構成されています(合計37350のテキスト)(this paperを参照)。XNLIには、15言語のMNLIデータセットの15の機械翻訳バージョンのトレーニングセットが含まれていますが、これらの機械翻訳の品質問題のため、このモデルはXNLI開発セットの専門家による翻訳と元の英語のMNLIトレーニングセット(392702のテキスト)のみでトレーニングされました。機械翻訳されたテキストを使用しないことで、モデルが15の言語に過学習するのを避け、ernie - mが事前学習された他の85の言語の大規模な忘却を避け、トレーニングコストを大幅に削減できます。
トレーニング手順
ernie - m - large - mnli - xnliは、以下のハイパーパラメータを使用してHugging Faceトレーナーでトレーニングされました。
training_args = TrainingArguments(
num_train_epochs=3, # トレーニングエポックの総数
learning_rate=3e-05,
per_device_train_batch_size=16, # トレーニング中のデバイスごとのバッチサイズ
gradient_accumulation_steps=2,
per_device_eval_batch_size=16, # 評価用のバッチサイズ
warmup_ratio=0.1, # 学習率スケジューラのウォームアップステップ数
weight_decay=0.01, # 重み減衰の強度
fp16=True,
)
評価結果
このモデルは、15の言語のXNLIテストセットで評価されました(言語ごとに5010のテキスト、合計75150)。マルチリンガルNLIモデルは、特定の言語のNLIトレーニングデータを受け取らずにNLIテキストを分類することができます(クロスリンガル転送)。これは、モデルがmDeBERTaがトレーニングされた他の85の言語でもNLIを行うことができることを意味しますが、XNLIで利用可能な言語よりも性能はおそらく低くなります。
また、モデルハブ上の他のマルチリンガルモデルが英語以外の言語で約90%の性能を主張している場合、最新の論文のどれもXNLIで80%を数ポイント上回るマルチリンガル平均性能を示していないため、著者はおそらくテスト中に誤りを犯しています(hereまたはhereを参照)。
データセット | 平均XNLI | MNLI_m | MNLI_mm | アラビア語 | ブルガリア語 | ドイツ語 | ギリシャ語 | 英語 | スペイン語 | フランス語 | ヒンディー語 | ロシア語 | スワヒリ語 | タイ語 | トルコ語 | ウルドゥー語 | ベトナム語 | 中国語 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
正解率 | 0.822 | 0.881 | 0.878 | 0.818 | 0.853 | 0.84 | 0.837 | 0.882 | 0.855 | 0.849 | 0.799 | 0.83 | 0.751 | 0.809 | 0.818 | 0.76 | 0.826 | 0.799 |
推論速度(A100、バッチサイズ120) | 1415.0 | 783.0 | 774.0 | 1487.0 | 1396.0 | 1430.0 | 1206.0 | 1623.0 | 1482.0 | 1291.0 | 1302.0 | 1366.0 | 1484.0 | 1500.0 | 1609.0 | 1344.0 | 1403.0 | 1302.0 |
🔧 技術詳細
ernie - mアーキテクチャは、transformers==4.27以上でのみサポートされます(2023年3月3日現在、まだリリースされておらず、推論ウィジェットでエラーが発生します)。4.27のリリース前にモデルを実行するには、ソースからtransformersをインストールする必要があります。
📄 ライセンス
このモデルは、Apache - 2.0ライセンスの下で提供されています。
🔖 引用
このモデルを使用する場合は、以下を引用してください。 Laurer, Moritz, Wouter van Atteveldt, Andreu Salleras Casas, and Kasper Welbers. 2022. ‘Less Annotating, More Classifying – Addressing the Data Scarcity Issue of Supervised Machine Learning with Deep Transfer Learning and BERT - NLI’. Preprint, June. Open Science Framework. https://osf.io/74b8k.
💡 コメント
潜在的なバイアス
潜在的なバイアスについては、元のernie - mの論文とさまざまなNLIデータセットに関する文献を参照してください。
コメントや質問
質問や協力のアイデアがある場合は、m{dot}laurer{at}vu{dot}nlまたは[LinkedIn](https://www.linkedin.com/in/moritz - laurer/)で連絡してください。
デバッグと問題解決
ernie - mアーキテクチャは、transformers==4.27以上でのみサポートされます(2023年3月3日現在、まだリリースされておらず、推論ウィジェットでエラーが発生します)。4.27のリリース前にモデルを実行するには、ソースからtransformersをインストールする必要があります。
pip install git+https://github.com/huggingface/transformers
また、sentencepieceトークナイザーもインストールする必要があります。
pip install sentencepiece
4.27リリース後は、以下のコマンドでインストールできます。
pip install transformers[sentencepiece]>=4.27



