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.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ce modèle a été publié dans HF papers le 2022-07-11 et contribué à Hugging Face Transformers le 2022-07-18.

NLLB

FlashAttention SDPA

Aperçu

NLLB: No Language Left Behind est un modèle de traduction multilingue. Il est entraîné sur des données à l'aide de techniques de fouille de données adaptées aux langues à faibles ressources et prend en charge plus de 200 langues. NLLB intègre une architecture de calcul conditionnel utilisant un Sparsely Gated Mixture of Experts.

Vous pouvez trouver tous les points de contrôle NLLB originaux sous l'organisation AI at Meta.

Ce modèle a été contribué par Lysandre. Cliquez sur les modèles NLLB dans la barre latérale droite pour plus d’exemples sur la façon d’appliquer NLLB à différentes tâches de traduction.

L'exemple ci-dessous montre comment traduire du texte avec Pipeline ou la classe AutoModel.

Pipeline
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")

La quantification réduit la charge mémoire des grands modèles en représentant les poids avec une précision inférieure. Reportez-vous à l'aperçu de la Quantization pour plus d'informations sur les backends de quantification disponibles.

L'exemple ci-dessous utilise bitsandbytes pour quantiser les poids sur 8 bits.

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])

Utilisez le AttentionMaskVisualizer pour mieux comprendre les jetons auxquels le modèle peut ou non prêter attention.

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")

Notes

  • Le tokenizer a été mis à jour en avril 2023 pour préfixer la séquence source avec la langue source plutôt que la langue cible. Cela privilégie les performances en zéro-shot au prix d'une légère baisse des performances supervisées.

    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]

    Pour revenir au comportement legacy, utilisez l'exemple de code ci-dessous.

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)
  • Pour les langues autres que l’anglais, spécifiez le code BCP-47 de la langue avec le mot-clé src_lang, comme indiqué ci-dessous.

  • Voir l'exemple ci-dessous pour une traduction du roumain vers l'allemand.

    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

classe 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 )

Paramètres

  • vocab_file (str, facultatif) — Chemin vers le fichier de vocabulaire.
  • bos_token (str, facultatif, par défaut "<s>") — Le jeton de début de séquence utilisé lors de la préformation.
  • eos_token (str, facultatif, par défaut "</s>") — Le jeton de fin de séquence.
  • sep_token (str, facultatif, par défaut "</s>") — Le jeton séparateur.
  • cls_token (str, facultatif, par défaut "<s>") — Le jeton de classification.
  • unk_token (str, facultatif, par défaut "<unk>") — Le jeton inconnu.
  • pad_token (str, facultatif, par défaut "<pad>") — Le jeton utilisé pour le bourrage.
  • mask_token (str, facultatif, par défaut "<mask>") — Le jeton utilisé pour masquer les valeurs.
  • src_lang (str, facultatif) — La langue à utiliser comme langue source pour la traduction.
  • tgt_lang (str, facultatif) — La langue à utiliser comme langue cible pour la traduction.
  • legacy_behaviour (bool, facultatif, par défaut False) — Indique s'il faut utiliser le comportement hérité (motif de suffixe) ou le nouveau comportement (motif de préfixe).

Construit un tokenizer NLLB (basé sur la bibliothèque tokenizers de HuggingFace). Basé sur Unigram.

Ce tokenizer hérite de TokenizersBackend, qui contient la plupart des méthodes principales. Les utilisateurs doivent se référer à cette superclasse pour plus d'informations sur ces méthodes.

La méthode de tokenisation est <tokens> <eos> <language code> pour les documents de la langue source, et `<language code>

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

Exemples :

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

Réinitialiser les jetons spéciaux à la configuration de la langue source.

  • En mode legacy : aucun préfixe et suffixe=[eos, src_lang_code].
  • En mode par défaut : préfixe=[src_lang_code], suffixe = [eos]

set_tgt_lang_special_tokens

< >

( lang: str )

Réinitialiser les jetons spéciaux sur le paramètre de la langue cible.

  • En mode legacy : aucun préfixe et suffixe=[eos, tgt_lang_code].
  • En mode par défaut : préfixe=[tgt_lang_code], suffixe = [eos]
Update on GitHub