A 1B parameter Gemma 3 reward model that scores English→Luganda translation quality.
Outputs a scalar reward — higher = better translation.
1from transformers import AutoModelForSequenceClassification, AutoTokenizer
2import torch
3
4tok = AutoTokenizer.from_pretrained("CraneAILabs/luganda-reward-model")
5model = AutoModelForSequenceClassification.from_pretrained(
6 "CraneAILabs/luganda-reward-model",
7 torch_dtype=torch.bfloat16,
8 device_map="auto",
9)
10model.eval()
11
12def score(prompt: str, response: str) -> float:
13 """Higher score = better Luganda translation."""
14 text = f"{prompt}\n\n{response}"
15 inputs = tok(text, return_tensors="pt", truncation=True, max_length=512).to(model.device)
16 with torch.no_grad():
17 out = model(**inputs)
18 return out.logits[0].item()
19
20# Examples
21print(score("Translate to Luganda: The children are playing.", "Abaana bazannya.")) # +8.0 ← good
22print(score("Translate to Luganda: I love my mother.", "Njagala maama wange.")) # +5.5 ← good
23print(score("Translate to Luganda: I love my mother.", "Mama love I.")) # +1.7 ← garbled
24print(score("Translate to Luganda: I love my mother.", "Sssss xxxxx zzzzz.")) # +1.1 ← gibberish
For the full training writeup including a v1 failure analysis, see
TRAINING_REPORT.md in the original repo.
1@misc{craneailabs2026rewardmodel,
2 title={Luganda Translation Reward Model},
3 author={Bakunga, Bronson and Mubiru, Kato Steven and Tukamushaba, Catherine},
4 year={2026},
5 publisher={Crane AI Labs},
6 url={https://huggingface.co/CraneAILabs/luganda-reward-model}
7}
Apache 2.0. Built on Gemma 3 — see
Gemma terms of use.