見出し画像

Huggingface Transformers 入門 (26) - マルチリンガルモデル

以下の記事を参考にして書いてます。

Multi-lingual models

前回

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言語)

次回



この記事が気に入ったらサポートをしてみませんか?