Transformers documentation
NLLB
Bu model 2022-07-11 tarihinde HF papers'ta yayımlandı ve 2022-07-18 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
NLLB
Genel Bakış
NLLB: No Language Left Behind çok dilli bir çeviri modelidir. Düşük kaynaklı dillere özel olarak tasarlanmış veri madenciliği teknikleri kullanılarak veri üzerinde eğitilmiştir ve 200'den fazla dili destekler. NLLB, Sparsely Gated Mixture of Experts kullanan koşullu bir hesaplama mimarisine sahiptir.
Tüm orijinal NLLB checkpoint'lerini AI at Meta kuruluşu altında bulabilirsiniz.
Bu model Lysandre tarafından katkıda bulunmuştur. NLLB'nin farklı çeviri görevlerine nasıl uygulanacağına dair daha fazla örnek için sağ kenar çubuğundaki NLLB modellerine tıklayın.
Aşağıdaki örnek, metin çevirisinin Pipeline veya AutoModel sınıfı ile nasıl yapıldığını göstermektedir.
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")from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-600M")
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-200-distilled-600M", attn_implementation="sdpa", 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
)
print(tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0])Quantization, ağırlıkları daha düşük bir hassasiyetle temsil ederek büyük modellerin bellek yükünü azaltır. Daha fazla kullanılabilir quantization backend'i için Quantization genel bakışına başvurun.
Aşağıdaki örnek, ağırlıkları 8-bite indirgemek için bitsandbytes kullanır.
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])Modelin hangi token'lara dikkat edebildiğini ve edemediğini daha iyi anlamak için AttentionMaskVisualizer'ı kullanın.
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")
Notlar
Tokenizer, Nisan 2023'te hedef dil yerine kaynak dilin kaynak dizinin başına eklenmesi şeklinde güncellendi. Bu, denetimli performansta küçük bir maliyet karşılığında sıfır atış (zero-shot) performansını önceliklendirir.
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]Eski davranışa geri dönmek için aşağıdaki kod örneğini kullanın.
from transformers import NllbTokenizer tokenizer = NllbTokenizer.from_pretrained("facebook/nllb-200-distilled-600M", legacy_behaviour=True)İngilizce dışındaki diller için, aşağıda gösterildiği gibi dilin BCP-47 kodunu
src_langanahtar kelimesiyle belirtin.Romence'den Almancaya çeviri için aşağıdaki örneğe bakı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
sınıf transformers.NllbTokenizer
< source >( 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 )
Parametreler
- vocab_file (
str, isteğe bağlı) — Sözlük dosyasının yolu. - bos_token (
str, isteğe bağlı, varsayılan"<s>") — Ön eğitim sırasında kullanılan dizinin başlangıç belirteci. - eos_token (
str, isteğe bağlı, varsayılan"</s>") — Dizi sonu belirteci. - sep_token (
str, isteğe bağlı, varsayılan"</s>") — Ayrıştırıcı belirteci. - cls_token (
str, isteğe bağlı, varsayılan"<s>") — Sınıflandırıcı belirteci. - unk_token (
str, isteğe bağlı, varsayılan"<unk>") — Bilinmeyen jeton. - pad_token (
str, isteğe bağlı, varsayılan"<pad>") — Doldurma için kullanılan jeton. - mask_token (
str, isteğe bağlı, varsayılan"<mask>") — Değerleri maskelemek için kullanılan jeton. - src_lang (
str, isteğe bağlı) — Çeviri için kaynak dil olarak kullanılacak dil. - tgt_lang (
str, isteğe bağlı) — Çeviri için hedef dil olarak kullanılacak dil. - legacy_behaviour (
bool, isteğe bağlı, varsayılanFalse) — Eski davranışın (son ek deseni) yoksa yeni davranışın (ön ek deseni) kullanılacağı.
HuggingFace'in tokenizers kütüphanesiyle desteklenen bir NLLB tokenizer'ı oluşturun. Unigram tabanlıdır.
Bu tokenizer, ana yöntemlerin çoğunu içeren TokenizersBackend sınıfından devralır. Kullanıcıların bu yöntemlerle ilgili daha fazla bilgi için bu üst sınıfa başvurması gerekir.
Kaynak dil belgeleri için tokenizasyon yöntemi <tokens> <eos> <language code> şeklindedir ve `<language code>
Örnekler:
>>> 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")Özel tokenleri kaynak dil ayarına sıfırlayın.
- Eski modda: Önek yok ve sonek=[eos, src_lang_code].
- Varsayılan modda: Önek=[src_lang_code], sonek=[eos]
Özel tokenleri hedef dil ayarına sıfırlayın.
- Eski (legacy) modda: Ön ek yok ve suffix=[eos, tgt_lang_code].
- Varsayılan modda: önek=[tgt_lang_code], sonek=[eos]