Team riswan β€” SinhalaMMLU Shared Task, ICTer 2026

This repository preserves Codabench submission #138, submission_think_ens_v9_final.zip, with provisional macro accuracy 64.2482 (Easy 65.2648, Medium 56.3456, Hard 71.134), as shown in the participant's 28 October 2026 screenshot. Ranking remains subject to organiser verification.

Reproduction status: the eight saved passes reproduce predictions.jsonl byte-for-byte. Fresh model inference has not been shown to reproduce the score. The supplied organiser template's no-sampling and Hugging-Face-only setup guidance differs from the historical system. See REPRODUCIBILITY.md for the full disclosure; this package does not certify rules compliance.

Team and resources

  • Team: riswan. Codabench participant: riswan. The registered team name was confirmed by the participant.
  • Team repository β€” configured repository destination; packaging changes are local until uploaded.
  • Base model: google/gemma-4-E4B-it β€” upstream model card lists Apache 2.0.
  • Ollama model: gemma4:e4b β€” the actual serving tag used by the original scripts; a moving tag is not an immutable model revision.
  • Competition dataset.
  • Task website and rules.
  • No trained model or adapter is evidenced in the submitted pipeline; it uses frozen model inference. No additional model repository is currently included.

Method actually used

Two four-shot baselines (English analysis and direct-answer modes) contribute low-weight votes and identify disagreements. Five thinking passes use the original option order, cyclic rotations, or an additional terminology instruction. A separate Mac thinking run contributes another vote. A deterministic, difficulty-specific weighted merge combines the saved answers. Rotated votes are ignored when the positional-option regex matches. The entire system is not zero-shot: the four-shot examples are supplied in data/few_shot_examples.json.

Source Saved answers Thinking Output-token limit Temperature Option order
CoT baseline 2238 false 260 0 Original; four examples
Direct baseline 2238 false 15 0 Original; four examples
Pass 1 2238 true 2048 0 Original
Pass 2 1100 true 4096 0 Rotation +1
Pass 3 720 true 4096 0.1, top_p 0.95 Original; terminology hint
Pass 4 712 true 4096 0 Rotation +2
Pass 5 712 true 4096 0 Rotation +3
Mac 1160 true 2048 0 Original

The generation requests in the archived code do not specify an Ollama seed. training/ensemble_v9.py is the exact weighted merge logic, with added validation. Ties use Counter.most_common: the first answer encountered in the fixed source order among tied totals wins. This is not an unweighted majority vote.

Parameters, hardware, and timing

  • Ollama-reported parameter count: 7,996,157,674 (approximately 7.996B), comprising 7,518,069,290 main-model parameters plus 478,088,384 projector parameters. Both Kaggle servers running Ollama 0.40.12 reported these same component counts. This sum is below 8,000,000,000.
  • These are model-metadata counts; no models were loaded when the diagnostic was captured. Any additional loaded components and final eligibility can be verified by the organisers during reproduction. See model_manifest.json.
  • Historical hardware: Kaggle 2 Γ— NVIDIA Tesla T4, two Ollama servers, two concurrent requests per server; separate Apple Mac with 16 GB memory reported by the participant. Exact Mac chip and historical runtime versions still need confirmation.
  • The exported notebook shows Pass 4 at 106.4 minutes after 700/719 attempts, and Pass 5 at 105.6 minutes after 700/719 attempts, followed by completion messages. Each complete pass took longer than its last printed progress time. Complete end-to-end runtime was not recorded in the supplied export; no A100 timing is claimed.

Verify the archived submission without running a model

From the repository root (Python 3.10+; standard library only):

python verify_submission.py
python training/ensemble_v9.py --out predictions_v9_rebuilt.jsonl

verify_submission.py checks hashes, unique identifiers, answer ranges and byte-identical replay. The saved positional keys are archival input-derived metadata, not labels. To independently regenerate that filter and inspect target sets:

python verify_submission.py --data /path/to/dataset

This verifies the saved result; it is not a substitute for the organisers' fresh-model reproduction check.

Fresh inference reconstruction

This runner is an audited reconstruction of a multi-machine workflow, not a claim that one script originally produced v9 end-to-end. First provision the correct Ollama runtime and original model. Historical setup is preserved in the notebook under training/evidence/; it uses the Ollama installer/registry, which differs from the supplied Hugging-Face-only template. Do not silently replace the quantized model with upstream BF16 and claim equivalence. Download the complete team repository, including training/src.

pip install -r requirements.txt
mkdir -p rerun
cd rerun
python ../inference.py

The script obtains all JSON question files from DATA_REPO on Hugging Face, then uses local Ollama endpoints. Setup downloads happen before answering. For a local offline dataset use --local-data /path/to/dataset. Saved test predictions are never read by the default fresh-run path. Set OLLAMA_HOSTS to choose local servers and WORKDIR to select a fresh checkpoint directory. LIMIT=2 provides a small smoke run per difficulty; it is not a full evaluation.

The submitted predictions.jsonl is protected against overwriting. Running from rerun/ writes new answers there. A full fresh Mac pass traverses the entire priority queue: the original 1160-answer partial prefix is preserved only as historical evidence, not hard-coded as a test-count rule. Consequently the fresh pipeline is not guaranteed to produce the original votes or score.

Contents

  • predictions.jsonl: exact final leaderboard predictions (2238 rows).
  • inference.py, inference.ipynb: reconstructed fresh-run workflow and a notebook wrapper using the same script.
  • training/ensemble_v9.py, training/passes/: exact merge logic and its eight historical inputs.
  • training/kaggle_cells/, training/src/: archived stage and prompt code; archive edits are disclosed.
  • training/evidence/: participant-exported notebook, original Pass 4/5 source and output logs, observed environment versions.
  • data/few_shot_examples.json: the embedded labelled examples used in the prompts; source URLs were not recorded in the code.
  • requirements.txt, ENVIRONMENT.md: minimal tested reconstruction dependency and historical environment evidence.
  • submission_manifest.json, model_manifest.json, verify_submission.py: provenance and verification.
  • REPRODUCIBILITY.md: unresolved differences, template cross-check, and verification scope.

Additional data provenance and the history of prompt/vote selection require author confirmation; absence of test gold labels in these files is not by itself proof that no test-based tuning occurred.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support