![見出し画像](https://assets.st-note.com/production/uploads/images/49339403/rectangle_large_type_2_8402fe71d7bb64d43ab8f556cd3d0d20.png?width=1200)
Huggingface Transformers 入門 (26) - マルチリンガルモデル
以下の記事を参考にして書いてます。
前回
1. マルチリンガルモデル
「Huggingface」で利用可能なモデルの多くは、単一言語モデル(英語、中国語、ドイツ語)です。いくつかの多言語モデルが利用可能であり、単一言語モデルとは異なるメカニズムを備えています。
2. XLM
「XLM」には合計10の異なるチェックポイントがあります。そのうちの1つだけが「単一言語モデル」、 残りの9つは「多言語モデル」です。さらに「多言語モデル」は、「言語埋め込みを使用するモデル」の「言語埋め込みを使用しないモデル」の2カテゴリに分けることができます。
◎ 言語埋め込みを使用するモデル
「言語埋め込みを使用するモデル」のチェックポイントは、次の7つです。
・xlm-mlm-ende-1024 (MLM, English-German)
・xlm-mlm-enfr-1024 (MLM, English-French)
・xlm-mlm-enro-1024 (MLM, English-Romanian)
・xlm-mlm-xnli15-1024 (MLM, XNLI languages)
・xlm-mlm-tlm-xnli15-1024 (MLM + Translation, XNLI languages)
・xlm-clm-enfr-1024 (CLM, English-French)
・xlm-clm-ende-1024 (CLM, English-German)
これらチェックポイントでは、推論時に使用する言語を指定する「言語埋め込み」が必要です。「言語埋め込み」は、モデルに渡される入力IDと同じ形状のテンソルです。これらのテンソルの値は、使用される言語によって異なり、トークナイザーの「lang2id」と「id2lang」を使用して識別できます。
「xlm-clm-enfr-1024」 (CLM, English-French)の使用例は、次のとおりです。
import torch
from transformers import XLMTokenizer, XLMWithLMHeadModel
tokenizer = XLMTokenizer.from_pretrained("xlm-clm-enfr-1024")
model = XLMWithLMHeadModel.from_pretrained("xlm-clm-enfr-1024")
このモデル・トークンナイザーが処理する言語・言語IDは、「lang2id」で確認できます。
print(tokenizer.lang2id)
{'en': 0, 'fr': 1}
これらのIDは、モデルに言語パラメータを渡すときに使用する必要があります。
input_ids = torch.tensor([tokenizer.encode("Wikipedia was used to")]) # バッチサイズ1
ここで、以前に定義した言語IDを使用して、「言語の埋め込み」を指定する必要があります。 「input_ids」と同じサイズの適切な言語IDで満たされたテンソルを作成したいと思います。 英語の場合のIDは0です。
language_id = tokenizer.lang2id['en'] # 0
langs = torch.tensor([language_id] * input_ids.shape[1]) # torch.tensor([0, 0, 0, ..., 0])
# (batch_size, sequence_length)にシェイプ変更
langs = langs.view(1, -1) # is now of shape [1, sequence_length] (we have a batch size of 1)
次に、モデルへの入力としてフィードできます。
outputs = model(input_ids, langs=langs)
◎ 言語埋め込みを使用しないモデル
「言語埋め込みを使用しないモデル」のチェックポイントは、次の2つです。
・xlm-mlm-17-1280 (MLM、17言語)
・xlm-mlm-100-1280 (MLM、100言語)
これらチェックポイントでは、推論時に「言語埋め込み」は必要はありません。
3. BERT
「BERT」の多言語タスクに使用できるチェックポイントは2つあります。
・bert-base-multilingual-uncased (MLM+NSP、102言語)
・bert-base-multilingual-cased (MLM+NSP、104言語)
これらチェックポイントでは、推論時に「言語埋め込み」は必要はありません。
4. XLM-RoBERTa
「XLM-RoBERTa」は、100言語で新しく作成された2.5TBのクリーンな「CommonCrawl」データで学習されました。 「テキスト分類」や「質問応答」などの下流タスクで、「mBERT」や「XLM」などの以前にリリースされた多言語モデルよりも大幅に精度が向上しています。
「XLM-RoBERTa」の多言語タスクに使用できるチェックポイントは2つあります。
・xlm-roberta-base (MLM、100言語)
・xlm-roberta-large (MLM、100言語)
次回
この記事が気に入ったらサポートをしてみませんか?