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 foi publicado no HF papers em 2022-07-11 e contribuído para o Hugging Face Transformers em 2022-07-18.

NLLB

FlashAttention SDPA

Visão geral

NLLB: No Language Left Behind é um modelo de tradução multilíngue. Ele é treinado com dados usando técnicas de mineração de dados adaptadas para idiomas de baixo recurso e suporta mais de 200 idiomas. O NLLB possui uma arquitetura de computação condicional que utiliza um Sparsely Gated Mixture of Experts.

Você pode encontrar todos os checkpoints originais do NLLB na organização AI at Meta.

Este modelo foi contribuído por Lysandre. Clique nos modelos NLLB na barra lateral à direita para ver mais exemplos de como aplicar o NLLB a diferentes tarefas de tradução.

O exemplo abaixo demonstra como traduzir texto com Pipeline ou a 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")

A quantização reduz a carga de memória de modelos grandes ao representar os pesos em uma precisão menor. Consulte a visão geral de Quantização para mais backends de quantização disponíveis.

O exemplo abaixo usa bitsandbytes para quantizar os pesos em 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])

Use o AttentionMaskVisualizer para entender melhor quais tokens o modelo pode e não pode observar.

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

Observações

  • O tokenizer foi atualizado em abril de 2023 para prefixar a sequência de origem com o idioma de origem, em vez do idioma de destino. Isso prioriza o desempenho zero-shot a um pequeno custo no desempenho supervisionado.

    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 reverter para o comportamento legado, use o exemplo de código abaixo.

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)
  • Para idiomas que não são o inglês, especifique o código BCP-47 do idioma com a palavra-chave src_lang, conforme mostrado abaixo.

  • Veja um exemplo abaixo de uma tradução do romeno para o alemão.

    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 )

Parâmetros

  • vocab_file (str, opcional) — Caminho para o arquivo de vocabulário.
  • bos_token (str, opcional, padrão "<s>") — O token de início de sequência usado durante o pré-treinamento.
  • eos_token (str, opcional, padrão "</s>") — O token de fim de sequência.
  • sep_token (str, opcional, padrão "</s>") — O token separador.
  • cls_token (str, opcional, padrão "<s>") — O token do classificador.
  • unk_token (str, opcional, padrão "<unk>") — O token desconhecido.
  • pad_token (str, opcional, padrão "<pad>") — O token usado para preenchimento.
  • mask_token (str, opcional, padrão "<mask>") — O token usado para mascarar valores.
  • src_lang (str, opcional) — O idioma a ser usado como idioma de origem para a tradução.
  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • legacy_behaviour (bool, opcional, padrão False) — Se deve usar o comportamento legado (padrão de sufixo) ou o novo comportamento (padrão de prefixo).

Construa um tokenizador NLLB (baseado na biblioteca tokenizers do HuggingFace). Baseado em Unigram.

Este tokenizador herda de TokenizersBackend, que contém a maioria dos métodos principais. Os usuários devem consultar essa superclasse para obter mais informações sobre esses métodos.

O método de tokenização é <tokens> <eos> <language code> para documentos do idioma de origem, e `<language code>

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

Exemplos:

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

Redefina os tokens especiais para a configuração do idioma de origem.

  • No modo legado: sem prefixo e suffix=[eos, src_lang_code].
  • No modo padrão: Prefixo=[src_lang_code], sufixo = [eos]

set_tgt_lang_special_tokens

< >

( lang: str )

Redefina os tokens especiais para a configuração do idioma de destino.

  • No modo legado: sem prefixo e suffix=[eos, tgt_lang_code].
  • No modo padrão: Prefixo=[tgt_lang_code], sufixo = [eos]
Update on GitHub