# NLLB

    
        
        
    

## Genel Bakış

[NLLB: No Language Left Behind](https://huggingface.co/papers/2207.04672) ç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](https://huggingface.co/facebook/models?search=nllb) kuruluşu altında bulabilirsiniz.

> [!TIP]
> Bu model [Lysandre](https://huggingface.co/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](/docs/transformers/main/tr/main_classes/pipelines#transformers.Pipeline) veya [AutoModel](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel) sınıfı ile nasıl yapıldığını göstermektedir.

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

```python
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](../quantization/overview) genel bakışına başvurun.

Aşağıdaki örnek, ağırlıkları 8-bite indirgemek için [bitsandbytes](../quantization/bitsandbytes) kullanır.

```python
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](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/attention_visualizer.py#L139)'ı kullanın.

```python
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.

   ```python
   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.

   ```python
   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](https://github.com/facebookresearch/flores/blob/main/flores200/README.md#languages-in-flores-200) kodunu `src_lang` anahtar sözcüğüyle belirtin.

- Romence'den Almancaya çeviri için aşağıdaki örneğe bakın.

    ```python
    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]]

#### transformers.NllbTokenizer[[transformers.NllbTokenizer]]

```python
transformers.NllbTokenizer(vocab: str | dict[str, int] | None = None, merges: str | list[str] | None = None, bos_token = '<s>', eos_token = '</s>', sep_token = '</s>', cls_token = '<s>', unk_token = '<unk>', pad_token = '<pad>', mask_token = '<mask>', src_lang = None, tgt_lang = None, _spm_precompiled_charsmap: str | None = None, additional_special_tokens = None, extra_special_tokens = None, legacy_behaviour = False, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nllb/tokenization_nllb.py#L33)

**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ıç jetonu.

eos_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Sıra sonu belirteci.

sep_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Ayraç 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>"`) : Dolgu 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ılan `False`) : Eski davranışın (son ek deseni) mı yoksa yeni davranışın (ön ek deseni) mı kullanılacağı.

HuggingFace'in *tokenizers* kütüphanesi tarafından desteklenen bir NLLB belirteç oluşturur. [Unigram](https://huggingface.co/docs/tokenizers/python/latest/components.html?highlight=unigram#models) tabanlıdır.

Bu tokenizer, ana yöntemlerin çoğunu içeren [TokenizersBackend](/docs/transformers/main/tr/main_classes/tokenizer#transformers.TokenizersBackend) sınıfından devralır. Kullanıcıların bu yöntemler hakkında 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>`, hedef dil belgeleri için ise ` `'dir.

Örnekler:

```python
>>> 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[[transformers.NllbTokenizer.set_src_lang_special_tokens]]

```python
set_src_lang_special_tokens(src_lang)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nllb/tokenization_nllb.py#L267)

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

#### set_tgt_lang_special_tokens[[transformers.NllbTokenizer.set_tgt_lang_special_tokens]]

```python
set_tgt_lang_special_tokens(lang: str)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nllb/tokenization_nllb.py#L292)

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

