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

Este modelo se publicó en HF papers el 2022-07-11 y se contribuyó a Hugging Face Transformers el 2022-07-18.

NLLB

FlashAttention SDPA

Resumen

NLLB: No Language Left Behind es un modelo de traducción multilingüe. Se entrena con datos utilizando técnicas de minería de datos adaptadas para idiomas con pocos recursos y admite más de 200 idiomas. NLLB presenta una arquitectura de cómputo condicional que utiliza un Sparsely Gated Mixture of Experts.

Puedes encontrar todos los puntos de control originales de NLLB bajo la organización AI at Meta.

Este modelo fue aportado por Lysandre. Haz clic en los modelos NLLB de la barra lateral derecha para ver más ejemplos de cómo aplicar NLLB a diferentes tareas de traducción.

El siguiente ejemplo demuestra cómo traducir texto con Pipeline o la clase 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 cuantización reduce la carga de memoria de los modelos grandes al representar los pesos con una precisión inferior. Consulte el resumen de Cuantización para conocer más backends de cuantización disponibles.

El ejemplo siguiente utiliza bitsandbytes para cuantizar los pesos a 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])

Utilice AttentionMaskVisualizer para comprender mejor qué tokens el modelo puede y no puede atender.

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

Notas

  • El tokenizador se actualizó en abril de 2023 para prefijar la secuencia de origen con el idioma de origen en lugar del idioma de destino. Esto prioriza el rendimiento en cero ejemplos (zero-shot) a un menor costo en el rendimiento supervisado.

    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]

    Para revertir al comportamiento anterior, use el ejemplo de código a continuación.

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)
  • Para idiomas distintos del inglés, especifique el código BCP-47 del idioma con la palabra clave src_lang, como se muestra a continuación.

  • Vea el ejemplo a continuación para una traducción del rumano al alemán.

    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

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

Parámetros

  • vocab_file (str, opcional) — Ruta al archivo de vocabulario.
  • bos_token (str, opcional, valor predeterminado "<s>") — El token de inicio de secuencia que se utilizó durante el preentrenamiento.
  • eos_token (str, opcional, por defecto "</s>") — El token de fin de secuencia.
  • sep_token (str, opcional, por defecto "</s>") — El token separador.
  • cls_token (str, opcional, valor predeterminado "<s>") — El token del clasificador.
  • unk_token (str, opcional, valor predeterminado "<unk>") — El token desconocido.
  • pad_token (str, opcional, valor predeterminado "<pad>") — El token utilizado para el relleno.
  • mask_token (str, opcional, valor predeterminado "<mask>") — El token utilizado para enmascarar valores.
  • src_lang (str, opcional) — El idioma que se usará como idioma de origen para la traducción.
  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • legacy_behaviour (bool, opcional, valor predeterminado False) — Si se debe usar el comportamiento heredado (patrón de sufijo) o el nuevo comportamiento (patrón de prefijo).

Construye un tokenizador NLLB (respaldado por la biblioteca tokenizers de HuggingFace). Basado en Unigram.

Este tokenizador hereda de TokenizersBackend, que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.

El método de tokenización es <tokens> <eos> <language code> para documentos del idioma de origen, y `<language code>

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

Ejemplos:

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

Restablece los tokens especiales a la configuración del idioma de origen.

  • En el modo legacy: sin prefijo y suffix=[eos, src_lang_code].
  • En el modo predeterminado: prefijo=[src_lang_code], sufijo = [eos]

set_tgt_lang_special_tokens

< >

( lang: str )

Restablece los tokens especiales a la configuración del idioma de destino.

  • En el modo legacy: sin prefijo y suffix=[eos, tgt_lang_code].
  • En el modo predeterminado: prefijo=[tgt_lang_code], sufijo = [eos]
Update on GitHub