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-07-11에 HF papers에 게시되었으며, 2022-07-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 클래스를 사용하여 텍스트를 번역하는 방법을 보여줍니다.

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은 가중치를 더 낮은 정밀도로 표현하여 대규모 모델의 메모리 부담을 줄입니다. 사용 가능한 다른 양자화 백엔드에 대해서는 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")

The input is a single word "Notes". 참고

  • 토크나이저는 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

클래스 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>이며,

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

특수 토큰을 소스 언어 설정으로 초기화합니다.

  • 레거시 모드: 접두사가 없으며 suffix=[eos, src_lang_code]입니다.
  • 기본 모드에서는: 접두사=[src_lang_code], 접미사 = [eos]

set_tgt_lang_special_tokens

< >

( lang: str )

특수 토큰을 대상 언어 설정으로 초기화합니다.

  • 레거시 모드: 접두사(prefix)가 없으며 접미사(suffix)는 [eos, tgt_lang_code]입니다.
  • 기본 모드에서: 접두사=[tgt_lang_code], 접미사 = [eos]
Update on GitHub