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

Model ini dipublikasikan di HF papers pada 2022-07-11 dan disumbangkan ke Hugging Face Transformers pada 2022-07-18.

NLLB

FlashAttention SDPA

Ikhtisar

NLLB: No Language Left Behind adalah model terjemahan multibahasa. Model ini dilatih menggunakan data dengan teknik penambangan data yang disesuaikan untuk bahasa berkekurangan sumber daya dan mendukung lebih dari 200 bahasa. NLLB memiliki arsitektur komputasi kondisional menggunakan Sparsely Gated Mixture of Experts.

Anda dapat menemukan semua checkpoint NLLB asli di bawah organisasi AI at Meta.

Model ini disumbangkan oleh Lysandre. Klik model NLLB di bilah sisi kanan untuk contoh lebih lanjut tentang cara menerapkan NLLB ke berbagai tugas terjemahan.

Contoh di bawah ini menunjukkan cara menerjemahkan teks dengan Pipeline atau kelas 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")

Quantization mengurangi beban memori model besar dengan merepresentasikan bobot dalam presisi yang lebih rendah. Lihat ringkasan Quantization untuk backend quantization lain yang tersedia.

Contoh di bawah menggunakan bitsandbytes untuk mengkuantisasi bobot menjadi 8-bit.

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

Gunakan AttentionMaskVisualizer untuk lebih memahami token mana yang dapat dan tidak dapat diperhatikan oleh model.

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

Catatan

  • Tokenizer diperbarui pada April 2023 untuk mem-prefixkan urutan sumber dengan bahasa sumber, bukan bahasa target. Hal ini memprioritaskan kinerja zero-shot dengan sedikit pengorbanan pada kinerja supervised.

    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]

    Untuk kembali ke perilaku lama, gunakan contoh kode di bawah ini.

    from transformers import NllbTokenizer
    
    tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)
  • Untuk bahasa selain bahasa Inggris, tentukan kode BCP-47 bahasa tersebut dengan kata kunci src_lang seperti yang ditunjukkan di bawah ini.

  • Lihat contoh di bawah ini untuk terjemahan dari Rumania ke Jerman.

    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

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

Parameter

  • vocab_file (str, opsional) — Path ke file kosakata.
  • bos_token (str, opsional, defaultnya "<s>") — Token awal urutan yang digunakan selama pra-pelatihan.
  • eos_token (str, opsional, default "</s>") — Token akhir urutan.
  • sep_token (str, opsional, defaultnya "</s>") — Token pemisah.
  • cls_token (str, opsional, default "<s>") — Token klasifikator.
  • unk_token (str, opsional, defaultnya "<unk>") — Token yang tidak dikenal.
  • pad_token (str, opsional, defaultnya "<pad>") — Token yang digunakan untuk padding.
  • mask_token (str, opsional, defaultnya "<mask>") — Token yang digunakan untuk memask nilai.
  • src_lang (str, opsional) — Bahasa yang akan digunakan sebagai bahasa sumber untuk penerjemahan.
  • tgt_lang (str, opsional) — Bahasa yang akan digunakan sebagai bahasa target untuk penerjemahan.
  • legacy_behaviour (bool, opsional, default False) — Apakah akan menggunakan perilaku lama (pola sufiks) atau perilaku baru (pola prefiks).

Konstruksi tokenizer NLLB (didukung oleh pustaka tokenizers HuggingFace). Berbasis pada Unigram.

Tokenizer ini mewarisi dari TokenizersBackend yang berisi sebagian besar metode utama. Pengguna sebaiknya merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.

Metode tokenisasi adalah <tokens> <eos> <language code> untuk dokumen bahasa sumber, dan `<language code>

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

Contoh:

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

Atur ulang token khusus ke pengaturan bahasa sumber.

  • Dalam mode legacy: Tidak ada prefix dan suffix=[eos, src_lang_code].
  • Dalam mode default: Prefix=[src_lang_code], suffix = [eos]

set_tgt_lang_special_tokens

< >

( lang: str )

Atur ulang token khusus ke pengaturan bahasa target.

  • Dalam mode legacy: Tidak ada prefix dan suffix=[eos, tgt_lang_code].
  • Dalam mode default: Prefix=[tgt_lang_code], suffix = [eos]
Update on GitHub