CoolFace
Modelpublic

abdulhafis/en-dag-translator-nllb

sourceHugging Facemitupdated 1mo agoView on Hugging Face
0likes26downloads
Model Card

Vocabulary-Extended NLLB-200 English-Dagbani Translator — nllblorav1

A PEFT LoRA adapter for NLLB-200 (distilled 600M parameters), fine-tuned to translate English to Dagbani (ISO 639-3 dag).

This model extends NLLB's standard tokenizer vocabulary with custom subword tokens trained on a local Dagbani-English corpus to prevent character fragmentation and preserve Mabia grammar structures.

Metrics (Gold Standard Held-Out Test Set)

MetricValue
Corpus BLEU15.41
Corpus chrF++36.36
Adapter TypePEFT LoRA (r=16, alpha=32)
Base Modelfacebook/nllb-200-distilled-600M

Training Details

  • —Dataset: Clean English-Dagbani parallel corpus (~78k sentence pairs).
  • —Adapter Targets: Attention weights (q_proj, v_proj) and customized embedding modules (shared, lm_head).
  • —Optimizer: AdamW, learning rate 2e-4, batch size 32, FP16 enabled.
  • —Source Code Repository: https://github.com/pious2847/Dagbani-NLP_V2

Usage

You can load and execute this model adapter using Hugging Face transformers and peft libraries:

python
import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from peft import PeftModel

base_model_name = "facebook/nllb-200-distilled-600M"
adapter_name = "abdulhafis/en-dag-translator" # or path to loaded adapter directory

# 1. Load extended tokenizer from the adapter
tokenizer = AutoTokenizer.from_pretrained(adapter_name)

# 2. Load NLLB base model and resize embeddings
base_model = AutoModelForSeq2SeqLM.from_pretrained(base_model_name)
base_model.resize_token_embeddings(len(tokenizer))

# 3. Mount PEFT adapter weights
model = PeftModel.from_pretrained(base_model, adapter_name)
model.eval()

# 4. Translate English to Dagbani
tokenizer.src_lang = "eng_Latn"
text = "The children went to the farm."
inputs = tokenizer(text, return_tensors="pt")

tokenizer.tgt_lang = "dag_Latn"
outputs = model.generate(
    **inputs, 
    max_length=128, 
    num_beams=4, 
    forced_bos_token_id=tokenizer.convert_tokens_to_ids("dag_Latn")
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))