abdulhafis/en-dag-translator-nllb
026
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)
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:
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))