Views
No views yet
facebook/nllb-200-distilled-600M
fine-tuned for multi-directional translation between Ewe (ewe_Latn),
English (eng_Latn) and French (fra_Latn). A single adapter handles all
six directions (Ewe as both source and target).ee), English (en), French (fr)facebook/nllb-200-distilled-600M| Direction | BLEU ↑ | chrF++ ↑ | n |
|---|---|---|---|
| ewe → eng | 26.16 | 44.88 | 4336 |
| eng → ewe | 23.29 | 43.18 | 4340 |
| ewe → fra | 6.27 | 24.61 | 2362 |
| fra → ewe | 4.12 | 29.09 | 2363 |
| eng → fra | 41.55 | 56.43 | 1988 |
| fra → eng | 46.39 | 65.45 | 1988 |
1import torch
2from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
3from peft import PeftModel
4
5BASE = "facebook/nllb-200-distilled-600M"
6ADAPTER = "romaricnadjire/nllb-ewe-en-fr-multilingual-lora"
7CODE = {"ee": "ewe_Latn", "en": "eng_Latn", "fr": "fra_Latn"}
8
9tokenizer = AutoTokenizer.from_pretrained(BASE)
10model = AutoModelForSeq2SeqLM.from_pretrained(BASE)
11model = PeftModel.from_pretrained(model, ADAPTER).eval()
12
13def translate(text, src, tgt, num_beams=4):
14 tokenizer.src_lang = CODE[src]
15 inputs = tokenizer(text, return_tensors="pt")
16 out = model.generate(
17 **inputs,
18 forced_bos_token_id=tokenizer.convert_tokens_to_ids(CODE[tgt]),
19 max_new_tokens=128, num_beams=num_beams,
20 )
21 return tokenizer.batch_decode(out, skip_special_tokens=True)[0]
22
23print(translate("Ŋdi na mi", "ee", "fr"))facebook/nllb-200-distilled-600M (frozen) + LoRA adapter.bible-uedin (ee↔en, ee↔fr) — public domain / OPUS terms.tchaye59 Ewe–English pairs (mixed sources incl. religious texts) — research use.facebook/nllb-200-distilled-600M) by Meta AI — CC-BY-NC 4.0.masakhane/mafand (CC-BY-NC) was used for evaluation only, never for training.facebook/nllb-200-distilled-600M and is released
under CC-BY-NC-4.0 (non-commercial). Please credit the base model (Meta NLLB-200)
and the data sources above.Academic / portfolio project. Not legal advice; verify licenses before any non-research or commercial use.