Team SinhalaNuwana - Sinhala MMLU Shared Task System
Codabench macro score 63.5755 (Easy 64.3302, Medium 56.7057, Hard 69.6907).
System summary
- Base model(s): google/gemma-4-E4B-it, revision
ee0ef6023621cff504d758262d4e04895a5af4a2, text decoder only - What we did: LoRA fine-tuning with STaR (self-taught reasoner): the base model thought about 8,894 Sinhala training questions, and we trained a LoRA adapter on its 4,073 correct first-try thoughts. At inference the model thinks in Sinhala before it answers (thinking mode, greedy). Each question is answered with the choices in several orders, and the option probabilities are averaged. Easy and Hard questions also get a longer thought of up to 2,048 tokens, and Medium questions 4 more choice orders. One model, no retrieval.
- Total inference parameters: 7.50B (7,501,679,616: 7,463,013,376 base and 38,666,240 adapter)
- Extra data used for training or retrieval: Our own Sinhala multiple-choice questions, generated by Claude models from Sri Lankan school textbooks and teacher guides. They are in
training/data/of this repository. No retrieval.
Models and resources in this submission
| Repo | What it is |
|---|---|
SinhalaMMLU-SharedTask/team-sinhalanuwana |
code, inference script, final predictions, training code and training data (this repo) |
SinhalaMMLU-SharedTask/team-sinhalanuwana-gemma4-e4b-star3-lora |
LoRA adapter on gemma-4-E4B-it: weights, config, tokenizer files, training log |
google/gemma-4-E4B-it |
public base model (Apache 2.0) |
How to run
pip install -r requirements.txt
python inference.py
- GPU used: Kaggle T4 x2 (16 GB each). One GPU with 24 GB or more also holds the model.
- Approximate run time on the test set: about 16 hours for the 2,238 questions on T4 x2 (six passes of 4.3, 4.2, 1.7, 1.9, 2.1 and 2.1 hours)
- Anything else the organizers need to know:
- Python 3.13. If
torchaois installed (Kaggle has it), runpip uninstall -y torchaofirst, becausepeftimports it and rejects that version. inference.pycallspredict.pyandmerge_votes.pyfrom the same folder, so run it inside a clone of this repository.- It writes
predictions.jsonlin the current folder, which replaces our submitted copy in a clone. The submitted file stays in the repository history. - Only
DATA_REPOneeds to change. No token is needed if the repositories are public.
- Python 3.13. If
Files
inference.py- the exact system that produced our final Codabench submissionpredict.py,merge_votes.py- one answering pass and the vote over the passes, called byinference.pypredictions.jsonl- the exact file we submitted to the final leaderboardrequirements.txt- package versions we usedmanifest.yaml,model_manifest.json- models, adapter SHA-256, parameter count, closed-API usetraining/- training and data-preparation code, Kaggle notebooks, settings and training data (seetraining/README.md)
Team details
| Name | Affiliation | Role |
|---|---|---|
| Senali Dilumika | UCSC | Corresponding member |
Team name on Codabench: SinhalaNuwana.
Verification
- Fresh Kaggle session (2 x T4, 28 October 2026), the same code, the same pinned versions and the same adapter, on the first 3 questions of each of the 41 test files (123 questions): 122 answers are the same as in
predictions.jsonl. All Medium and Hard answers are the same. The one changed answer is an Easy question whose 5 votes split 2-2-1. Float16 GPU arithmetic is not fully deterministic, so a full rerun can change a few close votes. merge_votes.py, run on the six scored passes, rebuildspredictions.jsonlbyte for byte.
Training (details in training/README.md)
training/README.md gives the full pipeline, the settings and the data. In short:
- Claude models generated Sinhala multiple-choice questions from Sri Lankan school textbooks, NIE teacher guides and resource books, A/L learning outcome notes and Wikibooks. A stronger Claude model checked the answer keys of 10,000 of them.
review_overlap.pyremoved the 1,106 questions that resemble a dev or test question by wording or by meaning (LaBSE cosine 0.70 or more). 8,894 questions remained.star.pylet the base model (no adapter) think about each question for up to 512 tokens. It kept the 4,073 thoughts that gave the correct answer on the first try.train_lora.pytrained a new LoRA adapter on those thoughts: 2 epochs, AdamW, learning rate 1e-4 with a cosine schedule and 3% warmup, 16 examples per step, sequences of up to 1,024 tokens. It took 4.3 hours on 2 x T4.
Licence and citation
The code and the adapter are released under the Apache 2.0 licence, the licence of Gemma 4.
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐ Ask for provider support