Transformers documentation

NLLB

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2022年7月11日にHF papersで公開され、2022年7月18日にHugging Face Transformersに貢献されました。

NLLB

FlashAttention SDPA

概要

NLLB: No Language Left Behindは多言語翻訳モデルです。低資源言語向けに調整されたデータマイニング技術を用いたデータで学習されており、200以上の言語に対応しています。NLLBは、Sparsely Gated Mixture of Expertsを用いた条件付き計算アーキテクチャを備えています。

すべてのオリジナルのNLLBチェックポイントは、AI at Meta組織の下で見つけることができます。

このモデルは Lysandre によって提供されました。 NLLB を異なる翻訳タスクに適用する方法のより多くの例については、右側のサイドバーにある NLLB モデルをクリックしてください。

以下の例では、PipelineまたはAutoModelクラスを使用してテキストを翻訳する方法を示しています。

パイプライン
AutoModel
from transformers import pipeline


pipeline = pipeline(task="translation", model="facebook/nllb-200-distilled-600M", src_lang="eng_Latn", tgt_lang="fra_Latn", device=0)
pipeline("UN Chief says there is no military solution in Syria")

Quantization は、重みを低精度で表現することで、大規模モデルのメモリ負荷を軽減します。利用可能な Quantization バックエンドの詳細については、Quantization の概要を参照してください。

以下の例では、bitsandbytesを使用して重みを8ビットに量子化します。

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BitsAndBytesConfig


bnb_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-200-distilled-1.3B", quantization_config=bnb_config, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-1.3B")

article = "UN Chief says there is no military solution in Syria"
inputs = tokenizer(article, return_tensors="pt").to(model.device)
translated_tokens = model.generate(
    **inputs, forced_bos_token_id=tokenizer.convert_tokens_to_ids("fra_Latn"), max_length=30,
)
print(tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0])

AttentionMaskVisualizer を使用して、モデルが注意できるトークンと注意できないトークンをより深く理解してください。

from transformers.utils.attention_visualizer import AttentionMaskVisualizer


visualizer = AttentionMaskVisualizer("facebook/nllb-200-distilled-600M")
visualizer("UN Chief says there is no military solution in Syria")

注記

  • トークナイザーは2023年4月に更新され、ソースシーケンスの先頭にターゲット言語ではなくソース言語をプレフィックスとして付与するようになりました。これにより、ゼロショット性能が優先され、教師あり性能にはわずかなコストが生じます。

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M")
    tokenizer("How was your day?").input_ids
    [256047, 13374, 1398, 4260, 4039, 248130, 2]

    従来の動作に戻すには、以下のコード例を使用してください。

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)
  • 英語以外の言語の場合、以下に示すようにsrc_langキーワードにその言語のBCP-47コードを指定します。

  • ルーマニア語からドイツ語への翻訳の例を以下に示します。

    from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
    
    tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-600M")
    model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-200-distilled-600M", device_map="auto")
    
    article = "UN Chief says there is no military solution in Syria"
    inputs = tokenizer(article, return_tensors="pt").to(model.device)
    
    translated_tokens = model.generate(
        **inputs, forced_bos_token_id=tokenizer.convert_tokens_to_ids("fra_Latn"), max_length=30
    )
    tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
    Le chef de l'ONU dit qu'il n'y a pas de solution militaire en Syrie

NllbTokenizer

class transformers.NllbTokenizer

< >

( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'src_lang = Nonetgt_lang = None_spm_precompiled_charsmap: str | None = Noneadditional_special_tokens = Noneextra_special_tokens = Nonelegacy_behaviour = False**kwargs )

パラメータ

  • vocab_file (str, 任意) — 語彙ファイルへのパス。
  • bos_token (str、任意、デフォルトは "<s>") — 事前学習で使用されたシーケンス開始トークンです。
  • eos_token (str、任意、デフォルトは "</s>") — シーケンスの終了トークンです。
  • sep_token (str、任意、デフォルトは "</s>") — セパレータートークンです。
  • cls_token (str、任意、デフォルトは"<s>") — 分類用のトークンです。
  • unk_token (str、任意、デフォルトは "<unk>") — 不明トークンです。
  • pad_token (str、任意、デフォルトは "<pad>") — パディングに使用されるトークンです。
  • mask_token (str、任意、デフォルトは "<mask>") — 値をマスクするために使用されるトークンです。
  • src_lang (str, 省略可) — 翻訳のソース言語として使用する言語。
  • tgt_lang (str, 任意) — 翻訳のターゲット言語として使用する言語。
  • legacy_behaviour (bool、任意、デフォルトは False) — レガシーな動作(サフィックスパターン)を使用するか、新しい動作(プレフィックスパターン)を使用するかを指定します。

HuggingFaceのtokenizersライブラリをベースにしたNLLBのトークナイザーを構築します。Unigramに基づいています。

このトークナイザーは、主要なメソッドの大部分を含む TokenizersBackend を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

トークン化の形式は、ソース言語の文書に対しては<tokens> <eos> <language code>であり、`<language code>

<tokens> <eos>` for target language documents.

例:

>>> from transformers import NllbTokenizer

>>> tokenizer = NllbTokenizer.from_pretrained(
...     "facebook/nllb-200-distilled-600M", src_lang="eng_Latn", tgt_lang="fra_Latn"
... )
>>> example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
>>> expected_translation_french = "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
>>> inputs = tokenizer(example_english_phrase, text_target=expected_translation_french, return_tensors="pt")

set_src_lang_special_tokens

< >

( src_lang )

特殊トークンをソース言語の設定にリセットします。

  • レガシーモードでは: プレフィックスなし、サフィックスは[eos, src_lang_code]です。
  • デフォルトモードでは: プレフィックス=[src_lang_code]、サフィックス=[eos]

set_tgt_lang_special_tokens

< >

( lang: str )

特殊トークンをターゲット言語の設定にリセットします。

  • レガシーモードでは: プレフィックスなし、サフィックスは[eos, tgt_lang_code]。
  • デフォルトモードでは: プレフィックス=[tgt_lang_code]、サフィックス=[eos]
Update on GitHub