samadhitalagala commited on
Commit
ec24fb0
·
verified ·
1 Parent(s): 741aaa5

Team Nexus: inference script, final predictions, code and README

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. README.md +71 -0
  2. configs/submission_base_think_gated_sc.yaml +23 -0
  3. configs/submission_base_think_greedy.yaml +23 -0
  4. eval/__init__.py +0 -0
  5. eval/combine_cv.py +48 -0
  6. eval/common.py +115 -0
  7. eval/compare.py +45 -0
  8. eval/decide_rft.py +52 -0
  9. eval/metrics.py +116 -0
  10. eval/perm_sc.py +70 -0
  11. eval/pool_decide.py +68 -0
  12. eval/prompts.py +71 -0
  13. eval/recompute.py +34 -0
  14. eval/run_eval.py +208 -0
  15. eval/scorers.py +224 -0
  16. eval/self_consistency.py +52 -0
  17. eval/summarize.py +84 -0
  18. inference.py +141 -0
  19. inference/__init__.py +0 -0
  20. inference/check_predictions.py +73 -0
  21. inference/predict.py +238 -0
  22. predictions.jsonl +0 -0
  23. requirements.txt +12 -0
  24. training/.gitignore +20 -0
  25. training/DATA_LOG.md +41 -0
  26. training/MODEL_MANIFEST.md +52 -0
  27. training/README.md +93 -0
  28. training/configs/models.yaml +26 -0
  29. training/configs/splits/gmmlu_si_val_ids.txt +2000 -0
  30. training/configs/splits/sinhalammlu_dev_5shot_ids.txt +5 -0
  31. training/configs/splits/sinhalammlu_dev_cv5.json +1862 -0
  32. training/configs/submission.yaml +13 -0
  33. training/configs/submission_A_think_hard.yaml +15 -0
  34. training/configs/submission_base_think_gated_sc.yaml +23 -0
  35. training/configs/submission_base_think_sc_hard.yaml +22 -0
  36. training/configs/submission_lora_gmmlu_vote.yaml +13 -0
  37. training/configs/submission_medium_option_order.yaml +20 -0
  38. training/configs/submission_pool_base_medium.yaml +21 -0
  39. training/configs/submission_pool_rft2_medium.yaml +21 -0
  40. training/configs/submission_rft2_medium.yaml +26 -0
  41. training/configs/submission_rft_think_gated_sc.yaml +27 -0
  42. training/configs/submission_sub5_route.yaml +17 -0
  43. training/configs/submission_sub6_think_medhard.yaml +17 -0
  44. training/configs/submission_v2.yaml +13 -0
  45. training/configs/train/cpt_pilot.yaml +24 -0
  46. training/configs/train/cpt_v1.yaml +24 -0
  47. training/configs/train/rft_trace.yaml +23 -0
  48. training/configs/train/rft_trace2.yaml +22 -0
  49. training/configs/train/sft_gmmlu.yaml +24 -0
  50. training/configs/train/sft_lora.yaml +25 -0
README.md ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Team Nexus – Sinhala MMLU Shared Task System
2
+
3
+ ## System summary
4
+ - **Base model(s):** [`google/gemma-4-E4B-it`](https://huggingface.co/google/gemma-4-E4B-it), commit `ee0ef6023621cff504d758262d4e04895a5af4a2`, used **text-only**: the vision and audio towers are removed and every language-model weight is copied unchanged (`training/scripts/make_text_only.py` checks that the copy is exact).
5
+ - **What we did:** prompting only, with no fine-tuning, retrieval or extra data at inference. Every question is answered in Gemma 4's thinking mode with greedy decoding and up to 3,072 new tokens. We also compute a fast one-step answer: the next-token scores over the labels 1–4, averaged over 4 cyclic orders of the options. Where the fast answer disagrees with the greedy thinking answer, we sample 3 more reasoning paths (temperature 0.8, top-p 0.95, top-k 64, fixed seed 1234) and majority-vote the 4 answers, with ties going to the greedy answer. We call this *agreement-gated self-consistency*. On the test set it was triggered for 892 of 2,238 questions and changed 127 answers.
6
+ - **Total inference parameters:** **7.463B** (7,463,013,376; one model, no adapter). This is the count of the weights actually loaded, with tied embeddings counted once.
7
+ - **Extra data used for training or retrieval:** none in the final system. See "Experiments" below for data we used during development.
8
+
9
+ **Test leaderboard score (Codabench, submission ID 50):** macro average **62.93**, with Easy 63.40, Medium 55.09 and Hard 70.31.
10
+
11
+ ## Models and resources in this submission
12
+ | Repo | What it is |
13
+ |---|---|
14
+ | [`SinhalaMMLU-SharedTask/team-nexus`](https://huggingface.co/SinhalaMMLU-SharedTask/team-nexus) | Code, inference script and final predictions (this repo) |
15
+ | [`SinhalaMMLU-SharedTask/team-nexus-gemma-4-e4b-it-text`](https://huggingface.co/SinhalaMMLU-SharedTask/team-nexus-gemma-4-e4b-it-text) | Text-only Gemma 4 E4B-it: unchanged weights of `google/gemma-4-E4B-it` with the vision and audio towers removed (Apache 2.0). `inference.py` pins commit `8f686039aad1a865c9335c17874d9b870fdec766`. |
16
+
17
+ ## How to run
18
+ ```bash
19
+ pip install -r requirements.txt
20
+ python inference.py
21
+ ```
22
+ `inference.py` follows the organisers' template. Section 1 loads every `.json` file in `DATA_REPO`. Section 2 downloads the model from the repo above and runs our pipeline (`inference/predict.py` with `configs/submission_base_think_gated_sc.yaml`), the exact code that produced our Codabench file. Section 3 writes `predictions.jsonl`.
23
+
24
+ - **GPU used:** 1× NVIDIA DGX Spark (GB10 Grace Blackwell, 128 GB unified CPU/GPU memory), bf16.
25
+ - **Approximate run time on the test set:** about **11.3 hours** (40,685 s for 2,238 questions) on the GB10. Most of this is thinking-mode generation; faster GPUs need proportionally less.
26
+ - **Anything else the organizers need to know:**
27
+ - **Memory:** generation uses batches of up to 64 sequences, with a padded prompt budget of 16,384 tokens and up to 3,072 new tokens each. Plan for a GPU with **80 GB or more**, such as an A100 or H100 80 GB. A 16 GB T4 is not enough.
28
+ - **Sampling:** about 40% of questions use the self-consistency step, which *samples*. It is seeded with `torch.manual_seed(1234)` immediately before the sampled passes.
29
+ - **Reproducibility:** thinking outputs are long (hundreds to thousands of tokens) and generated in bf16 with batched, length-sorted, left-padded batches. The answers therefore depend on the hardware and on which questions share a batch. Two separate full runs on our machine are consistent with identical greedy answers. Our two final candidates share the greedy settings and differ on only 100 Easy/Medium answers, fewer than the 127 that self-consistency changed. Running a 30-question subset changes the batches, and 22 of 30 answers matched our submitted file. **Please run the full dataset with the default settings.** On a different GPU type, expect a minority of answers to differ, with a similar overall score.
30
+ - **Greedy variant:** setting `SELF_CONSISTENCY = False` at the top of `inference.py` gives a fully greedy variant with no sampling at all. That is **not** the system we submitted; we did not submit it, so it has no test score.
31
+ - **Gating:** the model repo is public and the base model is not gated, so no login is needed.
32
+
33
+ ## Files
34
+ - `inference.py` – the entry point that runs the exact pipeline behind our final Codabench submission
35
+ - `inference/predict.py`, `eval/` – the pipeline code it calls (prompting, scoring, thinking, self-consistency)
36
+ - `configs/submission_base_think_gated_sc.yaml` – the settings of the submitted system; `configs/submission_base_think_greedy.yaml` – the greedy variant
37
+ - `predictions.jsonl` – the exact file we submitted to the final leaderboard (sha256 `4bf9f86282bffd69dcbd7c178e969532e1d3cf0462abc437663986c7a8b77ce1`)
38
+ - `requirements.txt` – package versions we used (Python 3.12.3)
39
+ - `training/` – all our data-preparation, training and evaluation code and configurations from development (see below)
40
+
41
+ ## Experiments (development only; nothing below is used by the final system)
42
+ `training/` contains the full project code. The final system uses only `training/scripts/make_text_only.py`, which builds the model repo above. During development we tried the following on held-out data, and none of it beat the base model with thinking:
43
+ - LoRA and full fine-tuning on Global-MMLU `si`
44
+ - continued pre-training on Sinhala Wikipedia
45
+ - distillation from Gemma 4 31B soft labels
46
+ - reasoning-trace fine-tuning on the model's own correct reasoning
47
+ - option-order voting
48
+
49
+ Each step was decided on SinhalaMMLU dev or Global-MMLU validation subsets, never on test questions. The public data involved were:
50
+ - [CohereLabs/Global-MMLU](https://huggingface.co/datasets/CohereLabs/Global-MMLU) (`si`)
51
+ - [Sinhala Wikipedia](https://huggingface.co/datasets/wikimedia/wikipedia) (`20231101.si`)
52
+ - [FineWeb-2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2) (`sin_Sinh`)
53
+ - [NSINA](https://huggingface.co/datasets/sinhala-nlp/NSINA)
54
+ - SinhalaMMLU dev (`naist-nlp/SinhalaMMLU`; not redistributed, because of its CC BY-NC-ND licence)
55
+
56
+ We also generated a small pilot set of synthetic MCQs from Sinhala Wikipedia passages with a locally run open model (Gemma 4 31B). No closed APIs were used at any stage.
57
+
58
+ We checked that Global-MMLU does not overlap with SinhalaMMLU, using character n-gram and multilingual-embedding similarity. `training/DATA_LOG.md` and `training/MODEL_MANIFEST.md` give the details.
59
+
60
+ ## Citation
61
+ ```bibtex
62
+ @inproceedings{pramodya-etal-2025-sinhalammlu,
63
+ title = "{S}inhala{MMLU}: A Comprehensive Benchmark for Evaluating Multitask Language Understanding in {S}inhala",
64
+ author = "Pramodya, Ashmari and Nelki, Nirasha and Shalinda, Heshan and Liyanage, Chamila and Sakai, Yusuke and
65
+ Pushpananda, Randil and Weerasinghe, Ruvan and Kamigaito, Hidetaka and Watanabe, Taro",
66
+ booktitle = "Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing",
67
+ year = "2025",
68
+ pages = "32931--32949",
69
+ url = "https://aclanthology.org/2025.emnlp-main.1673/"
70
+ }
71
+ ```
configs/submission_base_think_gated_sc.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Final candidate B (21 Oct): base Gemma 4 E4B, text-only (7.463B, no adapter), thinking for every question.
2
+ # Agreement-gated self-consistency on all levels: where the one-step answer disagrees with greedy thinking, add 3 sampled
3
+ # reasoning paths and take the majority vote (ties -> greedy). Evidence (dev/validation only): full dev, base thinking 63.0 vs
4
+ # model A vote 57.2 (+5.8 [+3.6, +8.0]); pooled proxies, gated self-consistency +2.70 [+1.18, +4.23] on 43% of questions.
5
+ model: models/gemma-4-E4B-it-text
6
+ lang: en
7
+ chat: true
8
+ method: logit # fast path, used only if a thinking answer cannot be read
9
+ n_perms: 4
10
+ perm_mode: cyclic
11
+ seed: 1234
12
+ dtype: bfloat16
13
+ gpu_mem_gb: 100
14
+ token_budget: 32768
15
+ max_batch: 64
16
+ thinking_levels: [easy, medium, hard]
17
+ think_max_new_tokens: 3072
18
+ sc_levels: [easy, medium, hard]
19
+ sc_gate: disagree
20
+ sc_samples: 3
21
+ sc_temperature: 0.8
22
+ sc_top_p: 0.95
23
+ sc_top_k: 64
configs/submission_base_think_greedy.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Fully greedy variant (NOT the submitted system): thinking for every question, no sampling, no self-consistency.
2
+ # Final candidate B (21 Oct): base Gemma 4 E4B, text-only (7.463B, no adapter), thinking for every question.
3
+ # Agreement-gated self-consistency on all levels: where the one-step answer disagrees with greedy thinking, add 3 sampled
4
+ # reasoning paths and take the majority vote (ties -> greedy). Evidence (dev/validation only): full dev, base thinking 63.0 vs
5
+ # model A vote 57.2 (+5.8 [+3.6, +8.0]); pooled proxies, gated self-consistency +2.70 [+1.18, +4.23] on 43% of questions.
6
+ model: models/gemma-4-E4B-it-text
7
+ lang: en
8
+ chat: true
9
+ method: logit # fast path, used only if a thinking answer cannot be read
10
+ n_perms: 4
11
+ perm_mode: cyclic
12
+ seed: 1234
13
+ dtype: bfloat16
14
+ gpu_mem_gb: 100
15
+ token_budget: 32768
16
+ max_batch: 64
17
+ thinking_levels: [easy, medium, hard]
18
+ think_max_new_tokens: 3072
19
+ sc_levels: []
20
+ sc_samples: 0
21
+ sc_temperature: 0.8
22
+ sc_top_p: 0.95
23
+ sc_top_k: 64
eval/__init__.py ADDED
File without changes
eval/combine_cv.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Combine k-fold runs (each scored only on its held-out fold) into one run over the full dev set.
2
+
3
+ python -m eval.combine_cv --runs results/exp_devcv_lora_f* --name exp_devcv_lora_all
4
+
5
+ Writes results/<name>/{metrics.json, report.md, predictions.jsonl} in the usual layout, so eval.summarize can put it
6
+ next to the zero-shot baseline. Fails if a question is missing or scored twice.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import glob
12
+ import json
13
+ from pathlib import Path
14
+
15
+ from .common import ROOT, read_jsonl, write_jsonl
16
+ from .metrics import markdown_report
17
+ from .run_eval import metrics_by_dataset
18
+
19
+
20
+ def main() -> None:
21
+ ap = argparse.ArgumentParser()
22
+ ap.add_argument("--runs", nargs="+", required=True)
23
+ ap.add_argument("--name", required=True)
24
+ ap.add_argument("--data", default="data/processed/sinhalammlu_dev.jsonl")
25
+ args = ap.parse_args()
26
+ dirs = sorted(Path(d) for pat in args.runs for d in glob.glob(pat))
27
+ records, first = [], None
28
+ for d in dirs:
29
+ records += read_jsonl(d / "predictions.jsonl")
30
+ first = first or json.loads((d / "metrics.json").read_text())
31
+ items = {r["uid"]: r for r in read_jsonl(ROOT / args.data)}
32
+ scored = [r["uid"] for r in records if r["perm_k"] == 0]
33
+ assert len(scored) == len(set(scored)), "a question was scored by more than one fold"
34
+ assert set(scored) == set(items), f"{len(set(items) - set(scored))} dev questions were not scored"
35
+ out = ROOT / "results" / args.name
36
+ out.mkdir(parents=True, exist_ok=True)
37
+ metrics = {"by_dataset": metrics_by_dataset(items, records),
38
+ "run": first["run"] | {"run_name": args.name, "combined_from": [d.name for d in dirs]}}
39
+ write_jsonl(out / "predictions.jsonl", records)
40
+ (out / "metrics.json").write_text(json.dumps(metrics, indent=2, ensure_ascii=False))
41
+ (out / "report.md").write_text("\n".join(markdown_report(f"{args.name} / {k}", m)
42
+ for k, m in metrics["by_dataset"].items()))
43
+ o = metrics["by_dataset"]["sinhalammlu"]["overall"]
44
+ print(f"{args.name}: dev acc={o['acc']:.4f} vote={o['acc_vote']:.4f} over {o['n']} questions from {len(dirs)} folds")
45
+
46
+
47
+ if __name__ == "__main__":
48
+ main()
eval/common.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Shared helpers: secrets, seeding, JSONL I/O, environment fingerprint."""
2
+ from __future__ import annotations
3
+
4
+ import json
5
+ import os
6
+ import platform
7
+ import random
8
+ import subprocess
9
+ import sys
10
+ from pathlib import Path
11
+
12
+ ROOT = Path(__file__).resolve().parents[1]
13
+
14
+
15
+ def ensure_python_headers() -> None:
16
+ """Triton (torch.compile, Liger, flash-linear-attention) compiles helpers against Python.h. This machine has
17
+ no python3.12-dev and no sudo, so the headers are unpacked to ~/.local/pydev (README, setup). Point gcc at
18
+ them when the system copy is missing; a no-op on machines that have the headers."""
19
+ import sysconfig
20
+
21
+ if (Path(sysconfig.get_paths()["include"]) / "Python.h").exists():
22
+ return
23
+ local = Path.home() / ".local" / "pydev" / "root" / "usr" / "include"
24
+ if (local / f"python{sys.version_info.major}.{sys.version_info.minor}" / "Python.h").exists():
25
+ inc = [str(local / f"python{sys.version_info.major}.{sys.version_info.minor}"), str(local)]
26
+ os.environ["CPATH"] = os.pathsep.join(inc + [p for p in os.environ.get("CPATH", "").split(os.pathsep) if p])
27
+
28
+
29
+ def load_env(path: Path = ROOT / ".env") -> None:
30
+ """Read KEY=VALUE lines from .env; map hf_token -> HF_TOKEN for huggingface_hub."""
31
+ ensure_python_headers()
32
+ if not path.exists():
33
+ return
34
+ for line in path.read_text().splitlines():
35
+ line = line.strip()
36
+ if not line or line.startswith("#") or "=" not in line:
37
+ continue
38
+ key, val = (s.strip().strip('"').strip("'") for s in line.split("=", 1))
39
+ if key.lower() in ("hf_token", "hugging_face_hub_token"):
40
+ key = "HF_TOKEN"
41
+ os.environ.setdefault(key, val)
42
+
43
+
44
+ def set_seed(seed: int) -> None:
45
+ random.seed(seed)
46
+ os.environ["PYTHONHASHSEED"] = str(seed)
47
+ try:
48
+ import numpy as np
49
+
50
+ np.random.seed(seed)
51
+ except ImportError:
52
+ pass
53
+ try:
54
+ import torch
55
+
56
+ torch.manual_seed(seed)
57
+ torch.cuda.manual_seed_all(seed)
58
+ torch.backends.cuda.matmul.allow_tf32 = False
59
+ torch.backends.cudnn.allow_tf32 = False
60
+ except ImportError:
61
+ pass
62
+
63
+
64
+ def cap_gpu_memory(gb: float | None = None) -> None:
65
+ """Limit PyTorch's CUDA allocator (default 100 GB, env SMMLU_GPU_MEM_GB).
66
+
67
+ The DGX Spark shares one 128 GB pool between CPU and GPU: an unbounded GPU job does not get a CUDA
68
+ out-of-memory error, it starves the system and the kernel OOM killer takes down the desktop session and
69
+ tmux (10 Oct, 11:15). With the cap, the job fails with torch.OutOfMemoryError and everything else survives.
70
+ """
71
+ import torch
72
+
73
+ if not torch.cuda.is_available():
74
+ return
75
+ gb = float(gb or os.environ.get("SMMLU_GPU_MEM_GB", 100))
76
+ total = torch.cuda.get_device_properties(0).total_memory
77
+ torch.cuda.set_per_process_memory_fraction(min(gb * 1024**3 / total, 1.0), 0)
78
+
79
+
80
+ def read_jsonl(path: str | Path) -> list[dict]:
81
+ with open(path, encoding="utf-8") as f:
82
+ return [json.loads(line) for line in f if line.strip()]
83
+
84
+
85
+ def write_jsonl(path: str | Path, rows) -> None:
86
+ Path(path).parent.mkdir(parents=True, exist_ok=True)
87
+ with open(path, "w", encoding="utf-8") as f:
88
+ for r in rows:
89
+ f.write(json.dumps(r, ensure_ascii=False) + "\n")
90
+
91
+
92
+ def env_fingerprint() -> dict:
93
+ """Versions and code revision, stored with every run for reproducibility."""
94
+ info = {"python": platform.python_version(), "machine": platform.machine()}
95
+ for mod in ("torch", "transformers", "datasets", "peft", "accelerate", "huggingface_hub"):
96
+ try:
97
+ info[mod] = __import__(mod).__version__
98
+ except ImportError:
99
+ pass
100
+ try:
101
+ import torch
102
+
103
+ if torch.cuda.is_available():
104
+ info["gpu"] = torch.cuda.get_device_name(0)
105
+ info["cuda"] = torch.version.cuda
106
+ except ImportError:
107
+ pass
108
+ try:
109
+ rev = subprocess.run(["git", "rev-parse", "HEAD"], cwd=ROOT, capture_output=True, text=True)
110
+ dirty = subprocess.run(["git", "status", "--porcelain"], cwd=ROOT, capture_output=True, text=True)
111
+ info["git_commit"] = rev.stdout.strip() or None
112
+ info["git_dirty"] = bool(dirty.stdout.strip())
113
+ except FileNotFoundError:
114
+ pass
115
+ return info
eval/compare.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Paired comparison of runs on the same questions (bootstrap 95% CI of the accuracy difference).
2
+
3
+ python -m eval.compare --base results/exp_sft_gmmlu_lora_logit --runs results/exp_x results/exp_y [--dataset sinhalammlu]
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import argparse
8
+ from pathlib import Path
9
+
10
+ import numpy as np
11
+
12
+ from .common import read_jsonl
13
+ from .metrics import aggregate_items
14
+
15
+
16
+ def correctness(run: Path, dataset: str) -> tuple[dict, dict]:
17
+ recs = read_jsonl(run / "predictions.jsonl")
18
+ items = {r["uid"]: {"options": r["perm"], "answer": r["gold"]} for r in recs}
19
+ agg = aggregate_items(items, recs)
20
+ keep = {u for u in agg if u.startswith({"sinhalammlu": "smmlu/", "gmmlu_si": "gmmlu_si/"}.get(dataset, ""))}
21
+ return ({u: agg[u]["pred"] == agg[u]["gold"] for u in keep}, {u: agg[u]["vote"] == agg[u]["gold"] for u in keep})
22
+
23
+
24
+ def main() -> None:
25
+ ap = argparse.ArgumentParser()
26
+ ap.add_argument("--base", required=True, type=Path)
27
+ ap.add_argument("--runs", nargs="+", required=True, type=Path)
28
+ ap.add_argument("--dataset", default="sinhalammlu", choices=["sinhalammlu", "gmmlu_si"])
29
+ args = ap.parse_args()
30
+ base = correctness(args.base, args.dataset)
31
+ rng = np.random.default_rng(0)
32
+ for run in args.runs:
33
+ c = correctness(run, args.dataset)
34
+ for k, label in ((0, "orig"), (1, "vote")):
35
+ u = sorted(set(base[k]) & set(c[k]))
36
+ if not u:
37
+ continue
38
+ d = np.array([c[k][x] - base[k][x] for x in u], dtype=float)
39
+ lo, hi = np.percentile([d[rng.integers(0, len(d), len(d))].mean() for _ in range(5000)], [2.5, 97.5])
40
+ print(f"{run.name:40s} {label}: {100 * np.mean([c[k][x] for x in u]):5.1f} vs {100 * np.mean([base[k][x] for x in u]):5.1f}"
41
+ f" diff {100 * d.mean():+.2f} [{100 * lo:+.2f}, {100 * hi:+.2f}] n={len(u)}")
42
+
43
+
44
+ if __name__ == "__main__":
45
+ main()
eval/decide_rft.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Go / no-go for the reasoning-trace model, decided by a rule fixed in advance (before any result is seen).
2
+
3
+ Compares greedy thinking of the trained model (with its adapter) with greedy thinking of the base model on the SAME held-out
4
+ questions: the 400-question SinhalaMMLU dev sample (never used for traces or training) and the 300-question Global-MMLU
5
+ non-academic proxy (never used). Paired differences are pooled over both sets.
6
+
7
+ GO if pooled difference >= +1.5 points AND neither set is worse than -3.0 points. Writes results/rft_decision.json.
8
+
9
+ python -m eval.decide_rft --pairs think_base_smmlu_dev_sample400:think_rft_dev400:sinhalammlu \
10
+ think_base_gmmlu_si_val_nonacademic300:think_rft_nonacademic300:gmmlu_si
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import argparse
15
+ import json
16
+ from pathlib import Path
17
+
18
+ import numpy as np
19
+
20
+ from .common import ROOT
21
+ from .compare import correctness
22
+
23
+ MIN_POOLED, MIN_EACH = 1.5, -3.0
24
+
25
+
26
+ def main() -> None:
27
+ ap = argparse.ArgumentParser()
28
+ ap.add_argument("--pairs", nargs="+", required=True, help="base_run:new_run:dataset")
29
+ ap.add_argument("--out", default="rft_decision.json", help="file name under results/")
30
+ args = ap.parse_args()
31
+ diffs, per = [], {}
32
+ for pair in args.pairs:
33
+ b, n, ds = pair.split(":")
34
+ base, new = correctness(ROOT / "results" / b, ds)[0], correctness(ROOT / "results" / n, ds)[0]
35
+ uids = sorted(set(base) & set(new))
36
+ d = np.array([new[u] - base[u] for u in uids], dtype=float)
37
+ per[n] = {"n": len(uids), "base": 100 * float(np.mean([base[u] for u in uids])),
38
+ "new": 100 * float(np.mean([new[u] for u in uids])), "diff": 100 * float(d.mean())}
39
+ diffs.append(d)
40
+ pooled = np.concatenate(diffs)
41
+ rng = np.random.default_rng(0)
42
+ lo, hi = np.percentile([pooled[rng.integers(0, len(pooled), len(pooled))].mean() for _ in range(5000)], [2.5, 97.5])
43
+ go = bool(100 * pooled.mean() >= MIN_POOLED and all(v["diff"] >= MIN_EACH for v in per.values()))
44
+ out = {"rule": f"pooled diff >= {MIN_POOLED} and each set >= {MIN_EACH}", "per_set": per, "n": len(pooled),
45
+ "pooled_diff": 100 * float(pooled.mean()), "ci95": [100 * float(lo), 100 * float(hi)], "go": go}
46
+ (ROOT / "results" / args.out).write_text(json.dumps(out, indent=2))
47
+ print(json.dumps(out, indent=2))
48
+ print("DECISION:", "GO" if go else "NO-GO")
49
+
50
+
51
+ if __name__ == "__main__":
52
+ main()
eval/metrics.py ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Aggregate per-(question, permutation) records into accuracy tables and position-bias diagnostics."""
2
+ from __future__ import annotations
3
+
4
+ from collections import Counter, defaultdict
5
+ from statistics import mean, pstdev
6
+
7
+ from .scorers import wilson
8
+
9
+ GROUP_KEYS = ("dataset", "category", "subject", "level", "grade", "cultural_sensitivity")
10
+
11
+
12
+ def group_value(item: dict, key: str):
13
+ return item.get(key, item.get("meta", {}).get(key))
14
+
15
+
16
+ def aggregate_items(items: dict[str, dict], records: list[dict]) -> dict[str, dict]:
17
+ """Combine permutations per question: mean of option probabilities (in original order) -> vote."""
18
+ by_uid = defaultdict(list)
19
+ for r in records:
20
+ by_uid[r["uid"]].append(r)
21
+ out = {}
22
+ for uid, rs in by_uid.items():
23
+ n = len(items[uid]["options"])
24
+ rs.sort(key=lambda r: r["perm_k"])
25
+ mean_probs = [mean(r["probs_orig"][j] for r in rs) for j in range(n)]
26
+ if any(sum(r["probs_orig"]) > 0 for r in rs):
27
+ vote = max(range(n), key=lambda j: (mean_probs[j], -j)) + 1
28
+ else:
29
+ vote = None
30
+ preds = [r["pred_orig"] for r in rs]
31
+ out[uid] = {
32
+ "gold": items[uid].get("answer"), "pred": rs[0]["pred_orig"], "vote": vote,
33
+ "consistent": len(set(preds)) == 1 and preds[0] is not None,
34
+ "mean_probs": mean_probs,
35
+ }
36
+ return out
37
+
38
+
39
+ def _acc_block(uids: list[str], agg: dict, records_by_perm: dict[int, dict[str, dict]]) -> dict:
40
+ n = len(uids)
41
+ k = sum(agg[u]["pred"] == agg[u]["gold"] for u in uids)
42
+ kv = sum(agg[u]["vote"] == agg[u]["gold"] for u in uids)
43
+ per_perm = [sum(rp[u]["correct"] for u in uids) / n for rp in records_by_perm.values()]
44
+ lo, hi = wilson(k, n)
45
+ return {
46
+ "n": n, "acc": k / n, "ci95": [lo, hi], "acc_vote": kv / n,
47
+ "acc_perm_mean": mean(per_perm), "acc_perm_std": pstdev(per_perm) if len(per_perm) > 1 else 0.0,
48
+ "consistency": sum(agg[u]["consistent"] for u in uids) / n,
49
+ }
50
+
51
+
52
+ def compute_metrics(items: dict[str, dict], records: list[dict]) -> dict:
53
+ agg = aggregate_items(items, records)
54
+ records_by_perm: dict[int, dict[str, dict]] = defaultdict(dict)
55
+ for r in records:
56
+ records_by_perm[r["perm_k"]][r["uid"]] = r
57
+ uids = sorted(agg)
58
+
59
+ m = {"overall": _acc_block(uids, agg, records_by_perm), "groups": {}}
60
+ for key in GROUP_KEYS:
61
+ groups = defaultdict(list)
62
+ for u in uids:
63
+ v = group_value(items[u], key)
64
+ if v is not None:
65
+ groups[str(v)].append(u)
66
+ if len(groups) > 1 or (key in ("dataset", "subject", "category") and groups):
67
+ m["groups"][key] = {g: _acc_block(us, agg, records_by_perm) for g, us in sorted(groups.items())}
68
+ # Macro average over subjects (each subject weighted equally)
69
+ if "subject" in m["groups"]:
70
+ m["overall"]["acc_macro_subject"] = mean(b["acc"] for b in m["groups"]["subject"].values())
71
+
72
+ # Position bias over all (question, permutation) records
73
+ n_opt = Counter(len(items[r["uid"]]["options"]) for r in records).most_common(1)[0][0]
74
+ rs = [r for r in records if len(items[r["uid"]]["options"]) == n_opt]
75
+ pred_pos = Counter(r["pred_display"] for r in rs)
76
+ gold_pos = Counter(r["gold_display"] for r in rs)
77
+ acc_by_gold = {p: mean(r["correct"] for r in rs if r["gold_display"] == p) for p in sorted(gold_pos)}
78
+ m["position_bias"] = {
79
+ "n_options": n_opt,
80
+ "pred_dist": {str(p): pred_pos.get(p, 0) / len(rs) for p in range(1, n_opt + 1)},
81
+ "pred_none": pred_pos.get(None, 0) / len(rs),
82
+ "gold_dist": {str(p): gold_pos.get(p, 0) / len(rs) for p in range(1, n_opt + 1)},
83
+ "acc_by_gold_position": {str(p): a for p, a in acc_by_gold.items()},
84
+ }
85
+ if any("label_mass" in r for r in records):
86
+ m["overall"]["label_mass_mean"] = mean(r["label_mass"] for r in records if "label_mass" in r)
87
+ if any(r.get("method") == "generate" for r in records):
88
+ m["overall"]["parse_fail_rate"] = mean(r["pred_display"] is None for r in records)
89
+ return m
90
+
91
+
92
+ def markdown_report(name: str, m: dict) -> str:
93
+ o = m["overall"]
94
+ lines = [f"# {name}", "",
95
+ f"**Accuracy (original order): {o['acc']:.4f}** "
96
+ f"[95% CI {o['ci95'][0]:.3f}-{o['ci95'][1]:.3f}], n={o['n']} ",
97
+ f"Permutation-vote accuracy: {o['acc_vote']:.4f} ",
98
+ f"Mean ± std over permutations: {o['acc_perm_mean']:.4f} ± {o['acc_perm_std']:.4f} ",
99
+ f"Consistency across permutations: {o['consistency']:.3f} "]
100
+ if "acc_macro_subject" in o:
101
+ lines.append(f"Macro average over subjects: {o['acc_macro_subject']:.4f} ")
102
+ if "label_mass_mean" in o:
103
+ lines.append(f"Mean probability mass on label tokens: {o['label_mass_mean']:.3f} ")
104
+ if "parse_fail_rate" in o:
105
+ lines.append(f"Unparseable generations: {o['parse_fail_rate']:.3f} ")
106
+ for key, groups in m["groups"].items():
107
+ lines += ["", f"## By {key}", "", "| group | n | acc | 95% CI | vote acc | consistency |", "|---|---:|---:|---|---:|---:|"]
108
+ for g, b in groups.items():
109
+ lines.append(f"| {g} | {b['n']} | {b['acc']:.3f} | {b['ci95'][0]:.2f}-{b['ci95'][1]:.2f} | "
110
+ f"{b['acc_vote']:.3f} | {b['consistency']:.2f} |")
111
+ pb = m["position_bias"]
112
+ lines += ["", "## Position bias (all permutations)", "", "| position | predicted | gold | acc when gold here |", "|---|---:|---:|---:|"]
113
+ for p in pb["pred_dist"]:
114
+ lines.append(f"| {p} | {pb['pred_dist'][p]:.3f} | {pb['gold_dist'][p]:.3f} | "
115
+ f"{pb['acc_by_gold_position'].get(p, float('nan')):.3f} |")
116
+ return "\n".join(lines) + "\n"
eval/perm_sc.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Option-order self-consistency validation (decision for the Medium run).
2
+
3
+ Prior answer = the current pipeline's answer on the stand-in questions: majority vote of greedy thinking + 3 sampled paths
4
+ (ties -> greedy), the analogue of candidate B's final answer. Candidate method: add the answers from K re-orderings of the
5
+ options (thinking each time, mapped back to the original numbering) and vote again (ties -> prior).
6
+
7
+ GO if the candidate beats the prior by at least +1.0 point on the stand-in. Writes results/perm_decision.json.
8
+
9
+ python -m eval.perm_sc --greedy results/think_base_gmmlu_si_val_nonacademic300 --samples results/sc3_base_nonacademic \
10
+ --perms results/permthink_nonacademic300
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import argparse
15
+ import json
16
+ from collections import Counter, defaultdict
17
+ from pathlib import Path
18
+
19
+ import numpy as np
20
+
21
+ from .common import ROOT, read_jsonl
22
+
23
+ MIN_GAIN = 1.0
24
+
25
+
26
+ def vote(ballots: list, first_wins: bool = True):
27
+ c = Counter(b for b in ballots if b)
28
+ if not c:
29
+ return None
30
+ top = max(c.values())
31
+ w = [a for a, n in c.items() if n == top]
32
+ return ballots[0] if ballots[0] in w else min(w)
33
+
34
+
35
+ def main() -> None:
36
+ ap = argparse.ArgumentParser()
37
+ ap.add_argument("--greedy", required=True, type=Path)
38
+ ap.add_argument("--samples", required=True, type=Path)
39
+ ap.add_argument("--perms", required=True, type=Path)
40
+ args = ap.parse_args()
41
+ g = {r["uid"]: r for r in read_jsonl(args.greedy / "predictions.jsonl") if r["perm_k"] == 0}
42
+ s, p = defaultdict(list), defaultdict(list)
43
+ for r in read_jsonl(args.samples / "predictions.jsonl"):
44
+ s[r["uid"]].append(r["pred_orig"])
45
+ for r in read_jsonl(args.perms / "predictions.jsonl"):
46
+ if r["perm_k"] >= 1:
47
+ p[r["uid"]].append(r["pred_orig"])
48
+ uids = sorted(set(g) & set(s) & set(p))
49
+ gold = {u: g[u]["gold"] for u in uids}
50
+ prior = {u: vote([g[u]["pred_orig"]] + s[u]) for u in uids}
51
+ cand = {u: vote([prior[u]] + p[u]) for u in uids}
52
+ perms_only = {u: vote([g[u]["pred_orig"]] + p[u]) for u in uids}
53
+ acc = lambda m: np.array([m[u] == gold[u] for u in uids], dtype=float) # noqa: E731
54
+ a_g, a_prior, a_cand, a_perm = acc({u: g[u]["pred_orig"] for u in uids}), acc(prior), acc(cand), acc(perms_only)
55
+ d = a_cand - a_prior
56
+ rng = np.random.default_rng(0)
57
+ lo, hi = np.percentile([d[rng.integers(0, len(d), len(d))].mean() for _ in range(5000)], [2.5, 97.5])
58
+ singles = [100 * float(np.mean([p[u][i] == gold[u] for u in uids])) for i in range(min(len(p[u]) for u in uids))]
59
+ out = {"n": len(uids), "greedy": 100 * a_g.mean(), "prior_vote_greedy_plus_samples": 100 * a_prior.mean(),
60
+ "single_reordered_runs": singles, "greedy_plus_reorders_vote": 100 * a_perm.mean(),
61
+ "candidate_prior_plus_reorders": 100 * a_cand.mean(), "gain_vs_prior": 100 * float(d.mean()),
62
+ "ci95": [100 * float(lo), 100 * float(hi)], "rule": f"candidate - prior >= {MIN_GAIN}",
63
+ "go": bool(100 * d.mean() >= MIN_GAIN)}
64
+ (ROOT / "results" / "perm_decision.json").write_text(json.dumps(out, indent=2))
65
+ print(json.dumps(out, indent=2))
66
+ print("DECISION:", "GO" if out["go"] else "NO-GO")
67
+
68
+
69
+ if __name__ == "__main__":
70
+ main()
eval/pool_decide.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Go / no-go for cross-model pooling, by a rule fixed (27 Oct, before any of these runs existed) on FRESH stand-in questions
2
+ (gmmlu_si_val_nonacademic_fresh300: never used for any earlier decision, training or trace generation).
3
+
4
+ Baseline = candidate B's method: greedy thinking of the base model; where the fast one-step answer (base model, 4-order logit
5
+ vote) disagrees with it, vote over greedy + 3 sampled paths (ties -> greedy).
6
+ Candidate = vote over base greedy + 3 base samples + RFT2 greedy + 3 RFT2 samples, on every question (ties -> base greedy).
7
+
8
+ GO if candidate - baseline >= +1.0 point. Writes results/pool_decision.json.
9
+
10
+ python -m eval.pool_decide --fast pool_fast_base_fresh300 --base-greedy pool_think_base_fresh300 \
11
+ --base-samples pool_sc3_base_fresh300 --rft-greedy pool_think_rft2_fresh300 --rft-samples pool_sc3_rft2_fresh300
12
+ """
13
+ from __future__ import annotations
14
+
15
+ import argparse
16
+ import json
17
+ from collections import defaultdict
18
+
19
+ import numpy as np
20
+
21
+ from .common import ROOT, read_jsonl
22
+ from .perm_sc import vote
23
+
24
+ MIN_GAIN = 1.0
25
+
26
+
27
+ def main() -> None:
28
+ ap = argparse.ArgumentParser()
29
+ for a in ("fast", "base-greedy", "base-samples", "rft-greedy", "rft-samples"):
30
+ ap.add_argument(f"--{a}", required=True)
31
+ args = ap.parse_args()
32
+
33
+ def runs(name: str) -> tuple[dict, dict]:
34
+ preds, probs = defaultdict(list), defaultdict(lambda: np.zeros(4))
35
+ for r in read_jsonl(ROOT / "results" / name / "predictions.jsonl"):
36
+ preds[r["uid"]].append(r["pred_orig"])
37
+ probs[r["uid"]][: len(r["probs_orig"])] += r["probs_orig"]
38
+ return preds, probs
39
+
40
+ _, fast = runs(args.fast)
41
+ bg, _ = runs(args.base_greedy)
42
+ bs, _ = runs(args.base_samples)
43
+ rg, _ = runs(args.rft_greedy)
44
+ rs, _ = runs(args.rft_samples)
45
+ gold = {r["uid"]: r["gold"] for r in read_jsonl(ROOT / "results" / args.base_greedy / "predictions.jsonl")}
46
+ uids = sorted(set(bg) & set(bs) & set(rg) & set(rs) & set(fast))
47
+ gated = {u: int(fast[u].argmax()) + 1 != bg[u][0] for u in uids}
48
+ baseline = {u: vote([bg[u][0]] + (bs[u] if gated[u] else [])) for u in uids}
49
+ cand = {u: vote([bg[u][0]] + bs[u] + [rg[u][0]] + rs[u]) for u in uids}
50
+ acc = lambda m: np.array([m[u] == gold[u] for u in uids], dtype=float) # noqa: E731
51
+ d = acc(cand) - acc(baseline)
52
+ rng = np.random.default_rng(0)
53
+ lo, hi = np.percentile([d[rng.integers(0, len(d), len(d))].mean() for _ in range(5000)], [2.5, 97.5])
54
+ out = {"n": len(uids), "gated_fraction": float(np.mean(list(gated.values()))),
55
+ "base_greedy": 100 * float(acc({u: bg[u][0] for u in uids}).mean()),
56
+ "rft2_greedy": 100 * float(acc({u: rg[u][0] for u in uids}).mean()),
57
+ "base_vote_all4": 100 * float(acc({u: vote([bg[u][0]] + bs[u]) for u in uids}).mean()),
58
+ "rft2_vote_all4": 100 * float(acc({u: vote([rg[u][0]] + rs[u]) for u in uids}).mean()),
59
+ "baseline_B": 100 * float(acc(baseline).mean()), "candidate_pooled8": 100 * float(acc(cand).mean()),
60
+ "gain": 100 * float(d.mean()), "ci95": [100 * float(lo), 100 * float(hi)],
61
+ "rule": f"candidate - baseline >= {MIN_GAIN}", "go": bool(100 * d.mean() >= MIN_GAIN)}
62
+ (ROOT / "results" / "pool_decision.json").write_text(json.dumps(out, indent=2))
63
+ print(json.dumps(out, indent=2))
64
+ print("DECISION:", "GO" if out["go"] else "NO-GO")
65
+
66
+
67
+ if __name__ == "__main__":
68
+ main()
eval/prompts.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Prompt construction. Options are numbered 1..N because Codabench answers are digits ("1".."4").
2
+
3
+ Every model gets the same template text; only the wrapping differs (chat template vs raw text).
4
+ Few-shot examples are a fixed list, identical for every question (shared-task rule).
5
+ """
6
+ from __future__ import annotations
7
+
8
+ TEMPLATES = {
9
+ "en": {
10
+ "header": "The following is a multiple choice question about {subject}. "
11
+ "Reply with only the number (1-{n}) of the correct answer.",
12
+ "answer": "Answer:",
13
+ },
14
+ # Sinhala wording should be reviewed by a native speaker.
15
+ "si": {
16
+ "header": "පහත දැක්වෙන්නේ {subject} පිළිබඳ බහුවරණ ප්‍රශ්නයකි. "
17
+ "නිවැරදි පිළිතුරේ අංකය (1-{n}) පමණක් ලියන්න.",
18
+ "answer": "පිළිතුර:",
19
+ },
20
+ }
21
+
22
+
23
+ def subject_name(item: dict, lang: str) -> str:
24
+ if lang == "si" and item.get("meta", {}).get("subject_original"):
25
+ return item["meta"]["subject_original"]
26
+ return item["subject"].replace("_", " ")
27
+
28
+
29
+ def question_block(question: str, options: list[str]) -> str:
30
+ lines = [question] + [f"{i}. {opt}" for i, opt in enumerate(options, 1)]
31
+ return "\n".join(lines)
32
+
33
+
34
+ def user_text(item: dict, options: list[str], lang: str) -> str:
35
+ t = TEMPLATES[lang]
36
+ header = t["header"].format(subject=subject_name(item, lang), n=len(options))
37
+ return f"{header}\n\n{question_block(item['question'], options)}"
38
+
39
+
40
+ class PromptBuilder:
41
+ def __init__(self, tokenizer, lang: str = "en", chat: bool = True,
42
+ fewshot: list[dict] | None = None, answer_prefix: str = "",
43
+ chat_kwargs: dict | None = None):
44
+ self.tok, self.lang, self.chat = tokenizer, lang, chat
45
+ self.fewshot = fewshot or []
46
+ self.answer_prefix = answer_prefix
47
+ self.chat_kwargs = {"enable_thinking": False, **(chat_kwargs or {})}
48
+
49
+ @property
50
+ def add_special_tokens(self) -> bool:
51
+ # Chat templates already insert BOS; raw prompts need the tokenizer to add it.
52
+ return not self.chat
53
+
54
+ def mcq(self, item: dict, options: list[str]) -> str:
55
+ """Prompt whose next token should be the answer number."""
56
+ ans = TEMPLATES[self.lang]["answer"]
57
+ if self.chat:
58
+ msgs = []
59
+ for ex in self.fewshot:
60
+ msgs.append({"role": "user", "content": user_text(ex, ex["options"], self.lang)})
61
+ msgs.append({"role": "assistant", "content": str(ex["answer"])})
62
+ msgs.append({"role": "user", "content": user_text(item, options, self.lang)})
63
+ prompt = self.tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True,
64
+ **self.chat_kwargs)
65
+ return prompt + self.answer_prefix
66
+ shots = [f"{user_text(ex, ex['options'], self.lang)}\n{ans} {ex['answer']}" for ex in self.fewshot]
67
+ return "\n\n".join(shots + [f"{user_text(item, options, self.lang)}\n{ans}"])
68
+
69
+ def cloze_context(self, item: dict) -> str:
70
+ """Context for option-likelihood scoring: question only, options not listed."""
71
+ return f"{item['question']}\n{TEMPLATES[self.lang]['answer']}"
eval/recompute.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Recompute metrics.json / report.md of finished runs from their saved predictions (no model needed).
2
+ Use after changing data grouping or metrics code. Usage: python -m eval.recompute results/base_*
3
+ """
4
+ from __future__ import annotations
5
+
6
+ import json
7
+ import sys
8
+ from pathlib import Path
9
+
10
+ from .common import read_jsonl
11
+ from .metrics import markdown_report
12
+ from .run_eval import metrics_by_dataset, resolve_data
13
+
14
+
15
+ def main() -> None:
16
+ for d in map(Path, sys.argv[1:]):
17
+ if not (d / "metrics.json").exists():
18
+ continue
19
+ old = json.loads((d / "metrics.json").read_text())
20
+ records = read_jsonl(d / "predictions.jsonl")
21
+ uids = {r["uid"] for r in records}
22
+ items = {r["uid"]: r for name in old["run"]["args"]["data"] for r in read_jsonl(resolve_data(name)) if r["uid"] in uids}
23
+ missing = uids - items.keys()
24
+ if missing:
25
+ print(f"{d.name}: {len(missing)} predicted uids not in current data, skipped")
26
+ continue
27
+ new = {"by_dataset": metrics_by_dataset(items, records), "run": old["run"]}
28
+ (d / "metrics.json").write_text(json.dumps(new, indent=2, ensure_ascii=False))
29
+ (d / "report.md").write_text("\n".join(markdown_report(f"{d.name} / {k}", m) for k, m in new["by_dataset"].items()))
30
+ print(f"{d.name}: recomputed")
31
+
32
+
33
+ if __name__ == "__main__":
34
+ main()
eval/run_eval.py ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Evaluate one model on one or more processed MCQ files.
2
+
3
+ Example:
4
+ python -m eval.run_eval --model Qwen/Qwen3-4B-Instruct-2507 --data sinhalammlu_dev gmmlu_si_val \
5
+ --method logit --n-perms 4 --run-name qwen3-4b-inst_logit
6
+
7
+ Outputs results/<run-name>/{config.json, predictions.jsonl, metrics.json, report.md}
8
+ and, with --write-submission, a Codabench-format predictions.zip per dataset.
9
+ """
10
+ from __future__ import annotations
11
+
12
+ import argparse
13
+ import json
14
+ import random
15
+ import re
16
+ import time
17
+ import zipfile
18
+ from pathlib import Path
19
+
20
+ import yaml
21
+
22
+ from .common import ROOT, cap_gpu_memory, env_fingerprint, load_env, read_jsonl, set_seed, write_jsonl
23
+ from .metrics import compute_metrics, markdown_report
24
+ from .prompts import PromptBuilder, user_text
25
+
26
+ PROCESSED = ROOT / "data" / "processed"
27
+ BASE_NAME = re.compile(r"(-base|-pt)$|^google/gemma-4-e[24]b$", re.I)
28
+
29
+
30
+ def make_perm(n: int, k: int, mode: str, seed: int, uid: str) -> list[int]:
31
+ """perm[j] = original 0-based index shown at display position j. k=0 is the original order."""
32
+ if k == 0:
33
+ return list(range(n))
34
+ if mode == "identity": # repeated samples of the same prompt (self-consistency), no reordering
35
+ return list(range(n))
36
+ if mode == "cyclic" and k < n:
37
+ return [(j + k) % n for j in range(n)]
38
+ rng = random.Random(f"{seed}|{uid}|{k}")
39
+ p = list(range(n))
40
+ rng.shuffle(p)
41
+ return p
42
+
43
+
44
+ def resolve_data(name: str) -> Path:
45
+ p = Path(name)
46
+ return p if p.suffix == ".jsonl" else PROCESSED / f"{name}.jsonl"
47
+
48
+
49
+ def score_items(items: dict[str, dict], pb: PromptBuilder, scorer, method: str, n_perms: int,
50
+ perm_mode: str, seed: int, first_perm: int = 0) -> tuple[list[dict], str | None]:
51
+ """One record per (question, option order). Shared by evaluation and the submission pipeline.
52
+ Items without a gold answer (test data) get gold/correct = None."""
53
+ n_perms = 1 if method == "cloze" else n_perms
54
+ jobs = [(uid, k, make_perm(len(it["options"]), k, perm_mode, seed, uid))
55
+ for uid, it in items.items() for k in range(first_perm, n_perms)]
56
+ first_prompt = None
57
+ if method == "cloze":
58
+ res = scorer.cloze([pb.cloze_context(items[u]) for u, _, _ in jobs], [items[u]["options"] for u, _, _ in jobs])
59
+ else:
60
+ prompts = [pb.mcq(items[u], [items[u]["options"][j] for j in perm]) for u, _, perm in jobs]
61
+ fn = scorer.logit if method == "logit" else scorer.generate
62
+ res = fn(prompts, [len(items[u]["options"]) for u, _, _ in jobs])
63
+ first_prompt = prompts[0] if prompts else None
64
+
65
+ records = []
66
+ for (uid, k, perm), r in zip(jobs, res):
67
+ gold = items[uid].get("answer")
68
+ probs_orig = [0.0] * len(perm)
69
+ for j, p in enumerate(r["probs"]):
70
+ probs_orig[perm[j]] = p
71
+ pred_orig = perm[r["pred"] - 1] + 1 if r["pred"] else None
72
+ rec = {"uid": uid, "perm_k": k, "perm": perm, "method": method,
73
+ "pred_display": r["pred"], "gold_display": perm.index(gold - 1) + 1 if gold else None,
74
+ "pred_orig": pred_orig, "gold": gold, "correct": pred_orig == gold if gold else None,
75
+ "probs_orig": probs_orig}
76
+ for extra in ("label_mass", "text", "new_tokens"):
77
+ if extra in r:
78
+ rec[extra] = r[extra]
79
+ records.append(rec)
80
+ return records, first_prompt
81
+
82
+
83
+ def parse_args() -> argparse.Namespace:
84
+ ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
85
+ ap.add_argument("--config", help="YAML with any of the options below (CLI wins)")
86
+ ap.add_argument("--model")
87
+ ap.add_argument("--revision")
88
+ ap.add_argument("--adapter", help="LoRA adapter directory loaded on top of --model")
89
+ ap.add_argument("--data", nargs="+", default=["sinhalammlu_dev"])
90
+ ap.add_argument("--method", choices=["logit", "generate", "cloze"], default="logit")
91
+ ap.add_argument("--lang", choices=["en", "si"], default="en", help="instruction language")
92
+ ap.add_argument("--chat", choices=["auto", "on", "off"], default="auto")
93
+ ap.add_argument("--answer-prefix", default="")
94
+ ap.add_argument("--thinking", action="store_true", help="enable the chat template's thinking mode (use with --method generate)")
95
+ ap.add_argument("--n-perms", type=int, default=1, help="option orders per question (1 = original only)")
96
+ ap.add_argument("--first-perm", type=int, default=0, help="skip the first orders (1 = skip the original order)")
97
+ ap.add_argument("--perm-mode", choices=["cyclic", "random", "identity"], default="cyclic",
98
+ help="identity + --temperature > 0: n-perms independent samples of the same prompt")
99
+ ap.add_argument("--temperature", type=float, default=0.0, help="> 0: sampled generation (self-consistency)")
100
+ ap.add_argument("--top-p", type=float, default=0.95)
101
+ ap.add_argument("--top-k", type=int, default=64)
102
+ ap.add_argument("--fewshot-file", help="processed JSONL; the same examples precede every question")
103
+ ap.add_argument("--n-shot", type=int, default=0)
104
+ ap.add_argument("--max-new-tokens", type=int, default=16)
105
+ ap.add_argument("--token-budget", type=int, default=32768, help="padded tokens per forward batch")
106
+ ap.add_argument("--max-batch", type=int, default=64)
107
+ ap.add_argument("--dtype", default="bfloat16")
108
+ ap.add_argument("--gpu-mem-gb", type=float, help="PyTorch memory cap (default 100, env SMMLU_GPU_MEM_GB)")
109
+ ap.add_argument("--limit", type=int, help="first N questions per dataset (smoke tests)")
110
+ ap.add_argument("--seed", type=int, default=1234)
111
+ ap.add_argument("--run-name")
112
+ ap.add_argument("--out-dir", default=str(ROOT / "results"))
113
+ ap.add_argument("--write-submission", action="store_true")
114
+ args, _ = ap.parse_known_args()
115
+ if args.config:
116
+ ap.set_defaults(**{k.replace("-", "_"): v for k, v in yaml.safe_load(open(args.config)).items()})
117
+ args = ap.parse_args()
118
+ if not args.model:
119
+ ap.error("--model is required")
120
+ return args
121
+
122
+
123
+ def main() -> None:
124
+ args = parse_args()
125
+ load_env()
126
+ set_seed(args.seed)
127
+ cap_gpu_memory(args.gpu_mem_gb)
128
+ from .scorers import Scorer, load_model, loaded_param_stats
129
+
130
+ run_name = args.run_name or f"{args.model.split('/')[-1]}_{args.method}_{args.lang}_{args.n_shot}shot"
131
+ out = Path(args.out_dir) / run_name
132
+ out.mkdir(parents=True, exist_ok=True)
133
+
134
+ fewshot = read_jsonl(resolve_data(args.fewshot_file))[: args.n_shot] if args.n_shot else []
135
+ shot_uids = {e["uid"] for e in fewshot}
136
+ items: dict[str, dict] = {}
137
+ for d in args.data:
138
+ rows = [r for r in read_jsonl(resolve_data(d)) if r["uid"] not in shot_uids]
139
+ items.update({r["uid"]: r for r in (rows[: args.limit] if args.limit else rows)})
140
+
141
+ t0 = time.time()
142
+ model, tok = load_model(args.model, args.revision, args.dtype, args.adapter)
143
+ chat = {"on": True, "off": False}.get(args.chat, tok.chat_template is not None and not BASE_NAME.search(args.model))
144
+ pb = PromptBuilder(tok, lang=args.lang, chat=chat, fewshot=fewshot, answer_prefix=args.answer_prefix,
145
+ chat_kwargs={"enable_thinking": args.thinking})
146
+ scorer = Scorer(model, tok, pb.add_special_tokens, args.token_budget, args.max_batch, args.max_new_tokens)
147
+ if args.temperature > 0:
148
+ scorer.sampling = {"do_sample": True, "temperature": args.temperature, "top_p": args.top_p, "top_k": args.top_k}
149
+ load_s = time.time() - t0
150
+
151
+ t0 = time.time()
152
+ records, first_prompt = score_items(items, pb, scorer, args.method, args.n_perms, args.perm_mode, args.seed, args.first_perm)
153
+ score_s = time.time() - t0
154
+ if first_prompt:
155
+ (out / "example_prompt.txt").write_text(first_prompt, encoding="utf-8")
156
+
157
+ # Tokens per character of the question block: tokenizer efficiency on Sinhala
158
+ sample = list(items.values())[:500]
159
+ texts = [user_text(it, it["options"], args.lang) for it in sample]
160
+ n_tok = sum(len(x) for x in tok(texts, add_special_tokens=False)["input_ids"])
161
+
162
+ metrics = {"by_dataset": metrics_by_dataset(items, records)}
163
+ metrics["run"] = {
164
+ "run_name": run_name, "args": vars(args), "chat": chat, "n_questions": len(items),
165
+ "n_forward_items": len(records), "load_seconds": round(load_s, 1), "score_seconds": round(score_s, 1),
166
+ "tokens_per_char": n_tok / sum(len(t) for t in texts),
167
+ "params": loaded_param_stats(model), "env": env_fingerprint(),
168
+ }
169
+ (out / "config.json").write_text(json.dumps(vars(args), indent=2))
170
+ write_jsonl(out / "predictions.jsonl", records)
171
+ (out / "metrics.json").write_text(json.dumps(metrics, indent=2, ensure_ascii=False))
172
+ report = "\n".join(markdown_report(f"{run_name} / {d}", m) for d, m in metrics["by_dataset"].items())
173
+ (out / "report.md").write_text(report, encoding="utf-8")
174
+
175
+ if args.write_submission:
176
+ write_submissions(out, items, records)
177
+
178
+ for d, m in metrics["by_dataset"].items():
179
+ o = m["overall"]
180
+ print(f"{run_name} | {d}: acc={o['acc']:.4f} vote={o['acc_vote']:.4f} "
181
+ f"perm={o['acc_perm_mean']:.4f}±{o['acc_perm_std']:.4f} n={o['n']}")
182
+ print(f"load {load_s:.0f}s, scoring {score_s:.0f}s -> {out}")
183
+
184
+
185
+ def metrics_by_dataset(items: dict, records: list[dict]) -> dict:
186
+ out = {}
187
+ for d in sorted({it["dataset"] for it in items.values()}):
188
+ sub_items = {u: it for u, it in items.items() if it["dataset"] == d}
189
+ out[d] = compute_metrics(sub_items, [r for r in records if r["uid"] in sub_items])
190
+ return out
191
+
192
+
193
+ def write_submissions(out: Path, items: dict, records: list[dict]) -> None:
194
+ """Codabench format: predictions.zip containing predictions.jsonl, answer = permutation-vote prediction."""
195
+ from .metrics import aggregate_items
196
+
197
+ agg = aggregate_items(items, records)
198
+ for d in sorted({it["dataset"] for it in items.values()}):
199
+ rows = [{"q_no": it["q_no"], "subject": it.get("subject_raw", it["subject"]), "category": it["category"],
200
+ "level": it["level"], "answer": str(agg[u]["vote"] or 1)}
201
+ for u, it in items.items() if it["dataset"] == d]
202
+ path = out / f"submission_{d}.zip"
203
+ with zipfile.ZipFile(path, "w", zipfile.ZIP_DEFLATED) as z:
204
+ z.writestr("predictions.jsonl", "".join(json.dumps(r, ensure_ascii=False) + "\n" for r in rows))
205
+
206
+
207
+ if __name__ == "__main__":
208
+ main()
eval/scorers.py ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Model loading and the three scoring methods.
2
+
3
+ logit next-token log-probs restricted to the option labels "1".."N" (argmax)
4
+ generate greedy decoding, first standalone label digit in the output is the prediction
5
+ cloze length-normalised log-likelihood of each option text given the question
6
+ """
7
+ from __future__ import annotations
8
+
9
+ import math
10
+ import re
11
+
12
+ import torch
13
+ from tqdm.auto import tqdm
14
+
15
+
16
+ def resolve_revision(name: str, revision: str | None) -> tuple[str | None, str | None]:
17
+ """(revision to load, commit to record). Local dirs record their SOURCE.json; offline runs need a full sha."""
18
+ import json
19
+ import os
20
+ from pathlib import Path
21
+
22
+ if Path(name).is_dir():
23
+ src = Path(name) / "SOURCE.json"
24
+ if not src.exists():
25
+ return None, "local"
26
+ meta = json.loads(src.read_text())
27
+ return None, meta.get("model_id") or meta["source_commit"] + "+text-only"
28
+ if revision and re.fullmatch(r"[0-9a-f]{40}", revision):
29
+ return revision, revision
30
+ if os.environ.get("HF_HUB_OFFLINE") == "1":
31
+ raise ValueError(f"offline run needs a full 40-character commit sha for {name}")
32
+ from huggingface_hub import HfApi
33
+
34
+ sha = HfApi().model_info(name, revision=revision).sha # pin the exact commit
35
+ return sha, sha
36
+
37
+
38
+ def load_model(name: str, revision: str | None = None, dtype: str = "bfloat16", adapter: str | None = None):
39
+ from transformers import AutoModelForCausalLM, AutoTokenizer
40
+
41
+ revision, commit = resolve_revision(name, revision)
42
+ kw = dict(dtype=getattr(torch, dtype), device_map="cuda", revision=revision)
43
+ try:
44
+ model = AutoModelForCausalLM.from_pretrained(name, **kw)
45
+ except ValueError: # some multimodal checkpoints only register under image-text-to-text
46
+ from transformers import AutoModelForImageTextToText
47
+
48
+ model = AutoModelForImageTextToText.from_pretrained(name, **kw)
49
+ if adapter: # LoRA adapter kept separate (can be switched off per question with model.disable_adapter())
50
+ from peft import PeftModel
51
+
52
+ model = PeftModel.from_pretrained(model, adapter)
53
+ commit = f"{commit}+adapter:{adapter}"
54
+ model.eval()
55
+ tok = AutoTokenizer.from_pretrained(name, revision=revision)
56
+ tok.padding_side = "left"
57
+ if tok.pad_token is None:
58
+ tok.pad_token = tok.eos_token
59
+ model.config.hub_commit = commit
60
+ return model, tok
61
+
62
+
63
+ def loaded_param_stats(model) -> dict:
64
+ """Parameters actually resident at inference (tied weights counted once)."""
65
+ by_module: dict[str, int] = {}
66
+ for name, p in model.named_parameters(): # named_parameters() already de-duplicates tied tensors
67
+ top = ".".join(name.split(".")[:2])
68
+ by_module[top] = by_module.get(top, 0) + p.numel()
69
+ non_text = {k: v for k, v in by_module.items() if re.search(r"vision|visual|audio|image|mm_proj", k)}
70
+ total = sum(by_module.values())
71
+ return {"loaded_total": total, "loaded_non_text": sum(non_text.values()),
72
+ "non_text_modules": non_text, "commit": getattr(model.config, "hub_commit", None)}
73
+
74
+
75
+ def label_token_ids(tok, n: int) -> list[list[int]]:
76
+ """Single-token encodings of each label ("1" and " 1" variants)."""
77
+ out = []
78
+ for i in range(1, n + 1):
79
+ ids = set()
80
+ for v in (str(i), f" {i}"):
81
+ enc = tok.encode(v, add_special_tokens=False)
82
+ if len(enc) == 1:
83
+ ids.add(enc[0])
84
+ if not ids:
85
+ raise ValueError(f"label {i} has no single-token encoding")
86
+ out.append(sorted(ids))
87
+ flat = [t for ids in out for t in ids]
88
+ assert len(flat) == len(set(flat)), "label token ids overlap"
89
+ return out
90
+
91
+
92
+ def _batches(lengths: list[int], token_budget: int, max_batch: int):
93
+ """Length-sorted batches bounded by padded-token budget."""
94
+ order = sorted(range(len(lengths)), key=lambda i: -lengths[i])
95
+ batch, longest = [], 0
96
+ for i in order:
97
+ new_longest = max(longest, lengths[i])
98
+ if batch and (new_longest * (len(batch) + 1) > token_budget or len(batch) >= max_batch):
99
+ yield batch
100
+ batch, new_longest = [], lengths[i]
101
+ batch.append(i)
102
+ longest = new_longest
103
+ if batch:
104
+ yield batch
105
+
106
+
107
+ def _forward_last(model, enc, keep: int):
108
+ try:
109
+ return model(**enc, logits_to_keep=keep).logits
110
+ except TypeError:
111
+ return model(**enc).logits[:, -keep:]
112
+
113
+
114
+ class Scorer:
115
+ def __init__(self, model, tok, add_special_tokens: bool, token_budget: int = 32768,
116
+ max_batch: int = 64, max_new_tokens: int = 16):
117
+ self.model, self.tok = model, tok
118
+ self.add_special = add_special_tokens
119
+ self.token_budget, self.max_batch = token_budget, max_batch
120
+ self.max_new_tokens = max_new_tokens
121
+ self.keep_raw = False # also return the raw completion (thought channel included) for training on traces
122
+ self.sampling: dict = {} # e.g. {"do_sample": True, "temperature": 0.8, "top_p": 0.95, "top_k": 64}
123
+
124
+ def _encode(self, texts: list[str]):
125
+ return self.tok(texts, return_tensors="pt", padding=True,
126
+ add_special_tokens=self.add_special).to(self.model.device)
127
+
128
+ def _lengths(self, texts: list[str]) -> list[int]:
129
+ return [len(x) for x in self.tok(texts, add_special_tokens=self.add_special)["input_ids"]]
130
+
131
+ @torch.no_grad()
132
+ def logit(self, prompts: list[str], n_options: list[int]) -> list[dict]:
133
+ cache: dict[int, list[list[int]]] = {}
134
+ results: list[dict | None] = [None] * len(prompts)
135
+ lengths = self._lengths(prompts)
136
+ for idx in tqdm(list(_batches(lengths, self.token_budget, self.max_batch)), desc="logit", leave=False):
137
+ enc = self._encode([prompts[i] for i in idx])
138
+ logp = torch.log_softmax(_forward_last(self.model, enc, 1)[:, -1].float(), dim=-1)
139
+ for row, i in enumerate(idx):
140
+ n = n_options[i]
141
+ labels = cache.setdefault(n, label_token_ids(self.tok, n))
142
+ scores = torch.stack([torch.logsumexp(logp[row, ids], 0) for ids in labels])
143
+ probs = torch.softmax(scores, 0)
144
+ results[i] = {"probs": probs.tolist(), "pred": int(probs.argmax()) + 1,
145
+ "label_mass": float(scores.exp().sum())}
146
+ return results
147
+
148
+ @torch.no_grad()
149
+ def generate(self, prompts: list[str], n_options: list[int]) -> list[dict]:
150
+ results: list[dict | None] = [None] * len(prompts)
151
+ lengths = self._lengths(prompts)
152
+ budget = max(self.token_budget // 2, 1)
153
+ for idx in tqdm(list(_batches(lengths, budget, self.max_batch)), desc="generate", leave=False):
154
+ enc = self._encode([prompts[i] for i in idx])
155
+ gen_kw = self.sampling or {"do_sample": False, "temperature": None, "top_p": None, "top_k": None}
156
+ out = self.model.generate(**enc, max_new_tokens=self.max_new_tokens, pad_token_id=self.tok.pad_token_id,
157
+ **gen_kw)
158
+ new = out[:, enc["input_ids"].shape[1]:]
159
+ raw = self.tok.batch_decode(new, skip_special_tokens=False)
160
+ texts = self.tok.batch_decode(new, skip_special_tokens=True)
161
+ for row, i in enumerate(idx):
162
+ n = n_options[i]
163
+ answer_text = texts[row]
164
+ if "<|channel>" in raw[row]: # thinking mode: the answer is what follows the closed thought channel
165
+ answer_text = raw[row].split("<channel|>")[-1] if "<channel|>" in raw[row] else ""
166
+ answer_text = re.sub(r"<[^>]*\|>|<\|[^>]*>", " ", answer_text)
167
+ m = re.search(rf"(?<![0-9])([1-{n}])(?![0-9])", answer_text)
168
+ pred = int(m.group(1)) if m else None
169
+ probs = [1.0 if pred == k else 0.0 for k in range(1, n + 1)]
170
+ n_new = int((new[row] != self.tok.pad_token_id).sum())
171
+ results[i] = {"probs": probs, "pred": pred, "text": texts[row][-2000:], "new_tokens": n_new}
172
+ if self.keep_raw:
173
+ rc = raw[row].replace(self.tok.pad_token or "", "") if self.tok.pad_token else raw[row]
174
+ cut = rc.find("<turn|>")
175
+ results[i]["raw"] = rc[: cut + len("<turn|>")] if cut >= 0 else rc
176
+ return results
177
+
178
+ @torch.no_grad()
179
+ def cloze(self, contexts: list[str], options: list[list[str]]) -> list[dict]:
180
+ """Left-padded so every continuation ends at the last position; keeps only needed logits."""
181
+ pairs = [] # (item index, ctx ids, cont ids, n chars)
182
+ for i, (ctx, opts) in enumerate(zip(contexts, options)):
183
+ ctx_ids = self.tok.encode(ctx, add_special_tokens=True)
184
+ for opt in opts:
185
+ cont = self.tok.encode(" " + opt, add_special_tokens=False)
186
+ pairs.append((i, ctx_ids, cont, len(opt)))
187
+ lengths = [len(c) + len(o) for _, c, o, _ in pairs]
188
+ scores = [0.0] * len(pairs)
189
+ pad = self.tok.pad_token_id
190
+ for idx in tqdm(list(_batches(lengths, self.token_budget, self.max_batch)), desc="cloze", leave=False):
191
+ L = max(lengths[j] for j in idx)
192
+ keep = max(len(pairs[j][2]) for j in idx) + 1
193
+ ids = torch.full((len(idx), L), pad, dtype=torch.long)
194
+ mask = torch.zeros((len(idx), L), dtype=torch.long)
195
+ for row, j in enumerate(idx):
196
+ seq = pairs[j][1] + pairs[j][2]
197
+ ids[row, L - len(seq):] = torch.tensor(seq)
198
+ mask[row, L - len(seq):] = 1
199
+ enc = {"input_ids": ids.to(self.model.device), "attention_mask": mask.to(self.model.device)}
200
+ logp = torch.log_softmax(_forward_last(self.model, enc, keep).float(), dim=-1)
201
+ for row, j in enumerate(idx):
202
+ cont = pairs[j][2]
203
+ k = len(cont)
204
+ # logits at kept positions [-k-1 .. -2] predict tokens at [-k .. -1]
205
+ lp = logp[row, keep - k - 1: keep - 1].gather(-1, torch.tensor(cont, device=logp.device)[:, None])
206
+ scores[j] = float(lp.sum()) / max(pairs[j][3], 1)
207
+ results: list[dict] = []
208
+ pos = 0
209
+ for opts in options:
210
+ s = torch.tensor(scores[pos: pos + len(opts)])
211
+ pos += len(opts)
212
+ probs = torch.softmax(s, 0)
213
+ results.append({"probs": probs.tolist(), "pred": int(probs.argmax()) + 1})
214
+ return results
215
+
216
+
217
+ def wilson(k: int, n: int, z: float = 1.96) -> tuple[float, float]:
218
+ if n == 0:
219
+ return (math.nan, math.nan)
220
+ p = k / n
221
+ d = 1 + z * z / n
222
+ c = (p + z * z / (2 * n)) / d
223
+ h = z * math.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) / d
224
+ return (c - h, c + h)
eval/self_consistency.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Self-consistency: majority vote over a greedy thinking run and sampled thinking runs of the same questions.
2
+
3
+ python -m eval.self_consistency --greedy results/think_base_academic --samples results/sc3_base_academic
4
+
5
+ Votes = greedy answer + every sampled answer (unparsed samples abstain); ties go to the greedy answer. Prints accuracy of
6
+ greedy alone, samples alone (each), and the vote, with a paired bootstrap CI of vote minus greedy.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ from collections import Counter, defaultdict
12
+ from pathlib import Path
13
+
14
+ import numpy as np
15
+
16
+ from .common import read_jsonl
17
+
18
+
19
+ def main() -> None:
20
+ ap = argparse.ArgumentParser()
21
+ ap.add_argument("--greedy", required=True, type=Path)
22
+ ap.add_argument("--samples", required=True, type=Path)
23
+ args = ap.parse_args()
24
+ greedy = {r["uid"]: r for r in read_jsonl(args.greedy / "predictions.jsonl") if r["perm_k"] == 0}
25
+ samples = defaultdict(list)
26
+ for r in read_jsonl(args.samples / "predictions.jsonl"):
27
+ samples[r["uid"]].append(r["pred_orig"])
28
+ uids = sorted(set(greedy) & set(samples))
29
+ g = np.array([greedy[u]["pred_orig"] == greedy[u]["gold"] for u in uids], dtype=float)
30
+ vote = []
31
+ for u in uids:
32
+ ballots = [greedy[u]["pred_orig"]] + samples[u]
33
+ c = Counter(b for b in ballots if b is not None)
34
+ if not c:
35
+ vote.append(False)
36
+ continue
37
+ top = max(c.values())
38
+ winners = [a for a, n in c.items() if n == top]
39
+ choice = greedy[u]["pred_orig"] if greedy[u]["pred_orig"] in winners else min(winners)
40
+ vote.append(choice == greedy[u]["gold"])
41
+ v = np.array(vote, dtype=float)
42
+ k = max(len(samples[u]) for u in uids)
43
+ per_sample = [np.mean([samples[u][i] == greedy[u]["gold"] for u in uids if len(samples[u]) > i]) for i in range(k)]
44
+ d = v - g
45
+ rng = np.random.default_rng(0)
46
+ lo, hi = np.percentile([d[rng.integers(0, len(d), len(d))].mean() for _ in range(5000)], [2.5, 97.5])
47
+ print(f"{args.samples.name}: n={len(uids)} greedy {100 * g.mean():.1f} samples {' / '.join(f'{100 * x:.1f}' for x in per_sample)}"
48
+ f" vote(greedy+{k}) {100 * v.mean():.1f} diff {100 * d.mean():+.2f} [{100 * lo:+.2f}, {100 * hi:+.2f}]")
49
+
50
+
51
+ if __name__ == "__main__":
52
+ main()
eval/summarize.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Combine results/*/metrics.json into comparison tables (reports/<name>.md).
2
+
3
+ Usage: python -m eval.summarize --runs results/base_* --out reports/baselines_zeroshot.md
4
+ """
5
+ from __future__ import annotations
6
+
7
+ import argparse
8
+ import glob
9
+ import json
10
+ from pathlib import Path
11
+
12
+
13
+ def load(run_dirs: list[str]) -> dict[str, dict]:
14
+ runs = {}
15
+ for d in sorted(run_dirs):
16
+ f = Path(d) / "metrics.json"
17
+ if f.exists():
18
+ runs[Path(d).name] = json.loads(f.read_text())
19
+ return runs
20
+
21
+
22
+ def fmt(x) -> str:
23
+ return "-" if x is None else f"{100 * x:.1f}"
24
+
25
+
26
+ def main() -> None:
27
+ ap = argparse.ArgumentParser()
28
+ ap.add_argument("--runs", nargs="+", required=True)
29
+ ap.add_argument("--out", required=True)
30
+ args = ap.parse_args()
31
+ runs = load([d for pat in args.runs for d in glob.glob(pat)])
32
+ names = list(runs)
33
+ short = {n: n.removeprefix("base_").removeprefix("exp_") for n in names}
34
+
35
+ lines = ["# Baseline comparison", "",
36
+ "Accuracy in %. `orig` = original option order; `vote` = mean probabilities over cyclic option "
37
+ "permutations; `±` = std of accuracy across permutations (position sensitivity). Random = 25.", ""]
38
+
39
+ # Overview
40
+ lines += ["## Overview", "", "| model | params loaded | tok/char | SinhalaMMLU dev orig | vote | ± | macro-subj | "
41
+ "Global-MMLU si | Belebele si | label mass | consistency |", "|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|"]
42
+ for n in names:
43
+ r, bd = runs[n]["run"], runs[n]["by_dataset"]
44
+ s = bd.get("sinhalammlu", {}).get("overall", {})
45
+ g = bd.get("gmmlu_si", {}).get("overall", {})
46
+ b = bd.get("belebele_si", {}).get("overall", {})
47
+ lines.append(f"| {short[n]} | {r['params']['loaded_total'] / 1e9:.2f}B | {r['tokens_per_char']:.2f} | "
48
+ f"{fmt(s.get('acc'))} | {fmt(s.get('acc_vote'))} | {fmt(s.get('acc_perm_std'))} | "
49
+ f"{fmt(s.get('acc_macro_subject'))} | {fmt(g.get('acc'))} | {fmt(b.get('acc'))} | "
50
+ f"{s.get('label_mass_mean', float('nan')):.2f} | {s.get('consistency', float('nan')):.2f} |")
51
+
52
+ def table(dataset: str, key: str, title: str) -> None:
53
+ groups = sorted({g for n in names for g in runs[n]["by_dataset"].get(dataset, {}).get("groups", {}).get(key, {})})
54
+ if not groups:
55
+ return
56
+ lines.extend(["", f"## {title}", "", "| " + key + " | n | " + " | ".join(short[n] for n in names) + " |",
57
+ "|---|---:|" + "---:|" * len(names)])
58
+ for g in groups:
59
+ cells, cnt = [], "-"
60
+ for n in names:
61
+ blk = runs[n]["by_dataset"].get(dataset, {}).get("groups", {}).get(key, {}).get(g)
62
+ cells.append(fmt(blk["acc"]) if blk else "-")
63
+ cnt = blk["n"] if blk else cnt
64
+ lines.append(f"| {g} | {cnt} | " + " | ".join(cells) + " |")
65
+
66
+ table("sinhalammlu", "subject", "SinhalaMMLU dev: per subject")
67
+ table("sinhalammlu", "category", "SinhalaMMLU dev: per domain")
68
+ table("sinhalammlu", "grade", "SinhalaMMLU dev: per grade")
69
+ table("gmmlu_si", "category", "Global-MMLU si: per category")
70
+ table("gmmlu_si", "cultural_sensitivity", "Global-MMLU si: culturally sensitive (CS) / agnostic (CA) / unlabelled (-)")
71
+
72
+ lines += ["", "## Position bias on SinhalaMMLU dev (share of predictions per displayed position)", "",
73
+ "| model | 1 | 2 | 3 | 4 |", "|---|---:|---:|---:|---:|"]
74
+ for n in names:
75
+ pb = runs[n]["by_dataset"].get("sinhalammlu", {}).get("position_bias")
76
+ if pb:
77
+ lines.append(f"| {short[n]} | " + " | ".join(fmt(pb["pred_dist"].get(str(p))) for p in range(1, 5)) + " |")
78
+ Path(args.out).parent.mkdir(parents=True, exist_ok=True)
79
+ Path(args.out).write_text("\n".join(lines) + "\n")
80
+ print("\n".join(lines))
81
+
82
+
83
+ if __name__ == "__main__":
84
+ main()
inference.py ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Sinhala MMLU Shared Task - Final inference script
3
+ Team: Nexus
4
+
5
+ The organizers will run this file exactly as it is, changing ONLY the DATA_REPO line
6
+ below to point to the final Sinhala MMLU dataset:
7
+
8
+ pip install -r requirements.txt
9
+ python inference.py
10
+
11
+ System (see README.md): Gemma 4 E4B-it, text-only (7.463B parameters, vision/audio towers removed, weights unchanged),
12
+ no fine-tuning. Every question is answered with the model's thinking mode (greedy). Where the fast one-step answer
13
+ (next-token scores over the labels 1-4, averaged over 4 cyclic option orders) disagrees with the greedy thinking answer,
14
+ 3 more reasoning paths are sampled (temperature 0.8, top-p 0.95, top-k 64, fixed seed 1234) and the 4 answers are
15
+ majority-voted, ties going to the greedy answer ("agreement-gated self-consistency"; 892 of 2,238 test questions).
16
+ Set SELF_CONSISTENCY = False for a fully greedy variant (not the one we submitted).
17
+
18
+ Section 2 runs the exact pipeline that produced our Codabench submission (inference/predict.py with
19
+ configs/submission_base_think_gated_sc.yaml), on the questions loaded by section 1.
20
+ """
21
+
22
+ # ======================= ORGANIZERS CHANGE ONLY THIS LINE =======================
23
+ DATA_REPO = "SinhalaMMLU-SharedTask/Sinhala-MMLU-SharedTask-Test-Dataset"
24
+ # ================================================================================
25
+
26
+ OUTPUT_FILE = "predictions.jsonl"
27
+
28
+ # ----------------------- TEAM SETTINGS (keep exactly as used for your final submission)
29
+ MODEL_ID = "SinhalaMMLU-SharedTask/team-nexus-gemma-4-e4b-it-text" # text-only extraction of google/gemma-4-E4B-it
30
+ MODEL_REVISION = "8f686039aad1a865c9335c17874d9b870fdec766" # exact commit of MODEL_ID used for our submission
31
+ SEED = 1234
32
+ SELF_CONSISTENCY = True # True = our submitted system; False = greedy thinking only (fully deterministic)
33
+
34
+ import json
35
+ import os
36
+ import random
37
+ import re
38
+
39
+ import numpy as np
40
+ import torch
41
+ from huggingface_hub import HfFileSystem, list_repo_files
42
+
43
+
44
+ def set_seed(seed):
45
+ random.seed(seed)
46
+ np.random.seed(seed)
47
+ torch.manual_seed(seed)
48
+ torch.cuda.manual_seed_all(seed)
49
+
50
+
51
+ # =============== 1. LOAD THE DATASET FROM HUGGING FACE (do not change) ===============
52
+ def load_questions(data_repo):
53
+ fs = HfFileSystem()
54
+ files = sorted(f for f in list_repo_files(data_repo, repo_type="dataset") if f.endswith(".json"))
55
+ rows = []
56
+ for f in files:
57
+ with fs.open(f"datasets/{data_repo}/{f}", "r", encoding="utf-8") as fh:
58
+ raw = json.load(fh)
59
+ if isinstance(raw, dict):
60
+ raw = next(v for v in raw.values() if isinstance(v, list))
61
+ for r in raw:
62
+ r["_file"] = f
63
+ rows.append(r)
64
+ return rows
65
+
66
+
67
+ def get_level(r):
68
+ return (r.get("metadata") or {}).get("difficulty") or r["_file"].split("/")[0]
69
+
70
+
71
+ # =============== 2. OUR SYSTEM ===============
72
+ # predict_all() writes the loaded questions to a temporary folder (same file layout as the dataset repo), runs
73
+ # inference/predict.py on it offline, and maps its answers back to `rows` by (level, subject, q_no).
74
+
75
+ HERE = os.path.dirname(os.path.abspath(__file__))
76
+ CONFIG = os.path.join(HERE, "configs", "submission_base_think_gated_sc.yaml" if SELF_CONSISTENCY
77
+ else "submission_base_think_greedy.yaml")
78
+
79
+
80
+ def load_system():
81
+ from huggingface_hub import snapshot_download
82
+
83
+ return snapshot_download(MODEL_ID, revision=MODEL_REVISION) # local folder with weights + tokenizer
84
+
85
+
86
+ def predict_all(system, rows):
87
+ import subprocess
88
+ import sys
89
+ import tempfile
90
+ import zipfile
91
+
92
+ import yaml
93
+
94
+ model_dir = system
95
+ with tempfile.TemporaryDirectory() as tmp:
96
+ by_file = {}
97
+ for r in rows:
98
+ by_file.setdefault(r["_file"], []).append({k: v for k, v in r.items() if k != "_file"})
99
+ for f, recs in by_file.items():
100
+ path = os.path.join(tmp, "data", f)
101
+ os.makedirs(os.path.dirname(path), exist_ok=True)
102
+ with open(path, "w", encoding="utf-8") as fh:
103
+ json.dump(recs, fh, ensure_ascii=False)
104
+ with open(CONFIG, encoding="utf-8") as fh:
105
+ cfg = yaml.safe_load(fh)
106
+ cfg["model"] = model_dir
107
+ cfg["seed"] = SEED
108
+ cfg_path = os.path.join(tmp, "config.yaml")
109
+ with open(cfg_path, "w", encoding="utf-8") as fh:
110
+ yaml.safe_dump(cfg, fh, allow_unicode=True)
111
+ out_zip = os.path.join(tmp, "predictions.zip")
112
+ subprocess.run([sys.executable, "-m", "inference.predict", "--config", cfg_path,
113
+ "--input", os.path.join(tmp, "data"), "--output", out_zip], cwd=HERE, check=True)
114
+ with zipfile.ZipFile(out_zip) as z:
115
+ preds = [json.loads(l) for l in z.read("predictions.jsonl").decode("utf-8").splitlines() if l.strip()]
116
+ ans = {(p["level"], p["subject"], p["q_no"]): p["answer"] for p in preds}
117
+ return [ans[(get_level(r), r["subject"], r["q_no"])] for r in rows]
118
+
119
+
120
+ # =============== 3. WRITE PREDICTIONS (do not change) ===============
121
+ if __name__ == "__main__":
122
+ set_seed(SEED)
123
+ rows = load_questions(DATA_REPO)
124
+ print(len(rows), "questions loaded from", DATA_REPO)
125
+
126
+ system = load_system()
127
+ answers = predict_all(system, rows)
128
+
129
+ assert len(answers) == len(rows), "predict_all() must return one answer per question"
130
+ with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
131
+ for r, a in zip(rows, answers):
132
+ a = str(a).strip()
133
+ assert a in {"1", "2", "3", "4"}, f"invalid answer {a!r} for q_no={r.get('q_no')}"
134
+ f.write(json.dumps({
135
+ "q_no": r["q_no"],
136
+ "subject": r["subject"],
137
+ "category": r["category"],
138
+ "level": get_level(r),
139
+ "answer": a,
140
+ }, ensure_ascii=False, separators=(",", ":")) + "\n")
141
+ print("\nSaved", OUTPUT_FILE)
inference/__init__.py ADDED
File without changes
inference/check_predictions.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Score a Codabench-format predictions.zip against gold answers (dev only; test gold is hidden).
2
+
3
+ python -m inference.check_predictions --predictions dev_predictions.zip --gold data/raw/sinhalammlu/TEST/easy
4
+
5
+ Also validates the file the way the leaderboard will need it: one row per question, required fields present,
6
+ answers are digits within the option range. Reports accuracy per level and their macro average (task metric).
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import json
12
+ import sys
13
+ import zipfile
14
+ from collections import defaultdict
15
+ from pathlib import Path
16
+
17
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
18
+ from inference.predict import read_records, to_item # noqa: E402
19
+
20
+ FIELDS = ("q_no", "subject", "category", "level", "answer")
21
+
22
+
23
+ def main() -> None:
24
+ ap = argparse.ArgumentParser()
25
+ ap.add_argument("--predictions", required=True, type=Path)
26
+ ap.add_argument("--gold", required=True, type=Path)
27
+ args = ap.parse_args()
28
+
29
+ with zipfile.ZipFile(args.predictions) as z:
30
+ assert z.namelist() == ["predictions.jsonl"], f"zip must contain only predictions.jsonl, has {z.namelist()}"
31
+ preds = [json.loads(l) for l in z.read("predictions.jsonl").decode("utf-8").splitlines() if l.strip()]
32
+
33
+ gold = {}
34
+ for f, r in read_records(args.gold):
35
+ it = to_item(f, r)
36
+ gold[(it["level"], it["subject_raw"], it["q_no"])] = (r.get("answer"), len(it["options"]))
37
+
38
+ errors, seen = [], set()
39
+ correct = defaultdict(lambda: [0, 0])
40
+ for p in preds:
41
+ if any(k not in p for k in FIELDS):
42
+ errors.append(f"missing fields in {p}")
43
+ continue
44
+ key = (p["level"], p["subject"], p["q_no"])
45
+ if key in seen:
46
+ errors.append(f"duplicate {key}")
47
+ seen.add(key)
48
+ if key not in gold:
49
+ errors.append(f"unknown question {key}")
50
+ continue
51
+ ans, n = gold[key]
52
+ if not (isinstance(p["answer"], str) and p["answer"].isdigit() and 1 <= int(p["answer"]) <= n):
53
+ errors.append(f"bad answer {p['answer']!r} for {key}")
54
+ continue
55
+ if isinstance(ans, int) and 1 <= ans <= n: # skip items with an invalid gold label
56
+ correct[p["level"]][0] += int(p["answer"]) == ans
57
+ correct[p["level"]][1] += 1
58
+ missing = set(gold) - seen
59
+ if missing:
60
+ errors.append(f"{len(missing)} questions without a prediction, e.g. {sorted(missing)[:3]}")
61
+
62
+ for lvl, (k, n) in sorted(correct.items()):
63
+ print(f"{lvl}: {k}/{n} = {100 * k / n:.2f}%")
64
+ if correct:
65
+ print(f"macro average over levels: {100 * sum(k / n for k, n in correct.values()) / len(correct):.2f}%")
66
+ print(f"{len(preds)} rows, {len(errors)} format errors")
67
+ for e in errors[:20]:
68
+ print(" ", e)
69
+ sys.exit(1 if errors else 0)
70
+
71
+
72
+ if __name__ == "__main__":
73
+ main()
inference/predict.py ADDED
@@ -0,0 +1,238 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Offline submission pipeline: question file(s) in, Codabench predictions.zip out. No human in the loop.
2
+
3
+ python -m inference.predict --input <test dir | .json | .jsonl> --output predictions.zip
4
+
5
+ Runs with HF_HUB_OFFLINE=1 (no network); every setting comes from configs/submission.yaml.
6
+ Optional self-consistency (config `sc_levels`, `sc_samples`, `sc_gate`): greedy + K sampled reasoning paths, majority
7
+ vote; with `sc_gate: disagree` only for questions where the fast answer disagrees with the greedy thinking answer.
8
+ Every thinking answer (greedy first, then samples) is also written to <output>.ballots.jsonl (scripts/pool_ballots.py).
9
+ Optional LoRA adapter (config `adapter`) on top of `model`. Optional per-question thinking (config `thinking_levels`,
10
+ e.g. [hard]): questions whose own `level` field is listed are answered with the model's thinking mode (with
11
+ `thinking_without_adapter: true`, the adapter is switched off for them) (greedy, original option order); if no answer can be read from the output,
12
+ the fast answer is used. All other questions use the fast logit answer (voted over `n_perms` option orders).
13
+
14
+ Accepts the SinhalaMMLU JSON layout (list of {q_no, subject, category, question, choices, metadata.difficulty})
15
+ and JSONL; q_no / subject / category / level are echoed exactly as given. Writes <output>.run.json next to the
16
+ zip with the model commit, loaded parameter count, input hash and library versions.
17
+ """
18
+ from __future__ import annotations
19
+
20
+ import argparse
21
+ import hashlib
22
+ import json
23
+ import os
24
+ import sys
25
+ import time
26
+ import zipfile
27
+ from collections import Counter
28
+ from pathlib import Path
29
+
30
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
31
+
32
+ LEVELS = ("easy", "medium", "hard")
33
+
34
+
35
+ def read_records(path: Path) -> list[tuple[Path, dict]]:
36
+ files = sorted(p for p in path.rglob("*") if p.suffix in (".json", ".jsonl")
37
+ and not any(part.startswith(".") for part in p.relative_to(path).parts)) if path.is_dir() else [path]
38
+ # (hidden dirs skipped: huggingface_hub keeps download metadata as JSON under .cache/)
39
+ out = []
40
+ for f in files:
41
+ text = f.read_text(encoding="utf-8")
42
+ rows = [json.loads(l) for l in text.splitlines() if l.strip()] if f.suffix == ".jsonl" else json.loads(text)
43
+ out += [(f, r) for r in (rows if isinstance(rows, list) else [rows])]
44
+ if not out:
45
+ raise SystemExit(f"no questions found under {path}")
46
+ return out
47
+
48
+
49
+ def to_item(f: Path, r: dict) -> dict:
50
+ options = r.get("choices", r.get("options"))
51
+ level = r.get("level") or (r.get("metadata") or {}).get("difficulty") \
52
+ or next((p for p in f.parts[::-1] if p.lower() in LEVELS), None)
53
+ missing = [k for k, v in {"q_no": r.get("q_no"), "subject": r.get("subject"), "category": r.get("category"),
54
+ "question": r.get("question"), "choices": options, "level": level}.items() if v is None]
55
+ if missing:
56
+ raise SystemExit(f"{f}: record {r.get('q_no')} lacks {missing}; keys present: {sorted(r)}")
57
+ return {"uid": f"{level}/{r['subject']}/{r['q_no']}", "dataset": "test", "q_no": r["q_no"],
58
+ "subject": r["subject"].strip(), "subject_raw": r["subject"], "category": r["category"], "level": level,
59
+ "question": r["question"].strip(), "options": [str(o).strip() for o in options]}
60
+
61
+
62
+ def main() -> None:
63
+ ap = argparse.ArgumentParser()
64
+ ap.add_argument("--input", required=True, type=Path)
65
+ ap.add_argument("--output", required=True, type=Path)
66
+ ap.add_argument("--config", type=Path, default=Path(__file__).resolve().parents[1] / "configs" / "submission.yaml")
67
+ ap.add_argument("--allow-online", action="store_true", help="debugging only; the submission runs offline")
68
+ ap.add_argument("--limit", type=int, help="first N questions only (smoke tests; never for a submission)")
69
+ ap.add_argument("--levels", nargs="+", help="answer only questions of these levels (then merge with scripts/merge_predictions.py)")
70
+ args = ap.parse_args()
71
+ if not args.allow_online:
72
+ os.environ["HF_HUB_OFFLINE"] = os.environ["TRANSFORMERS_OFFLINE"] = "1"
73
+
74
+ import yaml
75
+
76
+ from eval.common import cap_gpu_memory, env_fingerprint, set_seed
77
+ from eval.metrics import aggregate_items
78
+ from eval.prompts import PromptBuilder
79
+ from eval.run_eval import make_perm, score_items
80
+ from eval.scorers import Scorer, load_model, loaded_param_stats
81
+
82
+ cfg = yaml.safe_load(args.config.read_text())
83
+ set_seed(cfg["seed"])
84
+ cap_gpu_memory(cfg.get("gpu_mem_gb"))
85
+
86
+ raw = read_records(args.input)
87
+ items = {}
88
+ for f, r in raw:
89
+ it = to_item(f, r)
90
+ if it["uid"] in items:
91
+ raise SystemExit(f"duplicate question id {it['uid']}")
92
+ items[it["uid"]] = it
93
+ if args.levels:
94
+ items = {u: it for u, it in items.items() if it["level"] in set(args.levels)}
95
+ if args.limit:
96
+ items = dict(list(items.items())[: args.limit])
97
+ print(f"{len(items)} questions from {args.input}")
98
+
99
+ t0 = time.time()
100
+ root = Path(__file__).resolve().parents[1]
101
+ model_path = str(root / cfg["model"]) if (root / cfg["model"]).exists() else cfg["model"]
102
+ adapter = cfg.get("adapter")
103
+ adapter = str(root / adapter) if adapter and (root / adapter).exists() else adapter
104
+ model, tok = load_model(model_path, cfg.get("revision"), cfg.get("dtype", "bfloat16"), adapter)
105
+ pb = PromptBuilder(tok, lang=cfg["lang"], chat=cfg["chat"])
106
+ scorer = Scorer(model, tok, pb.add_special_tokens, cfg.get("token_budget", 32768), cfg.get("max_batch", 64))
107
+ if cfg.get("fast_without_adapter") and hasattr(model, "disable_adapter"):
108
+ with model.disable_adapter(): # fast one-step answer from the plain base model (used by the agreement gate)
109
+ records, _ = score_items(items, pb, scorer, cfg["method"], cfg["n_perms"], cfg["perm_mode"], cfg["seed"])
110
+ else:
111
+ records, _ = score_items(items, pb, scorer, cfg["method"], cfg["n_perms"], cfg["perm_mode"], cfg["seed"])
112
+ agg = aggregate_items(items, records)
113
+
114
+ # Thinking mode for selected levels (decided per question from its own level field)
115
+ think_levels = set(cfg.get("thinking_levels") or [])
116
+ think_uids = [u for u, it in items.items() if it["level"] in think_levels]
117
+ think_pred, fallbacks, sc_changed, sc_count = {}, 0, 0, 0
118
+ perm_levels, k_perm = set(cfg.get("perm_think_levels") or []), int(cfg.get("perm_think_orders", 0))
119
+ perm_uids = [u for u, it in items.items() if it["level"] in perm_levels] if k_perm > 0 else []
120
+ perm_changed = 0
121
+ if think_uids or perm_uids:
122
+ tpb = PromptBuilder(tok, lang=cfg["lang"], chat=cfg["chat"], chat_kwargs={"enable_thinking": True})
123
+ tscorer = Scorer(model, tok, tpb.add_special_tokens, cfg.get("token_budget", 32768), cfg.get("max_batch", 64),
124
+ max_new_tokens=cfg.get("think_max_new_tokens", 2048))
125
+
126
+ def think_prompts(prompts: list[str], n_opts: list[int]) -> list[dict]:
127
+ if cfg.get("thinking_without_adapter") and hasattr(model, "disable_adapter"):
128
+ with model.disable_adapter(): # base model reasons; the adapter (trained to answer at once) does not
129
+ return tscorer.generate(prompts, n_opts)
130
+ return tscorer.generate(prompts, n_opts)
131
+
132
+ def think(uids: list[str]) -> list[dict]:
133
+ return think_prompts([tpb.mcq(items[u], items[u]["options"]) for u in uids],
134
+ [len(items[u]["options"]) for u in uids])
135
+
136
+ for u, r in (zip(think_uids, think(think_uids)) if think_uids else []):
137
+ if r["pred"]:
138
+ think_pred[u] = r["pred"]
139
+ else:
140
+ fallbacks += 1
141
+ print(f"thinking: {len(think_uids)} questions ({sorted(think_levels)}), {fallbacks} fell back to the fast answer")
142
+ all_ballots = {u: [think_pred.get(u)] for u in think_uids} # saved to <output>.ballots.jsonl for cross-model pooling
143
+
144
+ # Self-consistency for selected levels: greedy answer + K sampled reasoning paths, majority vote,
145
+ # ties go to the greedy answer. Fixed seed: reproducible for the same input, code and hardware.
146
+ sc_levels, k = set(cfg.get("sc_levels") or []), int(cfg.get("sc_samples", 0))
147
+ sc_uids = [u for u in think_uids if items[u]["level"] in sc_levels]
148
+ if cfg.get("sc_gate") == "disagree": # only where the free one-step answer disagrees with greedy thinking
149
+ sc_uids = [u for u in sc_uids if think_pred.get(u) != agg[u]["pred"]]
150
+ sc_count = len(sc_uids) if k > 0 else 0
151
+ if sc_uids and k > 0:
152
+ import torch
153
+
154
+ torch.manual_seed(cfg["seed"])
155
+ tscorer.sampling = {"do_sample": True, "temperature": cfg.get("sc_temperature", 0.8),
156
+ "top_p": cfg.get("sc_top_p", 0.95), "top_k": cfg.get("sc_top_k", 64)}
157
+ ballots = {u: [think_pred.get(u)] for u in sc_uids}
158
+ for _ in range(k):
159
+ for u, r in zip(sc_uids, think(sc_uids)):
160
+ ballots[u].append(r["pred"])
161
+ all_ballots[u].append(r["pred"])
162
+ tscorer.sampling = {}
163
+ for u, b in ballots.items():
164
+ counts = Counter(x for x in b if x)
165
+ if not counts:
166
+ continue
167
+ top = max(counts.values())
168
+ winners = [a for a, c in counts.items() if c == top]
169
+ choice = b[0] if b[0] in winners else min(winners)
170
+ sc_changed += choice != think_pred.get(u)
171
+ think_pred[u] = choice
172
+ print(f"self-consistency: {len(sc_uids)} questions ({sorted(sc_levels)}, gate={cfg.get('sc_gate')}), greedy + {k} samples, "
173
+ f"{sc_changed} answers changed by the vote")
174
+
175
+ # Option-order self-consistency: re-ask with the options in K other (cyclic) orders, thinking each time; the vote is over
176
+ # the previous answer (the `prior_predictions` file if given, else the answer so far) and the K re-orderings, ties
177
+ # go to the previous answer. Votes are mapped back to the original option numbering.
178
+ if perm_uids:
179
+ prior = {}
180
+ if cfg.get("prior_predictions"):
181
+ with zipfile.ZipFile(root / cfg["prior_predictions"]) as z:
182
+ for line in z.read("predictions.jsonl").decode("utf-8").splitlines():
183
+ r = json.loads(line)
184
+ prior[(r["level"], r["subject"], r["q_no"])] = int(r["answer"])
185
+ ballots = {u: [prior.get((items[u]["level"], items[u]["subject_raw"], items[u]["q_no"]), think_pred.get(u))]
186
+ for u in perm_uids}
187
+ for kk in range(1, k_perm + 1):
188
+ perms = {u: make_perm(len(items[u]["options"]), kk, "cyclic", cfg["seed"], u) for u in perm_uids}
189
+ res = think_prompts([tpb.mcq(items[u], [items[u]["options"][j] for j in perms[u]]) for u in perm_uids],
190
+ [len(items[u]["options"]) for u in perm_uids])
191
+ for u, r in zip(perm_uids, res):
192
+ ballots[u].append(perms[u][r["pred"] - 1] + 1 if r["pred"] else None)
193
+ print(f"option-order thinking: order {kk}/{k_perm} done ({len(perm_uids)} questions)", flush=True)
194
+ for u, b in ballots.items():
195
+ counts = Counter(x for x in b if x)
196
+ if not counts:
197
+ continue
198
+ top = max(counts.values())
199
+ winners = [a for a, c in counts.items() if c == top]
200
+ choice = b[0] if b[0] in winners else min(winners)
201
+ perm_changed += choice != b[0]
202
+ think_pred[u] = choice
203
+ print(f"option-order self-consistency: {len(perm_uids)} questions ({sorted(perm_levels)}), {k_perm} extra orders, "
204
+ f"{perm_changed} answers changed by the vote")
205
+
206
+ rows = []
207
+ for uid, it in items.items():
208
+ n = len(it["options"])
209
+ ans = think_pred.get(uid, agg[uid]["vote"])
210
+ if ans is None or not 1 <= ans <= n:
211
+ raise SystemExit(f"no valid prediction for {uid}")
212
+ rows.append({"q_no": it["q_no"], "subject": it["subject_raw"], "category": it["category"],
213
+ "level": it["level"], "answer": str(ans)})
214
+
215
+ args.output.parent.mkdir(parents=True, exist_ok=True)
216
+ with zipfile.ZipFile(args.output, "w", zipfile.ZIP_DEFLATED) as z:
217
+ z.writestr("predictions.jsonl", "".join(json.dumps(r, ensure_ascii=False) + "\n" for r in rows))
218
+ if think_uids: # greedy + sampled thinking answers per question (None = unparsed), first = greedy
219
+ Path(str(args.output) + ".ballots.jsonl").write_text("".join(
220
+ json.dumps({"level": items[u]["level"], "subject": items[u]["subject_raw"], "q_no": items[u]["q_no"],
221
+ "ballots": all_ballots[u]}, ensure_ascii=False) + "\n" for u in think_uids), encoding="utf-8")
222
+ digest = hashlib.sha256()
223
+ for f in sorted({str(f) for f, _ in raw}):
224
+ digest.update(Path(f).read_bytes())
225
+ run = {"config": cfg, "n_questions": len(rows), "seconds": round(time.time() - t0, 1),
226
+ "thinking": {"levels": sorted(think_levels), "questions": len(think_uids), "fallbacks": fallbacks},
227
+ "self_consistency": {"levels": sorted(set(cfg.get("sc_levels") or [])), "samples": int(cfg.get("sc_samples", 0)),
228
+ "gate": cfg.get("sc_gate"), "questions": sc_count, "answers_changed": sc_changed},
229
+ "option_order_sc": {"levels": sorted(perm_levels), "orders": k_perm, "questions": len(perm_uids),
230
+ "answers_changed": perm_changed},
231
+ "input_sha256": digest.hexdigest(), "params": loaded_param_stats(model), "env": env_fingerprint()}
232
+ Path(str(args.output) + ".run.json").write_text(json.dumps(run, indent=2, ensure_ascii=False))
233
+ print(f"wrote {len(rows)} predictions -> {args.output} "
234
+ f"({run['params']['loaded_total'] / 1e9:.3f}B parameters loaded, {run['seconds']:.0f}s)")
235
+
236
+
237
+ if __name__ == "__main__":
238
+ main()
predictions.jsonl ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Versions used for our final submission (Python 3.12.3). PyTorch: we used torch 2.14.1 built for CUDA 13.0
2
+ # (NVIDIA GB10, aarch64: pip install torch==2.14.1 --index-url https://download.pytorch.org/whl/cu130); any CUDA build of 2.14.1 works.
3
+ torch==2.14.1
4
+ transformers==5.19.0
5
+ accelerate==1.15.0
6
+ huggingface_hub==2.2.0
7
+ tokenizers==0.23.3
8
+ safetensors==0.8.0
9
+ jinja2==3.1.6
10
+ numpy==2.5.3
11
+ pyyaml==6.0.3
12
+ tqdm==4.70.1
training/.gitignore ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Secrets
2
+ .env
3
+ *.token
4
+
5
+ # Task data (CC BY-NC-ND 4.0): never commit. Fetch with scripts/fetch_data.py.
6
+ data/
7
+
8
+ # Weights, runs, caches
9
+ models/
10
+ checkpoints/
11
+ results/
12
+ *.safetensors
13
+ *.bin
14
+ *.pt
15
+ *.zip
16
+ .venv/
17
+ __pycache__/
18
+ *.pyc
19
+ .cache/
20
+ wandb/
training/DATA_LOG.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Data log
2
+
3
+ Every dataset touched by this project, how it is used, and every closed-API data-generation call (required
4
+ disclosure). Task data is never committed; `scripts/fetch_data.py` re-downloads it at the pinned revision.
5
+
6
+ ## Evaluation data
7
+
8
+ | Dataset | Revision | License | Use | Notes |
9
+ |---|---|---|---|---|
10
+ | SinhalaMMLU public Easy tier (`naist-nlp/SinhalaMMLU`, TEST/easy) | `7dd30681d9` | CC BY-NC-ND 4.0 | Dev evaluation | 1,851 questions, 14 subjects, grades 6-8, 4 options. `Geography/64` dropped (answer label `24`). Cite Pramodya et al., EMNLP 2025. |
11
+ | Global-MMLU `si` (`CohereLabs/Global-MMLU`) | `0e619dbeb3` | Apache-2.0 | Harder internal validation: fixed 2,000-question stratified sample of `test` (ids in `configs/splits/gmmlu_si_val_ids.txt`); `dev` split = few-shot pool | Validation ids must be excluded from any training mix. |
12
+ | Shared-task test set (`SinhalaMMLU-SharedTask/Sinhala-MMLU-SharedTask-Test-Dataset`) | `56fb2da50c` | (organisers) | **Prediction only.** Never used for training, tuning, prompt design or model selection; no answers included | 2,238 questions (easy 642, medium 1,111, hard 485), 4 options, same JSON layout as dev. Stored in `data/test/` (git-ignored). |
13
+ | Belebele `sin_Sinh` (`facebook/belebele`) | `7899cdfa4e` | CC BY-SA 4.0 | **Evaluation only**, never training | 900 reading-comprehension questions. |
14
+
15
+ ## Training data
16
+
17
+ | Dataset | Revision | License | Use | Processing |
18
+ |---|---|---|---|---|
19
+ | Global-MMLU `si` test (minus the 2,000 validation ids) + dev split | `0e619dbeb3` | Apache-2.0 | Fine-tuning MCQs: `data/sft/gmmlu_si_train.jsonl` via `scripts/build_sft_gmmlu.py` | 12,327 pool → 11,447 kept. Dropped 819 with char-5-gram TF-IDF cosine ≥ 0.6 to any validation item (MMLU repeats questions across subjects) and 61 within-pool copies (≥ 0.95). Max similarity of kept items to SinhalaMMLU dev: 0.42. Options shuffled to balanced gold positions except options that refer to other options. Stats: `reports/data_stats_sft_gmmlu.json` |
20
+ | FineWeb-2 `sin_Sinh` (`HuggingFaceFW/fineweb-2`) | `af9c13333e` | ODC-By 1.0 | Continued pretraining | `scripts/build_cpt_corpus.py` (filters below). Already MinHash-deduplicated upstream |
21
+ | Sinhala Wikipedia (`wikimedia/wikipedia`, `20231101.si`) | `b04c8d1ceb` | CC BY-SA 3.0 / GFDL | Continued pretraining | Same filters |
22
+ | NSINA news (`sinhala-nlp/NSINA`) | `a986af81ad` | CC BY-SA 4.0 | Continued pretraining | Same filters |
23
+
24
+ Corpus filters (`scripts/build_cpt_corpus.py`), first failing rule recorded per document; counts in
25
+ `reports/corpus_stats.json`: blocked exam / past-paper / curriculum domains; exam-like text (question-paper phrases or
26
+ ≥ 8 numbered option lines); < 200 characters; < 50% Sinhala letters; < 30% unique lines; exact duplicate across
27
+ sources (normalised text); any word 8-gram shared with a SinhalaMMLU dev or Global-MMLU validation question.
28
+ Not yet available: CulturaX `si` (gated, access not requested), MADLAD-400 `si` (path not found).
29
+
30
+ ### Contamination controls (apply to every training/pretraining source)
31
+
32
+ - SinhalaMMLU dev questions come from **pastpapers.wiki** (93%) and **e-thaksalawa.moe.gov.lk** (5%), i.e. Sri Lankan
33
+ term-test and exam papers. Drop all documents from these domains, and from any other past-paper / exam site, from
34
+ web corpora (FineWeb-2, CulturaX, MADLAD-400, CC-100, OSCAR) before training.
35
+ - N-gram overlap filter of every training corpus against SinhalaMMLU dev and the Global-MMLU validation split.
36
+ - No scraped Sri Lankan O/L or A/L past papers. Ask the organisers before using government textbooks.
37
+
38
+ ## Closed-API data generation (disclosure)
39
+
40
+ _None yet._ For each use: date, provider and model, purpose, prompt template location, number of items generated,
41
+ filtering applied, and where the output is stored.
training/MODEL_MANIFEST.md ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Model manifest
2
+
3
+ Every neural component loaded at inference, with its exact total parameter count, release date and license.
4
+ Shared-task limit: **total parameters of all inference components ≤ 8B** (embeddings, vision towers if loaded,
5
+ adapters on top of the base, MoE total not active, quantisation does not reduce the count).
6
+ Only open-weight models **released before 2026-10-01**.
7
+
8
+ ## Final submission
9
+
10
+ - Base model: `google/gemma-4-E4B-it` @ `ee0ef6023621cff504d758262d4e04895a5af4a2`, text-only extraction
11
+ (`scripts/make_text_only.py`), published as `SinhalaMMLU-SharedTask/team-nexus-gemma-4-e4b-it-text`.
12
+ - No fine-tuned derivative is used: no adapter, no merged weights.
13
+ - Total parameters loaded: 7,463,013,376.
14
+ - Command: `python inference.py` in the team repo, which runs `inference/predict.py` with
15
+ `configs/submission_base_think_gated_sc.yaml` (Codabench submission ID 50, score 62.93).
16
+
17
+ ## Candidate parameter accounting
18
+
19
+ Generated by `python scripts/count_params.py` (counts read from safetensors headers; tied embeddings counted once;
20
+ "Instantiated" is what `transformers` builds from the config). "Repo created" is the Hugging Face repo creation
21
+ date and is only a proxy for the release date: confirm against the official announcement before relying on it.
22
+
23
+ <!-- AUTO:PARAMS:BEGIN -->
24
+
25
+ | Model | Verdict | Total (all stored) | Text model | Vision | Audio | MTP | Embeddings | Tied | Instantiated (class) | Repo created | License | Commit |
26
+ |---|---|---:|---:|---:|---:|---:|---:|---|---|---|---|---|
27
+ | `google/gemma-3-4b-it` | OK | 4.300B | 3.880B | 0.420B | - | - | 0.671B | no | 4.300B (Gemma3ForConditionalGeneration) | 2025-02-20 | gemma | `093f9f388b` |
28
+ | `google/gemma-3n-E4B-it` | OK | 7.850B | 6.867B | 0.299B | 0.685B | - | 2.886B | no | 7.819B (Gemma3nForConditionalGeneration) | 2025-06-03 | gemma | `c1221e9c62` |
29
+ | `google/gemma-3n-E2B-it` | OK | 5.439B | 4.456B | 0.299B | 0.685B | - | 2.551B | no | 5.418B (Gemma3nForConditionalGeneration) | 2025-06-12 | gemma | `5e092ebca1` |
30
+ | `google/gemma-4-E4B-it` | OK | 7.996B | 7.518B | 0.169B | 0.309B | - | 3.490B | yes | 7.941B (Gemma4ForConditionalGeneration) | 2026-03-02 | apache-2.0 | `ee0ef60236` |
31
+ | `google/gemma-4-E2B-it` | OK | 5.123B | 4.647B | 0.169B | 0.307B | - | 2.751B | yes | 5.104B (Gemma4ForConditionalGeneration) | 2026-03-02 | apache-2.0 | `3e22461f65` |
32
+ | `google/gemma-4-12B-it` | OVER 8B | 11.960B | 11.907B | 0.050B | 0.002B | - | 1.007B | yes | 11.960B (Gemma4UnifiedForConditionalGeneration) | 2026-05-23 | apache-2.0 | `707f0a3b8a` |
33
+ | `Qwen/Qwen3-4B-Instruct-2507` | OK | 4.022B | 4.022B | - | - | - | 0.389B | yes | 4.022B (Qwen3ForCausalLM) | 2025-08-05 | apache-2.0 | `cdbee75f17` |
34
+ | `Qwen/Qwen3-4B` | OK | 4.022B | 4.022B | - | - | - | 0.389B | yes | 4.022B (Qwen3ForCausalLM) | 2025-04-27 | apache-2.0 | `1cfa9a7208` |
35
+ | `Qwen/Qwen3.5-4B` | OK | 4.660B | 4.206B | 0.334B | - | 0.121B | 0.636B | yes | 4.206B (Qwen3_5ForCausalLM) | 2026-02-27 | apache-2.0 | `851bf6e806` |
36
+ | `Qwen/Qwen3-8B` | OVER 8B | 8.191B | 8.191B | - | - | - | 1.245B | no | 8.191B (Qwen3ForCausalLM) | 2025-04-27 | apache-2.0 | `b968826d9c` |
37
+ | `Qwen/Qwen3.5-9B` | OVER 8B | 9.653B | 8.954B | 0.456B | - | 0.243B | 2.034B | no | 8.954B (Qwen3_5ForCausalLM) | 2026-02-27 | apache-2.0 | `c202236235` |
38
+ | `meta-llama/Llama-3.2-3B-Instruct` | OK | 3.213B | 3.213B | - | - | - | 0.394B | yes | 3.213B (LlamaForCausalLM) | 2024-09-18 | llama3.2 | `0cb88a4f76` |
39
+ | `meta-llama/Llama-3.1-8B-Instruct` | OVER 8B | 8.030B | 8.030B | - | - | - | 1.051B | no | 8.030B (LlamaForCausalLM) | 2024-07-18 | llama3.1 | `0e9e39f249` |
40
+ | `polyglots/SinLlama_v01`<br>adapter on `meta-llama/Meta-Llama-3-8B` (+3.592B) | OVER 8B | 11.622B | 11.622B | - | - | - | 1.051B | no | base 8030261248 + adapter | 2024-11-08 | ? | `4f464b14d5` |
41
+ | `ibm-granite/granite-4.1-8b` | OVER 8B | 8.381B | 8.381B | - | - | - | 0.411B | yes | 8.381B (GraniteForCausalLM) | 2026-04-06 | apache-2.0 | `1504002f65` |
42
+ | `ibm-granite/granite-4.2-8b` | OVER 8B | 8.792B | 8.792B | - | - | - | 0.822B | no | 8.792B (GraniteForCausalLM) | 2026-08-07 | apache-2.0 | `f8de16cdcd` |
43
+ | `ibm-granite/granite-4.2-3b` | OK | 3.660B | 3.660B | - | - | - | 0.514B | no | 3.660B (GraniteForCausalLM) | 2026-08-07 | apache-2.0 | `e459acceac` |
44
+ | `HuggingFaceTB/SmolLM3-3B` | OK | 3.075B | 3.075B | - | - | - | 0.263B | yes | 3.075B (SmolLM3ForCausalLM) | 2025-07-08 | apache-2.0 | `a07cc9a04f` |
45
+ | `microsoft/Phi-4-mini-instruct` | OK | 3.836B | 3.836B | - | - | - | 0.615B | yes | 3.836B (Phi3ForCausalLM) | 2025-02-19 | mit | `cfbefacb99` |
46
+
47
+ <!-- AUTO:PARAMS:END -->
48
+
49
+ ## Notes
50
+
51
+ - A verdict of "OK only text-only" means the checkpoint stores a vision/audio tower or MTP head. The submission
52
+ must load a text-only model (and the stripped weights' count is what goes in the final row above).
training/README.md ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SinhalaMMLU shared task (≤ 8B)
2
+
3
+ System for the ICTer 2026 SinhalaMMLU shared task: Sinhala multiple-choice QA with open-weight models totalling
4
+ ≤ 8B parameters, no retrieval, no internet at inference. Built on SinhalaMMLU (Pramodya et al., EMNLP 2025):
5
+
6
+ ```bibtex
7
+ @inproceedings{pramodya-etal-2025-sinhalammlu,
8
+ title = "{S}inhala{MMLU}: A Comprehensive Benchmark for Evaluating Multitask Language Understanding in {S}inhala",
9
+ author = "Pramodya, Ashmari and Nelki, Nirasha and Shalinda, Heshan and Liyanage, Chamila and Sakai, Yusuke and
10
+ Pushpananda, Randil and Weerasinghe, Ruvan and Kamigaito, Hidetaka and Watanabe, Taro",
11
+ booktitle = "Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing",
12
+ year = "2025",
13
+ pages = "32931--32949",
14
+ url = "https://aclanthology.org/2025.emnlp-main.1673/"
15
+ }
16
+ ```
17
+
18
+ **Keep this repository private until the final deadline. Never commit task data (`data/` is git-ignored).**
19
+
20
+ ## Layout
21
+
22
+ | Path | Contents |
23
+ |---|---|
24
+ | `data/` | Git-ignored. `raw/` downloads, `processed/` normalised JSONL |
25
+ | `eval/` | Evaluation harness (`run_eval.py`, scorers, metrics, `summarize.py`) |
26
+ | `train/` | Fine-tuning / continued-pretraining code |
27
+ | `inference/` | Final offline submission pipeline |
28
+ | `configs/` | Candidate models, fixed data splits |
29
+ | `scripts/` | Data building, parameter counting, overlap checks, synthetic MCQ generation |
30
+ | `scripts/runs/` | The exact experiment queues behind every reported result and submission (see its README) |
31
+ | `run_submission.sh` | One-command offline reproduction of a submission |
32
+ | `reports/` | Aggregate results tables (no task data) |
33
+ | `MODEL_MANIFEST.md` | Every model: exact total parameters, release date, license |
34
+ | `DATA_LOG.md` | Every dataset and every closed-API data-generation use |
35
+
36
+ ## Setup (DGX Spark, aarch64, CUDA 13)
37
+
38
+ ```bash
39
+ python3 -m venv .venv
40
+ .venv/bin/pip install torch --index-url https://download.pytorch.org/whl/cu130
41
+ .venv/bin/pip install -r requirements.lock.txt
42
+ echo "hf_token = hf_..." > .env && chmod 600 .env # read token; accept gated terms for SinhalaMMLU, Gemma 3/3n, Llama
43
+ ```
44
+
45
+ Triton (used by `torch.compile`, Liger Kernel and flash-linear-attention) compiles helpers against `Python.h`.
46
+ If `python3.12-dev` is installed, nothing else is needed. Without sudo, unpack the headers locally; the code
47
+ (`eval/common.py: ensure_python_headers`) then adds them to `CPATH` automatically:
48
+
49
+ ```bash
50
+ mkdir -p ~/.local/pydev && cd ~/.local/pydev
51
+ V=3.12.3-1ubuntu0.17 # any 3.12.3 Ubuntu build; the machine's apt index may list a version no longer on the mirror
52
+ for p in libpython3.12-dev python3.12-dev; do
53
+ curl -fO "http://ports.ubuntu.com/ubuntu-ports/pool/main/p/python3.12/${p}_${V}_arm64.deb"; done
54
+ for f in *.deb; do dpkg -x "$f" root; done
55
+ ```
56
+
57
+ Long GPU jobs: PyTorch is capped at 100 GB (`SMMLU_GPU_MEM_GB`). The Spark shares memory between CPU and GPU, so
58
+ an uncapped job triggers the kernel OOM killer (which also kills tmux) instead of a CUDA out-of-memory error.
59
+
60
+ ## Commands
61
+
62
+ ```bash
63
+ .venv/bin/python scripts/fetch_data.py # SinhalaMMLU dev, Global-MMLU si, Belebele si -> data/raw
64
+ .venv/bin/python scripts/prepare_data.py # -> data/processed/*.jsonl (fixed splits in configs/splits)
65
+ .venv/bin/python scripts/count_params.py # exact parameter counts -> MODEL_MANIFEST.md
66
+ scripts/runs/run_baselines.sh # zero-shot baselines -> results/, reports/
67
+ ./run_submission.sh [config] # reproduce a submission offline -> results/submissions/final.zip
68
+
69
+ # One model, any setting
70
+ .venv/bin/python -m eval.run_eval --model google/gemma-4-E4B-it --data sinhalammlu_dev gmmlu_si_val \
71
+ --method logit --n-perms 4 --lang en --run-name my_run
72
+ ```
73
+
74
+ ### Harness options
75
+
76
+ - `--method logit` (next-token probability over labels 1-4), `generate` (greedy decode + parse), `cloze`
77
+ (length-normalised option likelihood).
78
+ - `--n-perms K --perm-mode cyclic|random`: score each question under K option orders. Reports original-order
79
+ accuracy, permutation-vote accuracy, spread across orders, consistency, and position-bias tables.
80
+ - `--lang en|si` instruction language; `--chat auto|on|off`; `--fewshot-file F --n-shot N` (the same fixed
81
+ examples for every question, as the rules require).
82
+ - Breakdowns by dataset, domain, subject, grade and (Global-MMLU) cultural sensitivity, with Wilson 95% CIs.
83
+ - Every run stores the exact model commit, library versions, git commit and the full argument set in `metrics.json`.
84
+ - `--write-submission` writes a Codabench-format `predictions.zip` (`predictions.jsonl` with
85
+ `q_no, subject, category, level, answer`).
86
+
87
+ ## Rules checklist
88
+
89
+ - Total parameters of everything loaded at inference ≤ 8B (embeddings, vision/audio towers if loaded, adapters).
90
+ - Open-weight models released before 2026-10-01 only. No API, internet or retrieval of any kind at inference.
91
+ - Fixed few-shot examples only (identical for every question). No training, tuning or prompt design on test questions.
92
+ - Closed APIs only for training-data generation, logged in `DATA_LOG.md`.
93
+ - Final pipeline runs offline from one command with pinned versions and fixed seeds.
training/configs/models.yaml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Candidate models. `chat` sets prompt wrapping in baselines; `baseline: false` = count parameters only.
2
+ # Every entry must be verified in MODEL_MANIFEST.md (total params ≤ 8B, released before 2026-10-01, license).
3
+ candidates:
4
+ # Gemma
5
+ - {id: google/gemma-3-4b-it, chat: true}
6
+ - {id: google/gemma-3n-E4B-it, chat: true}
7
+ - {id: google/gemma-3n-E2B-it, chat: true, baseline: false}
8
+ - {id: google/gemma-4-E4B-it, chat: true}
9
+ - {id: google/gemma-4-E2B-it, chat: true, baseline: false}
10
+ - {id: google/gemma-4-12B-it, chat: true, baseline: false} # reference: expected over the limit
11
+ # Qwen
12
+ - {id: Qwen/Qwen3-4B-Instruct-2507, chat: true}
13
+ - {id: Qwen/Qwen3-4B, chat: true} # hybrid thinking model, thinking disabled
14
+ - {id: Qwen/Qwen3.5-4B, chat: true}
15
+ - {id: Qwen/Qwen3-8B, chat: true, baseline: false} # reference: expected ~8.2B
16
+ - {id: Qwen/Qwen3.5-9B, chat: true, baseline: false} # reference: expected over the limit
17
+ # Llama / SinLlama
18
+ - {id: meta-llama/Llama-3.2-3B-Instruct, chat: true}
19
+ - {id: meta-llama/Llama-3.1-8B-Instruct, chat: true, baseline: false} # 8.03B: needs organiser ruling
20
+ - {id: polyglots/SinLlama_v01, chat: false, baseline: false} # LoRA adapter on Meta-Llama-3-8B + extended vocab
21
+ # Others
22
+ - {id: ibm-granite/granite-4.1-8b, chat: true, baseline: false} # 8.38B: over the limit
23
+ - {id: ibm-granite/granite-4.2-8b, chat: true, baseline: false} # 8.79B: over the limit
24
+ - {id: ibm-granite/granite-4.2-3b, chat: true}
25
+ - {id: HuggingFaceTB/SmolLM3-3B, chat: true}
26
+ - {id: microsoft/Phi-4-mini-instruct, chat: true}
training/configs/splits/gmmlu_si_val_ids.txt ADDED
@@ -0,0 +1,2000 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ gmmlu_si/test/abstract_algebra/test/0
2
+ gmmlu_si/test/abstract_algebra/test/12
3
+ gmmlu_si/test/abstract_algebra/test/18
4
+ gmmlu_si/test/abstract_algebra/test/19
5
+ gmmlu_si/test/abstract_algebra/test/2
6
+ gmmlu_si/test/abstract_algebra/test/21
7
+ gmmlu_si/test/abstract_algebra/test/36
8
+ gmmlu_si/test/abstract_algebra/test/5
9
+ gmmlu_si/test/abstract_algebra/test/6
10
+ gmmlu_si/test/abstract_algebra/test/76
11
+ gmmlu_si/test/abstract_algebra/test/86
12
+ gmmlu_si/test/abstract_algebra/test/89
13
+ gmmlu_si/test/abstract_algebra/test/98
14
+ gmmlu_si/test/abstract_algebra/test/99
15
+ gmmlu_si/test/anatomy/test/100
16
+ gmmlu_si/test/anatomy/test/101
17
+ gmmlu_si/test/anatomy/test/104
18
+ gmmlu_si/test/anatomy/test/108
19
+ gmmlu_si/test/anatomy/test/112
20
+ gmmlu_si/test/anatomy/test/113
21
+ gmmlu_si/test/anatomy/test/118
22
+ gmmlu_si/test/anatomy/test/119
23
+ gmmlu_si/test/anatomy/test/124
24
+ gmmlu_si/test/anatomy/test/132
25
+ gmmlu_si/test/anatomy/test/19
26
+ gmmlu_si/test/anatomy/test/34
27
+ gmmlu_si/test/anatomy/test/57
28
+ gmmlu_si/test/anatomy/test/84
29
+ gmmlu_si/test/anatomy/test/85
30
+ gmmlu_si/test/anatomy/test/89
31
+ gmmlu_si/test/anatomy/test/9
32
+ gmmlu_si/test/anatomy/test/93
33
+ gmmlu_si/test/anatomy/test/96
34
+ gmmlu_si/test/astronomy/test/1
35
+ gmmlu_si/test/astronomy/test/101
36
+ gmmlu_si/test/astronomy/test/11
37
+ gmmlu_si/test/astronomy/test/112
38
+ gmmlu_si/test/astronomy/test/114
39
+ gmmlu_si/test/astronomy/test/115
40
+ gmmlu_si/test/astronomy/test/130
41
+ gmmlu_si/test/astronomy/test/136
42
+ gmmlu_si/test/astronomy/test/144
43
+ gmmlu_si/test/astronomy/test/19
44
+ gmmlu_si/test/astronomy/test/23
45
+ gmmlu_si/test/astronomy/test/24
46
+ gmmlu_si/test/astronomy/test/31
47
+ gmmlu_si/test/astronomy/test/39
48
+ gmmlu_si/test/astronomy/test/43
49
+ gmmlu_si/test/astronomy/test/49
50
+ gmmlu_si/test/astronomy/test/67
51
+ gmmlu_si/test/astronomy/test/71
52
+ gmmlu_si/test/astronomy/test/73
53
+ gmmlu_si/test/astronomy/test/8
54
+ gmmlu_si/test/astronomy/test/84
55
+ gmmlu_si/test/astronomy/test/90
56
+ gmmlu_si/test/business_ethics/test/11
57
+ gmmlu_si/test/business_ethics/test/17
58
+ gmmlu_si/test/business_ethics/test/21
59
+ gmmlu_si/test/business_ethics/test/25
60
+ gmmlu_si/test/business_ethics/test/27
61
+ gmmlu_si/test/business_ethics/test/33
62
+ gmmlu_si/test/business_ethics/test/44
63
+ gmmlu_si/test/business_ethics/test/49
64
+ gmmlu_si/test/business_ethics/test/66
65
+ gmmlu_si/test/business_ethics/test/7
66
+ gmmlu_si/test/business_ethics/test/73
67
+ gmmlu_si/test/business_ethics/test/77
68
+ gmmlu_si/test/business_ethics/test/86
69
+ gmmlu_si/test/business_ethics/test/98
70
+ gmmlu_si/test/clinical_knowledge/test/107
71
+ gmmlu_si/test/clinical_knowledge/test/108
72
+ gmmlu_si/test/clinical_knowledge/test/116
73
+ gmmlu_si/test/clinical_knowledge/test/137
74
+ gmmlu_si/test/clinical_knowledge/test/17
75
+ gmmlu_si/test/clinical_knowledge/test/177
76
+ gmmlu_si/test/clinical_knowledge/test/179
77
+ gmmlu_si/test/clinical_knowledge/test/18
78
+ gmmlu_si/test/clinical_knowledge/test/187
79
+ gmmlu_si/test/clinical_knowledge/test/2
80
+ gmmlu_si/test/clinical_knowledge/test/204
81
+ gmmlu_si/test/clinical_knowledge/test/205
82
+ gmmlu_si/test/clinical_knowledge/test/206
83
+ gmmlu_si/test/clinical_knowledge/test/207
84
+ gmmlu_si/test/clinical_knowledge/test/211
85
+ gmmlu_si/test/clinical_knowledge/test/217
86
+ gmmlu_si/test/clinical_knowledge/test/223
87
+ gmmlu_si/test/clinical_knowledge/test/225
88
+ gmmlu_si/test/clinical_knowledge/test/228
89
+ gmmlu_si/test/clinical_knowledge/test/232
90
+ gmmlu_si/test/clinical_knowledge/test/235
91
+ gmmlu_si/test/clinical_knowledge/test/236
92
+ gmmlu_si/test/clinical_knowledge/test/29
93
+ gmmlu_si/test/clinical_knowledge/test/36
94
+ gmmlu_si/test/clinical_knowledge/test/4
95
+ gmmlu_si/test/clinical_knowledge/test/40
96
+ gmmlu_si/test/clinical_knowledge/test/48
97
+ gmmlu_si/test/clinical_knowledge/test/49
98
+ gmmlu_si/test/clinical_knowledge/test/52
99
+ gmmlu_si/test/clinical_knowledge/test/60
100
+ gmmlu_si/test/clinical_knowledge/test/63
101
+ gmmlu_si/test/clinical_knowledge/test/7
102
+ gmmlu_si/test/clinical_knowledge/test/75
103
+ gmmlu_si/test/clinical_knowledge/test/8
104
+ gmmlu_si/test/clinical_knowledge/test/9
105
+ gmmlu_si/test/clinical_knowledge/test/92
106
+ gmmlu_si/test/clinical_knowledge/test/97
107
+ gmmlu_si/test/clinical_knowledge/test/98
108
+ gmmlu_si/test/college_biology/test/121
109
+ gmmlu_si/test/college_biology/test/122
110
+ gmmlu_si/test/college_biology/test/125
111
+ gmmlu_si/test/college_biology/test/126
112
+ gmmlu_si/test/college_biology/test/133
113
+ gmmlu_si/test/college_biology/test/134
114
+ gmmlu_si/test/college_biology/test/140
115
+ gmmlu_si/test/college_biology/test/142
116
+ gmmlu_si/test/college_biology/test/28
117
+ gmmlu_si/test/college_biology/test/30
118
+ gmmlu_si/test/college_biology/test/32
119
+ gmmlu_si/test/college_biology/test/37
120
+ gmmlu_si/test/college_biology/test/43
121
+ gmmlu_si/test/college_biology/test/49
122
+ gmmlu_si/test/college_biology/test/56
123
+ gmmlu_si/test/college_biology/test/65
124
+ gmmlu_si/test/college_biology/test/7
125
+ gmmlu_si/test/college_biology/test/70
126
+ gmmlu_si/test/college_biology/test/72
127
+ gmmlu_si/test/college_biology/test/81
128
+ gmmlu_si/test/college_biology/test/91
129
+ gmmlu_si/test/college_chemistry/test/12
130
+ gmmlu_si/test/college_chemistry/test/14
131
+ gmmlu_si/test/college_chemistry/test/17
132
+ gmmlu_si/test/college_chemistry/test/18
133
+ gmmlu_si/test/college_chemistry/test/19
134
+ gmmlu_si/test/college_chemistry/test/33
135
+ gmmlu_si/test/college_chemistry/test/34
136
+ gmmlu_si/test/college_chemistry/test/41
137
+ gmmlu_si/test/college_chemistry/test/44
138
+ gmmlu_si/test/college_chemistry/test/45
139
+ gmmlu_si/test/college_chemistry/test/54
140
+ gmmlu_si/test/college_chemistry/test/67
141
+ gmmlu_si/test/college_chemistry/test/9
142
+ gmmlu_si/test/college_chemistry/test/92
143
+ gmmlu_si/test/college_computer_science/test/16
144
+ gmmlu_si/test/college_computer_science/test/17
145
+ gmmlu_si/test/college_computer_science/test/2
146
+ gmmlu_si/test/college_computer_science/test/30
147
+ gmmlu_si/test/college_computer_science/test/31
148
+ gmmlu_si/test/college_computer_science/test/36
149
+ gmmlu_si/test/college_computer_science/test/38
150
+ gmmlu_si/test/college_computer_science/test/54
151
+ gmmlu_si/test/college_computer_science/test/58
152
+ gmmlu_si/test/college_computer_science/test/61
153
+ gmmlu_si/test/college_computer_science/test/67
154
+ gmmlu_si/test/college_computer_science/test/76
155
+ gmmlu_si/test/college_computer_science/test/89
156
+ gmmlu_si/test/college_computer_science/test/90
157
+ gmmlu_si/test/college_mathematics/test/15
158
+ gmmlu_si/test/college_mathematics/test/26
159
+ gmmlu_si/test/college_mathematics/test/29
160
+ gmmlu_si/test/college_mathematics/test/32
161
+ gmmlu_si/test/college_mathematics/test/43
162
+ gmmlu_si/test/college_mathematics/test/5
163
+ gmmlu_si/test/college_mathematics/test/50
164
+ gmmlu_si/test/college_mathematics/test/57
165
+ gmmlu_si/test/college_mathematics/test/66
166
+ gmmlu_si/test/college_mathematics/test/68
167
+ gmmlu_si/test/college_mathematics/test/70
168
+ gmmlu_si/test/college_mathematics/test/76
169
+ gmmlu_si/test/college_mathematics/test/9
170
+ gmmlu_si/test/college_mathematics/test/98
171
+ gmmlu_si/test/college_medicine/test/0
172
+ gmmlu_si/test/college_medicine/test/107
173
+ gmmlu_si/test/college_medicine/test/109
174
+ gmmlu_si/test/college_medicine/test/111
175
+ gmmlu_si/test/college_medicine/test/113
176
+ gmmlu_si/test/college_medicine/test/118
177
+ gmmlu_si/test/college_medicine/test/128
178
+ gmmlu_si/test/college_medicine/test/13
179
+ gmmlu_si/test/college_medicine/test/131
180
+ gmmlu_si/test/college_medicine/test/136
181
+ gmmlu_si/test/college_medicine/test/137
182
+ gmmlu_si/test/college_medicine/test/146
183
+ gmmlu_si/test/college_medicine/test/148
184
+ gmmlu_si/test/college_medicine/test/162
185
+ gmmlu_si/test/college_medicine/test/18
186
+ gmmlu_si/test/college_medicine/test/2
187
+ gmmlu_si/test/college_medicine/test/30
188
+ gmmlu_si/test/college_medicine/test/33
189
+ gmmlu_si/test/college_medicine/test/42
190
+ gmmlu_si/test/college_medicine/test/51
191
+ gmmlu_si/test/college_medicine/test/69
192
+ gmmlu_si/test/college_medicine/test/7
193
+ gmmlu_si/test/college_medicine/test/87
194
+ gmmlu_si/test/college_medicine/test/89
195
+ gmmlu_si/test/college_medicine/test/91
196
+ gmmlu_si/test/college_physics/test/17
197
+ gmmlu_si/test/college_physics/test/24
198
+ gmmlu_si/test/college_physics/test/37
199
+ gmmlu_si/test/college_physics/test/39
200
+ gmmlu_si/test/college_physics/test/41
201
+ gmmlu_si/test/college_physics/test/43
202
+ gmmlu_si/test/college_physics/test/53
203
+ gmmlu_si/test/college_physics/test/54
204
+ gmmlu_si/test/college_physics/test/56
205
+ gmmlu_si/test/college_physics/test/69
206
+ gmmlu_si/test/college_physics/test/72
207
+ gmmlu_si/test/college_physics/test/73
208
+ gmmlu_si/test/college_physics/test/8
209
+ gmmlu_si/test/college_physics/test/86
210
+ gmmlu_si/test/college_physics/test/95
211
+ gmmlu_si/test/computer_security/test/14
212
+ gmmlu_si/test/computer_security/test/21
213
+ gmmlu_si/test/computer_security/test/33
214
+ gmmlu_si/test/computer_security/test/35
215
+ gmmlu_si/test/computer_security/test/40
216
+ gmmlu_si/test/computer_security/test/43
217
+ gmmlu_si/test/computer_security/test/49
218
+ gmmlu_si/test/computer_security/test/52
219
+ gmmlu_si/test/computer_security/test/54
220
+ gmmlu_si/test/computer_security/test/6
221
+ gmmlu_si/test/computer_security/test/7
222
+ gmmlu_si/test/computer_security/test/77
223
+ gmmlu_si/test/computer_security/test/9
224
+ gmmlu_si/test/computer_security/test/91
225
+ gmmlu_si/test/conceptual_physics/test/0
226
+ gmmlu_si/test/conceptual_physics/test/114
227
+ gmmlu_si/test/conceptual_physics/test/134
228
+ gmmlu_si/test/conceptual_physics/test/136
229
+ gmmlu_si/test/conceptual_physics/test/137
230
+ gmmlu_si/test/conceptual_physics/test/140
231
+ gmmlu_si/test/conceptual_physics/test/145
232
+ gmmlu_si/test/conceptual_physics/test/163
233
+ gmmlu_si/test/conceptual_physics/test/167
234
+ gmmlu_si/test/conceptual_physics/test/169
235
+ gmmlu_si/test/conceptual_physics/test/178
236
+ gmmlu_si/test/conceptual_physics/test/183
237
+ gmmlu_si/test/conceptual_physics/test/186
238
+ gmmlu_si/test/conceptual_physics/test/19
239
+ gmmlu_si/test/conceptual_physics/test/190
240
+ gmmlu_si/test/conceptual_physics/test/197
241
+ gmmlu_si/test/conceptual_physics/test/203
242
+ gmmlu_si/test/conceptual_physics/test/207
243
+ gmmlu_si/test/conceptual_physics/test/208
244
+ gmmlu_si/test/conceptual_physics/test/210
245
+ gmmlu_si/test/conceptual_physics/test/217
246
+ gmmlu_si/test/conceptual_physics/test/229
247
+ gmmlu_si/test/conceptual_physics/test/234
248
+ gmmlu_si/test/conceptual_physics/test/25
249
+ gmmlu_si/test/conceptual_physics/test/31
250
+ gmmlu_si/test/conceptual_physics/test/38
251
+ gmmlu_si/test/conceptual_physics/test/41
252
+ gmmlu_si/test/conceptual_physics/test/44
253
+ gmmlu_si/test/conceptual_physics/test/66
254
+ gmmlu_si/test/conceptual_physics/test/78
255
+ gmmlu_si/test/conceptual_physics/test/81
256
+ gmmlu_si/test/conceptual_physics/test/86
257
+ gmmlu_si/test/conceptual_physics/test/92
258
+ gmmlu_si/test/econometrics/test/100
259
+ gmmlu_si/test/econometrics/test/105
260
+ gmmlu_si/test/econometrics/test/11
261
+ gmmlu_si/test/econometrics/test/113
262
+ gmmlu_si/test/econometrics/test/34
263
+ gmmlu_si/test/econometrics/test/36
264
+ gmmlu_si/test/econometrics/test/38
265
+ gmmlu_si/test/econometrics/test/5
266
+ gmmlu_si/test/econometrics/test/50
267
+ gmmlu_si/test/econometrics/test/64
268
+ gmmlu_si/test/econometrics/test/72
269
+ gmmlu_si/test/econometrics/test/8
270
+ gmmlu_si/test/econometrics/test/83
271
+ gmmlu_si/test/econometrics/test/88
272
+ gmmlu_si/test/econometrics/test/89
273
+ gmmlu_si/test/econometrics/test/99
274
+ gmmlu_si/test/electrical_engineering/test/114
275
+ gmmlu_si/test/electrical_engineering/test/117
276
+ gmmlu_si/test/electrical_engineering/test/125
277
+ gmmlu_si/test/electrical_engineering/test/142
278
+ gmmlu_si/test/electrical_engineering/test/15
279
+ gmmlu_si/test/electrical_engineering/test/24
280
+ gmmlu_si/test/electrical_engineering/test/3
281
+ gmmlu_si/test/electrical_engineering/test/32
282
+ gmmlu_si/test/electrical_engineering/test/35
283
+ gmmlu_si/test/electrical_engineering/test/36
284
+ gmmlu_si/test/electrical_engineering/test/37
285
+ gmmlu_si/test/electrical_engineering/test/42
286
+ gmmlu_si/test/electrical_engineering/test/44
287
+ gmmlu_si/test/electrical_engineering/test/45
288
+ gmmlu_si/test/electrical_engineering/test/46
289
+ gmmlu_si/test/electrical_engineering/test/74
290
+ gmmlu_si/test/electrical_engineering/test/86
291
+ gmmlu_si/test/electrical_engineering/test/9
292
+ gmmlu_si/test/electrical_engineering/test/91
293
+ gmmlu_si/test/electrical_engineering/test/95
294
+ gmmlu_si/test/electrical_engineering/test/99
295
+ gmmlu_si/test/elementary_mathematics/test/106
296
+ gmmlu_si/test/elementary_mathematics/test/110
297
+ gmmlu_si/test/elementary_mathematics/test/115
298
+ gmmlu_si/test/elementary_mathematics/test/118
299
+ gmmlu_si/test/elementary_mathematics/test/129
300
+ gmmlu_si/test/elementary_mathematics/test/13
301
+ gmmlu_si/test/elementary_mathematics/test/136
302
+ gmmlu_si/test/elementary_mathematics/test/158
303
+ gmmlu_si/test/elementary_mathematics/test/161
304
+ gmmlu_si/test/elementary_mathematics/test/162
305
+ gmmlu_si/test/elementary_mathematics/test/165
306
+ gmmlu_si/test/elementary_mathematics/test/17
307
+ gmmlu_si/test/elementary_mathematics/test/173
308
+ gmmlu_si/test/elementary_mathematics/test/174
309
+ gmmlu_si/test/elementary_mathematics/test/194
310
+ gmmlu_si/test/elementary_mathematics/test/2
311
+ gmmlu_si/test/elementary_mathematics/test/203
312
+ gmmlu_si/test/elementary_mathematics/test/21
313
+ gmmlu_si/test/elementary_mathematics/test/216
314
+ gmmlu_si/test/elementary_mathematics/test/218
315
+ gmmlu_si/test/elementary_mathematics/test/239
316
+ gmmlu_si/test/elementary_mathematics/test/242
317
+ gmmlu_si/test/elementary_mathematics/test/249
318
+ gmmlu_si/test/elementary_mathematics/test/250
319
+ gmmlu_si/test/elementary_mathematics/test/259
320
+ gmmlu_si/test/elementary_mathematics/test/261
321
+ gmmlu_si/test/elementary_mathematics/test/27
322
+ gmmlu_si/test/elementary_mathematics/test/28
323
+ gmmlu_si/test/elementary_mathematics/test/280
324
+ gmmlu_si/test/elementary_mathematics/test/299
325
+ gmmlu_si/test/elementary_mathematics/test/318
326
+ gmmlu_si/test/elementary_mathematics/test/321
327
+ gmmlu_si/test/elementary_mathematics/test/328
328
+ gmmlu_si/test/elementary_mathematics/test/330
329
+ gmmlu_si/test/elementary_mathematics/test/331
330
+ gmmlu_si/test/elementary_mathematics/test/335
331
+ gmmlu_si/test/elementary_mathematics/test/336
332
+ gmmlu_si/test/elementary_mathematics/test/343
333
+ gmmlu_si/test/elementary_mathematics/test/357
334
+ gmmlu_si/test/elementary_mathematics/test/358
335
+ gmmlu_si/test/elementary_mathematics/test/365
336
+ gmmlu_si/test/elementary_mathematics/test/368
337
+ gmmlu_si/test/elementary_mathematics/test/44
338
+ gmmlu_si/test/elementary_mathematics/test/45
339
+ gmmlu_si/test/elementary_mathematics/test/6
340
+ gmmlu_si/test/elementary_mathematics/test/65
341
+ gmmlu_si/test/elementary_mathematics/test/66
342
+ gmmlu_si/test/elementary_mathematics/test/7
343
+ gmmlu_si/test/elementary_mathematics/test/73
344
+ gmmlu_si/test/elementary_mathematics/test/74
345
+ gmmlu_si/test/elementary_mathematics/test/76
346
+ gmmlu_si/test/elementary_mathematics/test/77
347
+ gmmlu_si/test/elementary_mathematics/test/80
348
+ gmmlu_si/test/elementary_mathematics/test/85
349
+ gmmlu_si/test/formal_logic/test/102
350
+ gmmlu_si/test/formal_logic/test/105
351
+ gmmlu_si/test/formal_logic/test/106
352
+ gmmlu_si/test/formal_logic/test/21
353
+ gmmlu_si/test/formal_logic/test/28
354
+ gmmlu_si/test/formal_logic/test/32
355
+ gmmlu_si/test/formal_logic/test/37
356
+ gmmlu_si/test/formal_logic/test/47
357
+ gmmlu_si/test/formal_logic/test/50
358
+ gmmlu_si/test/formal_logic/test/54
359
+ gmmlu_si/test/formal_logic/test/55
360
+ gmmlu_si/test/formal_logic/test/56
361
+ gmmlu_si/test/formal_logic/test/63
362
+ gmmlu_si/test/formal_logic/test/73
363
+ gmmlu_si/test/formal_logic/test/82
364
+ gmmlu_si/test/formal_logic/test/83
365
+ gmmlu_si/test/formal_logic/test/88
366
+ gmmlu_si/test/formal_logic/test/93
367
+ gmmlu_si/test/global_facts/test/11
368
+ gmmlu_si/test/global_facts/test/14
369
+ gmmlu_si/test/global_facts/test/18
370
+ gmmlu_si/test/global_facts/test/31
371
+ gmmlu_si/test/global_facts/test/35
372
+ gmmlu_si/test/global_facts/test/49
373
+ gmmlu_si/test/global_facts/test/52
374
+ gmmlu_si/test/global_facts/test/60
375
+ gmmlu_si/test/global_facts/test/66
376
+ gmmlu_si/test/global_facts/test/69
377
+ gmmlu_si/test/global_facts/test/77
378
+ gmmlu_si/test/global_facts/test/80
379
+ gmmlu_si/test/global_facts/test/89
380
+ gmmlu_si/test/global_facts/test/98
381
+ gmmlu_si/test/high_school_biology/test/101
382
+ gmmlu_si/test/high_school_biology/test/106
383
+ gmmlu_si/test/high_school_biology/test/111
384
+ gmmlu_si/test/high_school_biology/test/114
385
+ gmmlu_si/test/high_school_biology/test/120
386
+ gmmlu_si/test/high_school_biology/test/132
387
+ gmmlu_si/test/high_school_biology/test/153
388
+ gmmlu_si/test/high_school_biology/test/159
389
+ gmmlu_si/test/high_school_biology/test/163
390
+ gmmlu_si/test/high_school_biology/test/166
391
+ gmmlu_si/test/high_school_biology/test/179
392
+ gmmlu_si/test/high_school_biology/test/189
393
+ gmmlu_si/test/high_school_biology/test/196
394
+ gmmlu_si/test/high_school_biology/test/199
395
+ gmmlu_si/test/high_school_biology/test/205
396
+ gmmlu_si/test/high_school_biology/test/209
397
+ gmmlu_si/test/high_school_biology/test/215
398
+ gmmlu_si/test/high_school_biology/test/220
399
+ gmmlu_si/test/high_school_biology/test/23
400
+ gmmlu_si/test/high_school_biology/test/230
401
+ gmmlu_si/test/high_school_biology/test/233
402
+ gmmlu_si/test/high_school_biology/test/242
403
+ gmmlu_si/test/high_school_biology/test/255
404
+ gmmlu_si/test/high_school_biology/test/262
405
+ gmmlu_si/test/high_school_biology/test/265
406
+ gmmlu_si/test/high_school_biology/test/268
407
+ gmmlu_si/test/high_school_biology/test/27
408
+ gmmlu_si/test/high_school_biology/test/281
409
+ gmmlu_si/test/high_school_biology/test/286
410
+ gmmlu_si/test/high_school_biology/test/29
411
+ gmmlu_si/test/high_school_biology/test/295
412
+ gmmlu_si/test/high_school_biology/test/35
413
+ gmmlu_si/test/high_school_biology/test/43
414
+ gmmlu_si/test/high_school_biology/test/50
415
+ gmmlu_si/test/high_school_biology/test/66
416
+ gmmlu_si/test/high_school_biology/test/70
417
+ gmmlu_si/test/high_school_biology/test/72
418
+ gmmlu_si/test/high_school_biology/test/83
419
+ gmmlu_si/test/high_school_biology/test/89
420
+ gmmlu_si/test/high_school_biology/test/92
421
+ gmmlu_si/test/high_school_biology/test/93
422
+ gmmlu_si/test/high_school_biology/test/96
423
+ gmmlu_si/test/high_school_biology/test/97
424
+ gmmlu_si/test/high_school_biology/test/99
425
+ gmmlu_si/test/high_school_chemistry/test/0
426
+ gmmlu_si/test/high_school_chemistry/test/137
427
+ gmmlu_si/test/high_school_chemistry/test/138
428
+ gmmlu_si/test/high_school_chemistry/test/139
429
+ gmmlu_si/test/high_school_chemistry/test/140
430
+ gmmlu_si/test/high_school_chemistry/test/142
431
+ gmmlu_si/test/high_school_chemistry/test/153
432
+ gmmlu_si/test/high_school_chemistry/test/160
433
+ gmmlu_si/test/high_school_chemistry/test/165
434
+ gmmlu_si/test/high_school_chemistry/test/172
435
+ gmmlu_si/test/high_school_chemistry/test/18
436
+ gmmlu_si/test/high_school_chemistry/test/181
437
+ gmmlu_si/test/high_school_chemistry/test/183
438
+ gmmlu_si/test/high_school_chemistry/test/192
439
+ gmmlu_si/test/high_school_chemistry/test/20
440
+ gmmlu_si/test/high_school_chemistry/test/202
441
+ gmmlu_si/test/high_school_chemistry/test/28
442
+ gmmlu_si/test/high_school_chemistry/test/38
443
+ gmmlu_si/test/high_school_chemistry/test/4
444
+ gmmlu_si/test/high_school_chemistry/test/41
445
+ gmmlu_si/test/high_school_chemistry/test/51
446
+ gmmlu_si/test/high_school_chemistry/test/54
447
+ gmmlu_si/test/high_school_chemistry/test/64
448
+ gmmlu_si/test/high_school_chemistry/test/76
449
+ gmmlu_si/test/high_school_chemistry/test/77
450
+ gmmlu_si/test/high_school_chemistry/test/78
451
+ gmmlu_si/test/high_school_chemistry/test/80
452
+ gmmlu_si/test/high_school_chemistry/test/84
453
+ gmmlu_si/test/high_school_chemistry/test/93
454
+ gmmlu_si/test/high_school_computer_science/test/20
455
+ gmmlu_si/test/high_school_computer_science/test/51
456
+ gmmlu_si/test/high_school_computer_science/test/55
457
+ gmmlu_si/test/high_school_computer_science/test/6
458
+ gmmlu_si/test/high_school_computer_science/test/64
459
+ gmmlu_si/test/high_school_computer_science/test/68
460
+ gmmlu_si/test/high_school_computer_science/test/7
461
+ gmmlu_si/test/high_school_computer_science/test/76
462
+ gmmlu_si/test/high_school_computer_science/test/80
463
+ gmmlu_si/test/high_school_computer_science/test/87
464
+ gmmlu_si/test/high_school_computer_science/test/91
465
+ gmmlu_si/test/high_school_computer_science/test/92
466
+ gmmlu_si/test/high_school_computer_science/test/93
467
+ gmmlu_si/test/high_school_computer_science/test/94
468
+ gmmlu_si/test/high_school_european_history/test/114
469
+ gmmlu_si/test/high_school_european_history/test/12
470
+ gmmlu_si/test/high_school_european_history/test/122
471
+ gmmlu_si/test/high_school_european_history/test/127
472
+ gmmlu_si/test/high_school_european_history/test/128
473
+ gmmlu_si/test/high_school_european_history/test/141
474
+ gmmlu_si/test/high_school_european_history/test/153
475
+ gmmlu_si/test/high_school_european_history/test/157
476
+ gmmlu_si/test/high_school_european_history/test/18
477
+ gmmlu_si/test/high_school_european_history/test/23
478
+ gmmlu_si/test/high_school_european_history/test/27
479
+ gmmlu_si/test/high_school_european_history/test/31
480
+ gmmlu_si/test/high_school_european_history/test/40
481
+ gmmlu_si/test/high_school_european_history/test/43
482
+ gmmlu_si/test/high_school_european_history/test/52
483
+ gmmlu_si/test/high_school_european_history/test/58
484
+ gmmlu_si/test/high_school_european_history/test/59
485
+ gmmlu_si/test/high_school_european_history/test/6
486
+ gmmlu_si/test/high_school_european_history/test/62
487
+ gmmlu_si/test/high_school_european_history/test/70
488
+ gmmlu_si/test/high_school_european_history/test/71
489
+ gmmlu_si/test/high_school_european_history/test/76
490
+ gmmlu_si/test/high_school_european_history/test/77
491
+ gmmlu_si/test/high_school_european_history/test/79
492
+ gmmlu_si/test/high_school_geography/test/104
493
+ gmmlu_si/test/high_school_geography/test/108
494
+ gmmlu_si/test/high_school_geography/test/110
495
+ gmmlu_si/test/high_school_geography/test/115
496
+ gmmlu_si/test/high_school_geography/test/117
497
+ gmmlu_si/test/high_school_geography/test/120
498
+ gmmlu_si/test/high_school_geography/test/122
499
+ gmmlu_si/test/high_school_geography/test/134
500
+ gmmlu_si/test/high_school_geography/test/138
501
+ gmmlu_si/test/high_school_geography/test/139
502
+ gmmlu_si/test/high_school_geography/test/143
503
+ gmmlu_si/test/high_school_geography/test/144
504
+ gmmlu_si/test/high_school_geography/test/158
505
+ gmmlu_si/test/high_school_geography/test/159
506
+ gmmlu_si/test/high_school_geography/test/160
507
+ gmmlu_si/test/high_school_geography/test/170
508
+ gmmlu_si/test/high_school_geography/test/172
509
+ gmmlu_si/test/high_school_geography/test/175
510
+ gmmlu_si/test/high_school_geography/test/177
511
+ gmmlu_si/test/high_school_geography/test/185
512
+ gmmlu_si/test/high_school_geography/test/196
513
+ gmmlu_si/test/high_school_geography/test/27
514
+ gmmlu_si/test/high_school_geography/test/45
515
+ gmmlu_si/test/high_school_geography/test/6
516
+ gmmlu_si/test/high_school_geography/test/60
517
+ gmmlu_si/test/high_school_geography/test/73
518
+ gmmlu_si/test/high_school_geography/test/77
519
+ gmmlu_si/test/high_school_geography/test/80
520
+ gmmlu_si/test/high_school_government_and_politics/test/10
521
+ gmmlu_si/test/high_school_government_and_politics/test/133
522
+ gmmlu_si/test/high_school_government_and_politics/test/136
523
+ gmmlu_si/test/high_school_government_and_politics/test/142
524
+ gmmlu_si/test/high_school_government_and_politics/test/155
525
+ gmmlu_si/test/high_school_government_and_politics/test/163
526
+ gmmlu_si/test/high_school_government_and_politics/test/165
527
+ gmmlu_si/test/high_school_government_and_politics/test/169
528
+ gmmlu_si/test/high_school_government_and_politics/test/171
529
+ gmmlu_si/test/high_school_government_and_politics/test/176
530
+ gmmlu_si/test/high_school_government_and_politics/test/185
531
+ gmmlu_si/test/high_school_government_and_politics/test/19
532
+ gmmlu_si/test/high_school_government_and_politics/test/20
533
+ gmmlu_si/test/high_school_government_and_politics/test/25
534
+ gmmlu_si/test/high_school_government_and_politics/test/27
535
+ gmmlu_si/test/high_school_government_and_politics/test/29
536
+ gmmlu_si/test/high_school_government_and_politics/test/40
537
+ gmmlu_si/test/high_school_government_and_politics/test/45
538
+ gmmlu_si/test/high_school_government_and_politics/test/58
539
+ gmmlu_si/test/high_school_government_and_politics/test/61
540
+ gmmlu_si/test/high_school_government_and_politics/test/62
541
+ gmmlu_si/test/high_school_government_and_politics/test/65
542
+ gmmlu_si/test/high_school_government_and_politics/test/66
543
+ gmmlu_si/test/high_school_government_and_politics/test/82
544
+ gmmlu_si/test/high_school_government_and_politics/test/85
545
+ gmmlu_si/test/high_school_government_and_politics/test/89
546
+ gmmlu_si/test/high_school_government_and_politics/test/9
547
+ gmmlu_si/test/high_school_macroeconomics/test/109
548
+ gmmlu_si/test/high_school_macroeconomics/test/11
549
+ gmmlu_si/test/high_school_macroeconomics/test/113
550
+ gmmlu_si/test/high_school_macroeconomics/test/127
551
+ gmmlu_si/test/high_school_macroeconomics/test/13
552
+ gmmlu_si/test/high_school_macroeconomics/test/130
553
+ gmmlu_si/test/high_school_macroeconomics/test/161
554
+ gmmlu_si/test/high_school_macroeconomics/test/164
555
+ gmmlu_si/test/high_school_macroeconomics/test/166
556
+ gmmlu_si/test/high_school_macroeconomics/test/170
557
+ gmmlu_si/test/high_school_macroeconomics/test/173
558
+ gmmlu_si/test/high_school_macroeconomics/test/18
559
+ gmmlu_si/test/high_school_macroeconomics/test/181
560
+ gmmlu_si/test/high_school_macroeconomics/test/193
561
+ gmmlu_si/test/high_school_macroeconomics/test/205
562
+ gmmlu_si/test/high_school_macroeconomics/test/207
563
+ gmmlu_si/test/high_school_macroeconomics/test/210
564
+ gmmlu_si/test/high_school_macroeconomics/test/211
565
+ gmmlu_si/test/high_school_macroeconomics/test/217
566
+ gmmlu_si/test/high_school_macroeconomics/test/221
567
+ gmmlu_si/test/high_school_macroeconomics/test/23
568
+ gmmlu_si/test/high_school_macroeconomics/test/237
569
+ gmmlu_si/test/high_school_macroeconomics/test/238
570
+ gmmlu_si/test/high_school_macroeconomics/test/243
571
+ gmmlu_si/test/high_school_macroeconomics/test/249
572
+ gmmlu_si/test/high_school_macroeconomics/test/261
573
+ gmmlu_si/test/high_school_macroeconomics/test/271
574
+ gmmlu_si/test/high_school_macroeconomics/test/273
575
+ gmmlu_si/test/high_school_macroeconomics/test/274
576
+ gmmlu_si/test/high_school_macroeconomics/test/279
577
+ gmmlu_si/test/high_school_macroeconomics/test/285
578
+ gmmlu_si/test/high_school_macroeconomics/test/288
579
+ gmmlu_si/test/high_school_macroeconomics/test/296
580
+ gmmlu_si/test/high_school_macroeconomics/test/297
581
+ gmmlu_si/test/high_school_macroeconomics/test/299
582
+ gmmlu_si/test/high_school_macroeconomics/test/302
583
+ gmmlu_si/test/high_school_macroeconomics/test/306
584
+ gmmlu_si/test/high_school_macroeconomics/test/321
585
+ gmmlu_si/test/high_school_macroeconomics/test/325
586
+ gmmlu_si/test/high_school_macroeconomics/test/329
587
+ gmmlu_si/test/high_school_macroeconomics/test/334
588
+ gmmlu_si/test/high_school_macroeconomics/test/337
589
+ gmmlu_si/test/high_school_macroeconomics/test/341
590
+ gmmlu_si/test/high_school_macroeconomics/test/349
591
+ gmmlu_si/test/high_school_macroeconomics/test/35
592
+ gmmlu_si/test/high_school_macroeconomics/test/351
593
+ gmmlu_si/test/high_school_macroeconomics/test/363
594
+ gmmlu_si/test/high_school_macroeconomics/test/364
595
+ gmmlu_si/test/high_school_macroeconomics/test/388
596
+ gmmlu_si/test/high_school_macroeconomics/test/45
597
+ gmmlu_si/test/high_school_macroeconomics/test/51
598
+ gmmlu_si/test/high_school_macroeconomics/test/62
599
+ gmmlu_si/test/high_school_macroeconomics/test/64
600
+ gmmlu_si/test/high_school_macroeconomics/test/67
601
+ gmmlu_si/test/high_school_macroeconomics/test/77
602
+ gmmlu_si/test/high_school_macroeconomics/test/79
603
+ gmmlu_si/test/high_school_mathematics/test/113
604
+ gmmlu_si/test/high_school_mathematics/test/128
605
+ gmmlu_si/test/high_school_mathematics/test/131
606
+ gmmlu_si/test/high_school_mathematics/test/133
607
+ gmmlu_si/test/high_school_mathematics/test/141
608
+ gmmlu_si/test/high_school_mathematics/test/144
609
+ gmmlu_si/test/high_school_mathematics/test/147
610
+ gmmlu_si/test/high_school_mathematics/test/148
611
+ gmmlu_si/test/high_school_mathematics/test/155
612
+ gmmlu_si/test/high_school_mathematics/test/16
613
+ gmmlu_si/test/high_school_mathematics/test/161
614
+ gmmlu_si/test/high_school_mathematics/test/175
615
+ gmmlu_si/test/high_school_mathematics/test/177
616
+ gmmlu_si/test/high_school_mathematics/test/189
617
+ gmmlu_si/test/high_school_mathematics/test/203
618
+ gmmlu_si/test/high_school_mathematics/test/218
619
+ gmmlu_si/test/high_school_mathematics/test/220
620
+ gmmlu_si/test/high_school_mathematics/test/226
621
+ gmmlu_si/test/high_school_mathematics/test/227
622
+ gmmlu_si/test/high_school_mathematics/test/237
623
+ gmmlu_si/test/high_school_mathematics/test/243
624
+ gmmlu_si/test/high_school_mathematics/test/252
625
+ gmmlu_si/test/high_school_mathematics/test/254
626
+ gmmlu_si/test/high_school_mathematics/test/265
627
+ gmmlu_si/test/high_school_mathematics/test/3
628
+ gmmlu_si/test/high_school_mathematics/test/43
629
+ gmmlu_si/test/high_school_mathematics/test/46
630
+ gmmlu_si/test/high_school_mathematics/test/47
631
+ gmmlu_si/test/high_school_mathematics/test/54
632
+ gmmlu_si/test/high_school_mathematics/test/58
633
+ gmmlu_si/test/high_school_mathematics/test/6
634
+ gmmlu_si/test/high_school_mathematics/test/68
635
+ gmmlu_si/test/high_school_mathematics/test/73
636
+ gmmlu_si/test/high_school_mathematics/test/75
637
+ gmmlu_si/test/high_school_mathematics/test/77
638
+ gmmlu_si/test/high_school_mathematics/test/81
639
+ gmmlu_si/test/high_school_mathematics/test/90
640
+ gmmlu_si/test/high_school_mathematics/test/95
641
+ gmmlu_si/test/high_school_microeconomics/test/0
642
+ gmmlu_si/test/high_school_microeconomics/test/10
643
+ gmmlu_si/test/high_school_microeconomics/test/101
644
+ gmmlu_si/test/high_school_microeconomics/test/141
645
+ gmmlu_si/test/high_school_microeconomics/test/15
646
+ gmmlu_si/test/high_school_microeconomics/test/152
647
+ gmmlu_si/test/high_school_microeconomics/test/155
648
+ gmmlu_si/test/high_school_microeconomics/test/174
649
+ gmmlu_si/test/high_school_microeconomics/test/178
650
+ gmmlu_si/test/high_school_microeconomics/test/181
651
+ gmmlu_si/test/high_school_microeconomics/test/193
652
+ gmmlu_si/test/high_school_microeconomics/test/194
653
+ gmmlu_si/test/high_school_microeconomics/test/195
654
+ gmmlu_si/test/high_school_microeconomics/test/196
655
+ gmmlu_si/test/high_school_microeconomics/test/2
656
+ gmmlu_si/test/high_school_microeconomics/test/212
657
+ gmmlu_si/test/high_school_microeconomics/test/217
658
+ gmmlu_si/test/high_school_microeconomics/test/225
659
+ gmmlu_si/test/high_school_microeconomics/test/230
660
+ gmmlu_si/test/high_school_microeconomics/test/232
661
+ gmmlu_si/test/high_school_microeconomics/test/233
662
+ gmmlu_si/test/high_school_microeconomics/test/27
663
+ gmmlu_si/test/high_school_microeconomics/test/32
664
+ gmmlu_si/test/high_school_microeconomics/test/34
665
+ gmmlu_si/test/high_school_microeconomics/test/40
666
+ gmmlu_si/test/high_school_microeconomics/test/41
667
+ gmmlu_si/test/high_school_microeconomics/test/59
668
+ gmmlu_si/test/high_school_microeconomics/test/60
669
+ gmmlu_si/test/high_school_microeconomics/test/62
670
+ gmmlu_si/test/high_school_microeconomics/test/73
671
+ gmmlu_si/test/high_school_microeconomics/test/79
672
+ gmmlu_si/test/high_school_microeconomics/test/88
673
+ gmmlu_si/test/high_school_microeconomics/test/93
674
+ gmmlu_si/test/high_school_microeconomics/test/95
675
+ gmmlu_si/test/high_school_physics/test/101
676
+ gmmlu_si/test/high_school_physics/test/102
677
+ gmmlu_si/test/high_school_physics/test/107
678
+ gmmlu_si/test/high_school_physics/test/114
679
+ gmmlu_si/test/high_school_physics/test/123
680
+ gmmlu_si/test/high_school_physics/test/126
681
+ gmmlu_si/test/high_school_physics/test/138
682
+ gmmlu_si/test/high_school_physics/test/139
683
+ gmmlu_si/test/high_school_physics/test/146
684
+ gmmlu_si/test/high_school_physics/test/19
685
+ gmmlu_si/test/high_school_physics/test/3
686
+ gmmlu_si/test/high_school_physics/test/33
687
+ gmmlu_si/test/high_school_physics/test/48
688
+ gmmlu_si/test/high_school_physics/test/53
689
+ gmmlu_si/test/high_school_physics/test/54
690
+ gmmlu_si/test/high_school_physics/test/58
691
+ gmmlu_si/test/high_school_physics/test/6
692
+ gmmlu_si/test/high_school_physics/test/62
693
+ gmmlu_si/test/high_school_physics/test/67
694
+ gmmlu_si/test/high_school_physics/test/71
695
+ gmmlu_si/test/high_school_physics/test/75
696
+ gmmlu_si/test/high_school_physics/test/93
697
+ gmmlu_si/test/high_school_psychology/test/106
698
+ gmmlu_si/test/high_school_psychology/test/107
699
+ gmmlu_si/test/high_school_psychology/test/114
700
+ gmmlu_si/test/high_school_psychology/test/124
701
+ gmmlu_si/test/high_school_psychology/test/126
702
+ gmmlu_si/test/high_school_psychology/test/128
703
+ gmmlu_si/test/high_school_psychology/test/131
704
+ gmmlu_si/test/high_school_psychology/test/132
705
+ gmmlu_si/test/high_school_psychology/test/14
706
+ gmmlu_si/test/high_school_psychology/test/153
707
+ gmmlu_si/test/high_school_psychology/test/155
708
+ gmmlu_si/test/high_school_psychology/test/156
709
+ gmmlu_si/test/high_school_psychology/test/157
710
+ gmmlu_si/test/high_school_psychology/test/165
711
+ gmmlu_si/test/high_school_psychology/test/169
712
+ gmmlu_si/test/high_school_psychology/test/171
713
+ gmmlu_si/test/high_school_psychology/test/180
714
+ gmmlu_si/test/high_school_psychology/test/185
715
+ gmmlu_si/test/high_school_psychology/test/190
716
+ gmmlu_si/test/high_school_psychology/test/197
717
+ gmmlu_si/test/high_school_psychology/test/213
718
+ gmmlu_si/test/high_school_psychology/test/215
719
+ gmmlu_si/test/high_school_psychology/test/247
720
+ gmmlu_si/test/high_school_psychology/test/248
721
+ gmmlu_si/test/high_school_psychology/test/255
722
+ gmmlu_si/test/high_school_psychology/test/26
723
+ gmmlu_si/test/high_school_psychology/test/266
724
+ gmmlu_si/test/high_school_psychology/test/267
725
+ gmmlu_si/test/high_school_psychology/test/269
726
+ gmmlu_si/test/high_school_psychology/test/273
727
+ gmmlu_si/test/high_school_psychology/test/288
728
+ gmmlu_si/test/high_school_psychology/test/31
729
+ gmmlu_si/test/high_school_psychology/test/310
730
+ gmmlu_si/test/high_school_psychology/test/322
731
+ gmmlu_si/test/high_school_psychology/test/34
732
+ gmmlu_si/test/high_school_psychology/test/340
733
+ gmmlu_si/test/high_school_psychology/test/345
734
+ gmmlu_si/test/high_school_psychology/test/351
735
+ gmmlu_si/test/high_school_psychology/test/362
736
+ gmmlu_si/test/high_school_psychology/test/364
737
+ gmmlu_si/test/high_school_psychology/test/368
738
+ gmmlu_si/test/high_school_psychology/test/37
739
+ gmmlu_si/test/high_school_psychology/test/381
740
+ gmmlu_si/test/high_school_psychology/test/386
741
+ gmmlu_si/test/high_school_psychology/test/391
742
+ gmmlu_si/test/high_school_psychology/test/399
743
+ gmmlu_si/test/high_school_psychology/test/402
744
+ gmmlu_si/test/high_school_psychology/test/403
745
+ gmmlu_si/test/high_school_psychology/test/407
746
+ gmmlu_si/test/high_school_psychology/test/410
747
+ gmmlu_si/test/high_school_psychology/test/416
748
+ gmmlu_si/test/high_school_psychology/test/423
749
+ gmmlu_si/test/high_school_psychology/test/449
750
+ gmmlu_si/test/high_school_psychology/test/463
751
+ gmmlu_si/test/high_school_psychology/test/472
752
+ gmmlu_si/test/high_school_psychology/test/475
753
+ gmmlu_si/test/high_school_psychology/test/478
754
+ gmmlu_si/test/high_school_psychology/test/483
755
+ gmmlu_si/test/high_school_psychology/test/485
756
+ gmmlu_si/test/high_school_psychology/test/49
757
+ gmmlu_si/test/high_school_psychology/test/5
758
+ gmmlu_si/test/high_school_psychology/test/505
759
+ gmmlu_si/test/high_school_psychology/test/509
760
+ gmmlu_si/test/high_school_psychology/test/513
761
+ gmmlu_si/test/high_school_psychology/test/520
762
+ gmmlu_si/test/high_school_psychology/test/541
763
+ gmmlu_si/test/high_school_psychology/test/542
764
+ gmmlu_si/test/high_school_psychology/test/6
765
+ gmmlu_si/test/high_school_psychology/test/69
766
+ gmmlu_si/test/high_school_psychology/test/70
767
+ gmmlu_si/test/high_school_psychology/test/77
768
+ gmmlu_si/test/high_school_psychology/test/80
769
+ gmmlu_si/test/high_school_psychology/test/81
770
+ gmmlu_si/test/high_school_psychology/test/85
771
+ gmmlu_si/test/high_school_psychology/test/86
772
+ gmmlu_si/test/high_school_psychology/test/9
773
+ gmmlu_si/test/high_school_psychology/test/91
774
+ gmmlu_si/test/high_school_psychology/test/95
775
+ gmmlu_si/test/high_school_statistics/test/105
776
+ gmmlu_si/test/high_school_statistics/test/107
777
+ gmmlu_si/test/high_school_statistics/test/118
778
+ gmmlu_si/test/high_school_statistics/test/122
779
+ gmmlu_si/test/high_school_statistics/test/139
780
+ gmmlu_si/test/high_school_statistics/test/147
781
+ gmmlu_si/test/high_school_statistics/test/148
782
+ gmmlu_si/test/high_school_statistics/test/16
783
+ gmmlu_si/test/high_school_statistics/test/17
784
+ gmmlu_si/test/high_school_statistics/test/176
785
+ gmmlu_si/test/high_school_statistics/test/177
786
+ gmmlu_si/test/high_school_statistics/test/190
787
+ gmmlu_si/test/high_school_statistics/test/200
788
+ gmmlu_si/test/high_school_statistics/test/213
789
+ gmmlu_si/test/high_school_statistics/test/23
790
+ gmmlu_si/test/high_school_statistics/test/29
791
+ gmmlu_si/test/high_school_statistics/test/31
792
+ gmmlu_si/test/high_school_statistics/test/36
793
+ gmmlu_si/test/high_school_statistics/test/38
794
+ gmmlu_si/test/high_school_statistics/test/40
795
+ gmmlu_si/test/high_school_statistics/test/45
796
+ gmmlu_si/test/high_school_statistics/test/47
797
+ gmmlu_si/test/high_school_statistics/test/52
798
+ gmmlu_si/test/high_school_statistics/test/57
799
+ gmmlu_si/test/high_school_statistics/test/58
800
+ gmmlu_si/test/high_school_statistics/test/6
801
+ gmmlu_si/test/high_school_statistics/test/66
802
+ gmmlu_si/test/high_school_statistics/test/79
803
+ gmmlu_si/test/high_school_statistics/test/84
804
+ gmmlu_si/test/high_school_statistics/test/9
805
+ gmmlu_si/test/high_school_statistics/test/90
806
+ gmmlu_si/test/high_school_us_history/test/101
807
+ gmmlu_si/test/high_school_us_history/test/104
808
+ gmmlu_si/test/high_school_us_history/test/113
809
+ gmmlu_si/test/high_school_us_history/test/116
810
+ gmmlu_si/test/high_school_us_history/test/117
811
+ gmmlu_si/test/high_school_us_history/test/118
812
+ gmmlu_si/test/high_school_us_history/test/120
813
+ gmmlu_si/test/high_school_us_history/test/148
814
+ gmmlu_si/test/high_school_us_history/test/154
815
+ gmmlu_si/test/high_school_us_history/test/167
816
+ gmmlu_si/test/high_school_us_history/test/175
817
+ gmmlu_si/test/high_school_us_history/test/178
818
+ gmmlu_si/test/high_school_us_history/test/179
819
+ gmmlu_si/test/high_school_us_history/test/18
820
+ gmmlu_si/test/high_school_us_history/test/188
821
+ gmmlu_si/test/high_school_us_history/test/189
822
+ gmmlu_si/test/high_school_us_history/test/198
823
+ gmmlu_si/test/high_school_us_history/test/202
824
+ gmmlu_si/test/high_school_us_history/test/43
825
+ gmmlu_si/test/high_school_us_history/test/56
826
+ gmmlu_si/test/high_school_us_history/test/58
827
+ gmmlu_si/test/high_school_us_history/test/60
828
+ gmmlu_si/test/high_school_us_history/test/64
829
+ gmmlu_si/test/high_school_us_history/test/72
830
+ gmmlu_si/test/high_school_us_history/test/89
831
+ gmmlu_si/test/high_school_us_history/test/93
832
+ gmmlu_si/test/high_school_us_history/test/94
833
+ gmmlu_si/test/high_school_us_history/test/95
834
+ gmmlu_si/test/high_school_us_history/test/96
835
+ gmmlu_si/test/high_school_world_history/test/101
836
+ gmmlu_si/test/high_school_world_history/test/104
837
+ gmmlu_si/test/high_school_world_history/test/105
838
+ gmmlu_si/test/high_school_world_history/test/111
839
+ gmmlu_si/test/high_school_world_history/test/117
840
+ gmmlu_si/test/high_school_world_history/test/12
841
+ gmmlu_si/test/high_school_world_history/test/127
842
+ gmmlu_si/test/high_school_world_history/test/128
843
+ gmmlu_si/test/high_school_world_history/test/129
844
+ gmmlu_si/test/high_school_world_history/test/134
845
+ gmmlu_si/test/high_school_world_history/test/142
846
+ gmmlu_si/test/high_school_world_history/test/16
847
+ gmmlu_si/test/high_school_world_history/test/170
848
+ gmmlu_si/test/high_school_world_history/test/176
849
+ gmmlu_si/test/high_school_world_history/test/18
850
+ gmmlu_si/test/high_school_world_history/test/180
851
+ gmmlu_si/test/high_school_world_history/test/181
852
+ gmmlu_si/test/high_school_world_history/test/195
853
+ gmmlu_si/test/high_school_world_history/test/199
854
+ gmmlu_si/test/high_school_world_history/test/201
855
+ gmmlu_si/test/high_school_world_history/test/211
856
+ gmmlu_si/test/high_school_world_history/test/213
857
+ gmmlu_si/test/high_school_world_history/test/227
858
+ gmmlu_si/test/high_school_world_history/test/229
859
+ gmmlu_si/test/high_school_world_history/test/236
860
+ gmmlu_si/test/high_school_world_history/test/27
861
+ gmmlu_si/test/high_school_world_history/test/28
862
+ gmmlu_si/test/high_school_world_history/test/40
863
+ gmmlu_si/test/high_school_world_history/test/46
864
+ gmmlu_si/test/high_school_world_history/test/48
865
+ gmmlu_si/test/high_school_world_history/test/57
866
+ gmmlu_si/test/high_school_world_history/test/59
867
+ gmmlu_si/test/high_school_world_history/test/68
868
+ gmmlu_si/test/high_school_world_history/test/97
869
+ gmmlu_si/test/human_aging/test/128
870
+ gmmlu_si/test/human_aging/test/13
871
+ gmmlu_si/test/human_aging/test/130
872
+ gmmlu_si/test/human_aging/test/136
873
+ gmmlu_si/test/human_aging/test/137
874
+ gmmlu_si/test/human_aging/test/150
875
+ gmmlu_si/test/human_aging/test/158
876
+ gmmlu_si/test/human_aging/test/161
877
+ gmmlu_si/test/human_aging/test/169
878
+ gmmlu_si/test/human_aging/test/180
879
+ gmmlu_si/test/human_aging/test/186
880
+ gmmlu_si/test/human_aging/test/187
881
+ gmmlu_si/test/human_aging/test/196
882
+ gmmlu_si/test/human_aging/test/198
883
+ gmmlu_si/test/human_aging/test/207
884
+ gmmlu_si/test/human_aging/test/212
885
+ gmmlu_si/test/human_aging/test/213
886
+ gmmlu_si/test/human_aging/test/222
887
+ gmmlu_si/test/human_aging/test/29
888
+ gmmlu_si/test/human_aging/test/30
889
+ gmmlu_si/test/human_aging/test/41
890
+ gmmlu_si/test/human_aging/test/42
891
+ gmmlu_si/test/human_aging/test/49
892
+ gmmlu_si/test/human_aging/test/50
893
+ gmmlu_si/test/human_aging/test/51
894
+ gmmlu_si/test/human_aging/test/59
895
+ gmmlu_si/test/human_aging/test/6
896
+ gmmlu_si/test/human_aging/test/61
897
+ gmmlu_si/test/human_aging/test/63
898
+ gmmlu_si/test/human_aging/test/76
899
+ gmmlu_si/test/human_aging/test/95
900
+ gmmlu_si/test/human_aging/test/96
901
+ gmmlu_si/test/human_sexuality/test/10
902
+ gmmlu_si/test/human_sexuality/test/106
903
+ gmmlu_si/test/human_sexuality/test/109
904
+ gmmlu_si/test/human_sexuality/test/110
905
+ gmmlu_si/test/human_sexuality/test/16
906
+ gmmlu_si/test/human_sexuality/test/19
907
+ gmmlu_si/test/human_sexuality/test/24
908
+ gmmlu_si/test/human_sexuality/test/26
909
+ gmmlu_si/test/human_sexuality/test/38
910
+ gmmlu_si/test/human_sexuality/test/40
911
+ gmmlu_si/test/human_sexuality/test/49
912
+ gmmlu_si/test/human_sexuality/test/51
913
+ gmmlu_si/test/human_sexuality/test/52
914
+ gmmlu_si/test/human_sexuality/test/61
915
+ gmmlu_si/test/human_sexuality/test/66
916
+ gmmlu_si/test/human_sexuality/test/78
917
+ gmmlu_si/test/human_sexuality/test/86
918
+ gmmlu_si/test/human_sexuality/test/90
919
+ gmmlu_si/test/human_sexuality/test/98
920
+ gmmlu_si/test/international_law/test/104
921
+ gmmlu_si/test/international_law/test/20
922
+ gmmlu_si/test/international_law/test/22
923
+ gmmlu_si/test/international_law/test/26
924
+ gmmlu_si/test/international_law/test/34
925
+ gmmlu_si/test/international_law/test/38
926
+ gmmlu_si/test/international_law/test/41
927
+ gmmlu_si/test/international_law/test/5
928
+ gmmlu_si/test/international_law/test/54
929
+ gmmlu_si/test/international_law/test/65
930
+ gmmlu_si/test/international_law/test/68
931
+ gmmlu_si/test/international_law/test/82
932
+ gmmlu_si/test/international_law/test/85
933
+ gmmlu_si/test/international_law/test/91
934
+ gmmlu_si/test/international_law/test/95
935
+ gmmlu_si/test/international_law/test/97
936
+ gmmlu_si/test/international_law/test/98
937
+ gmmlu_si/test/jurisprudence/test/12
938
+ gmmlu_si/test/jurisprudence/test/23
939
+ gmmlu_si/test/jurisprudence/test/30
940
+ gmmlu_si/test/jurisprudence/test/35
941
+ gmmlu_si/test/jurisprudence/test/38
942
+ gmmlu_si/test/jurisprudence/test/4
943
+ gmmlu_si/test/jurisprudence/test/43
944
+ gmmlu_si/test/jurisprudence/test/46
945
+ gmmlu_si/test/jurisprudence/test/48
946
+ gmmlu_si/test/jurisprudence/test/50
947
+ gmmlu_si/test/jurisprudence/test/71
948
+ gmmlu_si/test/jurisprudence/test/72
949
+ gmmlu_si/test/jurisprudence/test/73
950
+ gmmlu_si/test/jurisprudence/test/74
951
+ gmmlu_si/test/jurisprudence/test/93
952
+ gmmlu_si/test/logical_fallacies/test/111
953
+ gmmlu_si/test/logical_fallacies/test/128
954
+ gmmlu_si/test/logical_fallacies/test/137
955
+ gmmlu_si/test/logical_fallacies/test/14
956
+ gmmlu_si/test/logical_fallacies/test/144
957
+ gmmlu_si/test/logical_fallacies/test/15
958
+ gmmlu_si/test/logical_fallacies/test/152
959
+ gmmlu_si/test/logical_fallacies/test/157
960
+ gmmlu_si/test/logical_fallacies/test/17
961
+ gmmlu_si/test/logical_fallacies/test/21
962
+ gmmlu_si/test/logical_fallacies/test/34
963
+ gmmlu_si/test/logical_fallacies/test/38
964
+ gmmlu_si/test/logical_fallacies/test/39
965
+ gmmlu_si/test/logical_fallacies/test/46
966
+ gmmlu_si/test/logical_fallacies/test/47
967
+ gmmlu_si/test/logical_fallacies/test/57
968
+ gmmlu_si/test/logical_fallacies/test/7
969
+ gmmlu_si/test/logical_fallacies/test/83
970
+ gmmlu_si/test/logical_fallacies/test/88
971
+ gmmlu_si/test/logical_fallacies/test/92
972
+ gmmlu_si/test/logical_fallacies/test/93
973
+ gmmlu_si/test/logical_fallacies/test/94
974
+ gmmlu_si/test/logical_fallacies/test/97
975
+ gmmlu_si/test/machine_learning/test/111
976
+ gmmlu_si/test/machine_learning/test/17
977
+ gmmlu_si/test/machine_learning/test/18
978
+ gmmlu_si/test/machine_learning/test/27
979
+ gmmlu_si/test/machine_learning/test/34
980
+ gmmlu_si/test/machine_learning/test/35
981
+ gmmlu_si/test/machine_learning/test/44
982
+ gmmlu_si/test/machine_learning/test/49
983
+ gmmlu_si/test/machine_learning/test/5
984
+ gmmlu_si/test/machine_learning/test/62
985
+ gmmlu_si/test/machine_learning/test/70
986
+ gmmlu_si/test/machine_learning/test/74
987
+ gmmlu_si/test/machine_learning/test/81
988
+ gmmlu_si/test/machine_learning/test/84
989
+ gmmlu_si/test/machine_learning/test/91
990
+ gmmlu_si/test/machine_learning/test/93
991
+ gmmlu_si/test/management/test/11
992
+ gmmlu_si/test/management/test/12
993
+ gmmlu_si/test/management/test/16
994
+ gmmlu_si/test/management/test/25
995
+ gmmlu_si/test/management/test/36
996
+ gmmlu_si/test/management/test/38
997
+ gmmlu_si/test/management/test/40
998
+ gmmlu_si/test/management/test/58
999
+ gmmlu_si/test/management/test/59
1000
+ gmmlu_si/test/management/test/62
1001
+ gmmlu_si/test/management/test/66
1002
+ gmmlu_si/test/management/test/8
1003
+ gmmlu_si/test/management/test/83
1004
+ gmmlu_si/test/management/test/86
1005
+ gmmlu_si/test/management/test/94
1006
+ gmmlu_si/test/marketing/test/11
1007
+ gmmlu_si/test/marketing/test/114
1008
+ gmmlu_si/test/marketing/test/12
1009
+ gmmlu_si/test/marketing/test/124
1010
+ gmmlu_si/test/marketing/test/128
1011
+ gmmlu_si/test/marketing/test/133
1012
+ gmmlu_si/test/marketing/test/134
1013
+ gmmlu_si/test/marketing/test/14
1014
+ gmmlu_si/test/marketing/test/141
1015
+ gmmlu_si/test/marketing/test/147
1016
+ gmmlu_si/test/marketing/test/153
1017
+ gmmlu_si/test/marketing/test/165
1018
+ gmmlu_si/test/marketing/test/184
1019
+ gmmlu_si/test/marketing/test/186
1020
+ gmmlu_si/test/marketing/test/189
1021
+ gmmlu_si/test/marketing/test/193
1022
+ gmmlu_si/test/marketing/test/199
1023
+ gmmlu_si/test/marketing/test/206
1024
+ gmmlu_si/test/marketing/test/208
1025
+ gmmlu_si/test/marketing/test/221
1026
+ gmmlu_si/test/marketing/test/230
1027
+ gmmlu_si/test/marketing/test/231
1028
+ gmmlu_si/test/marketing/test/28
1029
+ gmmlu_si/test/marketing/test/30
1030
+ gmmlu_si/test/marketing/test/61
1031
+ gmmlu_si/test/marketing/test/65
1032
+ gmmlu_si/test/marketing/test/67
1033
+ gmmlu_si/test/marketing/test/8
1034
+ gmmlu_si/test/marketing/test/83
1035
+ gmmlu_si/test/marketing/test/84
1036
+ gmmlu_si/test/marketing/test/88
1037
+ gmmlu_si/test/marketing/test/89
1038
+ gmmlu_si/test/marketing/test/93
1039
+ gmmlu_si/test/medical_genetics/test/10
1040
+ gmmlu_si/test/medical_genetics/test/18
1041
+ gmmlu_si/test/medical_genetics/test/2
1042
+ gmmlu_si/test/medical_genetics/test/20
1043
+ gmmlu_si/test/medical_genetics/test/22
1044
+ gmmlu_si/test/medical_genetics/test/23
1045
+ gmmlu_si/test/medical_genetics/test/24
1046
+ gmmlu_si/test/medical_genetics/test/25
1047
+ gmmlu_si/test/medical_genetics/test/32
1048
+ gmmlu_si/test/medical_genetics/test/45
1049
+ gmmlu_si/test/medical_genetics/test/51
1050
+ gmmlu_si/test/medical_genetics/test/63
1051
+ gmmlu_si/test/medical_genetics/test/73
1052
+ gmmlu_si/test/medical_genetics/test/99
1053
+ gmmlu_si/test/miscellaneous/test/0
1054
+ gmmlu_si/test/miscellaneous/test/103
1055
+ gmmlu_si/test/miscellaneous/test/115
1056
+ gmmlu_si/test/miscellaneous/test/117
1057
+ gmmlu_si/test/miscellaneous/test/123
1058
+ gmmlu_si/test/miscellaneous/test/132
1059
+ gmmlu_si/test/miscellaneous/test/134
1060
+ gmmlu_si/test/miscellaneous/test/135
1061
+ gmmlu_si/test/miscellaneous/test/137
1062
+ gmmlu_si/test/miscellaneous/test/142
1063
+ gmmlu_si/test/miscellaneous/test/153
1064
+ gmmlu_si/test/miscellaneous/test/156
1065
+ gmmlu_si/test/miscellaneous/test/157
1066
+ gmmlu_si/test/miscellaneous/test/168
1067
+ gmmlu_si/test/miscellaneous/test/172
1068
+ gmmlu_si/test/miscellaneous/test/196
1069
+ gmmlu_si/test/miscellaneous/test/209
1070
+ gmmlu_si/test/miscellaneous/test/210
1071
+ gmmlu_si/test/miscellaneous/test/223
1072
+ gmmlu_si/test/miscellaneous/test/251
1073
+ gmmlu_si/test/miscellaneous/test/269
1074
+ gmmlu_si/test/miscellaneous/test/287
1075
+ gmmlu_si/test/miscellaneous/test/290
1076
+ gmmlu_si/test/miscellaneous/test/293
1077
+ gmmlu_si/test/miscellaneous/test/300
1078
+ gmmlu_si/test/miscellaneous/test/302
1079
+ gmmlu_si/test/miscellaneous/test/31
1080
+ gmmlu_si/test/miscellaneous/test/311
1081
+ gmmlu_si/test/miscellaneous/test/333
1082
+ gmmlu_si/test/miscellaneous/test/334
1083
+ gmmlu_si/test/miscellaneous/test/345
1084
+ gmmlu_si/test/miscellaneous/test/354
1085
+ gmmlu_si/test/miscellaneous/test/367
1086
+ gmmlu_si/test/miscellaneous/test/37
1087
+ gmmlu_si/test/miscellaneous/test/373
1088
+ gmmlu_si/test/miscellaneous/test/375
1089
+ gmmlu_si/test/miscellaneous/test/38
1090
+ gmmlu_si/test/miscellaneous/test/388
1091
+ gmmlu_si/test/miscellaneous/test/390
1092
+ gmmlu_si/test/miscellaneous/test/397
1093
+ gmmlu_si/test/miscellaneous/test/399
1094
+ gmmlu_si/test/miscellaneous/test/400
1095
+ gmmlu_si/test/miscellaneous/test/404
1096
+ gmmlu_si/test/miscellaneous/test/413
1097
+ gmmlu_si/test/miscellaneous/test/414
1098
+ gmmlu_si/test/miscellaneous/test/43
1099
+ gmmlu_si/test/miscellaneous/test/430
1100
+ gmmlu_si/test/miscellaneous/test/433
1101
+ gmmlu_si/test/miscellaneous/test/441
1102
+ gmmlu_si/test/miscellaneous/test/443
1103
+ gmmlu_si/test/miscellaneous/test/445
1104
+ gmmlu_si/test/miscellaneous/test/447
1105
+ gmmlu_si/test/miscellaneous/test/453
1106
+ gmmlu_si/test/miscellaneous/test/460
1107
+ gmmlu_si/test/miscellaneous/test/469
1108
+ gmmlu_si/test/miscellaneous/test/473
1109
+ gmmlu_si/test/miscellaneous/test/482
1110
+ gmmlu_si/test/miscellaneous/test/483
1111
+ gmmlu_si/test/miscellaneous/test/489
1112
+ gmmlu_si/test/miscellaneous/test/49
1113
+ gmmlu_si/test/miscellaneous/test/500
1114
+ gmmlu_si/test/miscellaneous/test/511
1115
+ gmmlu_si/test/miscellaneous/test/517
1116
+ gmmlu_si/test/miscellaneous/test/519
1117
+ gmmlu_si/test/miscellaneous/test/536
1118
+ gmmlu_si/test/miscellaneous/test/542
1119
+ gmmlu_si/test/miscellaneous/test/55
1120
+ gmmlu_si/test/miscellaneous/test/553
1121
+ gmmlu_si/test/miscellaneous/test/565
1122
+ gmmlu_si/test/miscellaneous/test/571
1123
+ gmmlu_si/test/miscellaneous/test/577
1124
+ gmmlu_si/test/miscellaneous/test/583
1125
+ gmmlu_si/test/miscellaneous/test/586
1126
+ gmmlu_si/test/miscellaneous/test/587
1127
+ gmmlu_si/test/miscellaneous/test/593
1128
+ gmmlu_si/test/miscellaneous/test/597
1129
+ gmmlu_si/test/miscellaneous/test/61
1130
+ gmmlu_si/test/miscellaneous/test/618
1131
+ gmmlu_si/test/miscellaneous/test/635
1132
+ gmmlu_si/test/miscellaneous/test/641
1133
+ gmmlu_si/test/miscellaneous/test/66
1134
+ gmmlu_si/test/miscellaneous/test/661
1135
+ gmmlu_si/test/miscellaneous/test/662
1136
+ gmmlu_si/test/miscellaneous/test/663
1137
+ gmmlu_si/test/miscellaneous/test/67
1138
+ gmmlu_si/test/miscellaneous/test/676
1139
+ gmmlu_si/test/miscellaneous/test/68
1140
+ gmmlu_si/test/miscellaneous/test/683
1141
+ gmmlu_si/test/miscellaneous/test/684
1142
+ gmmlu_si/test/miscellaneous/test/685
1143
+ gmmlu_si/test/miscellaneous/test/687
1144
+ gmmlu_si/test/miscellaneous/test/696
1145
+ gmmlu_si/test/miscellaneous/test/697
1146
+ gmmlu_si/test/miscellaneous/test/705
1147
+ gmmlu_si/test/miscellaneous/test/708
1148
+ gmmlu_si/test/miscellaneous/test/710
1149
+ gmmlu_si/test/miscellaneous/test/719
1150
+ gmmlu_si/test/miscellaneous/test/728
1151
+ gmmlu_si/test/miscellaneous/test/73
1152
+ gmmlu_si/test/miscellaneous/test/730
1153
+ gmmlu_si/test/miscellaneous/test/737
1154
+ gmmlu_si/test/miscellaneous/test/738
1155
+ gmmlu_si/test/miscellaneous/test/74
1156
+ gmmlu_si/test/miscellaneous/test/742
1157
+ gmmlu_si/test/miscellaneous/test/753
1158
+ gmmlu_si/test/miscellaneous/test/76
1159
+ gmmlu_si/test/miscellaneous/test/770
1160
+ gmmlu_si/test/miscellaneous/test/774
1161
+ gmmlu_si/test/miscellaneous/test/782
1162
+ gmmlu_si/test/miscellaneous/test/89
1163
+ gmmlu_si/test/miscellaneous/test/93
1164
+ gmmlu_si/test/miscellaneous/test/98
1165
+ gmmlu_si/test/moral_disputes/test/100
1166
+ gmmlu_si/test/moral_disputes/test/101
1167
+ gmmlu_si/test/moral_disputes/test/103
1168
+ gmmlu_si/test/moral_disputes/test/104
1169
+ gmmlu_si/test/moral_disputes/test/11
1170
+ gmmlu_si/test/moral_disputes/test/111
1171
+ gmmlu_si/test/moral_disputes/test/112
1172
+ gmmlu_si/test/moral_disputes/test/115
1173
+ gmmlu_si/test/moral_disputes/test/122
1174
+ gmmlu_si/test/moral_disputes/test/135
1175
+ gmmlu_si/test/moral_disputes/test/139
1176
+ gmmlu_si/test/moral_disputes/test/140
1177
+ gmmlu_si/test/moral_disputes/test/141
1178
+ gmmlu_si/test/moral_disputes/test/142
1179
+ gmmlu_si/test/moral_disputes/test/145
1180
+ gmmlu_si/test/moral_disputes/test/151
1181
+ gmmlu_si/test/moral_disputes/test/164
1182
+ gmmlu_si/test/moral_disputes/test/175
1183
+ gmmlu_si/test/moral_disputes/test/185
1184
+ gmmlu_si/test/moral_disputes/test/190
1185
+ gmmlu_si/test/moral_disputes/test/191
1186
+ gmmlu_si/test/moral_disputes/test/195
1187
+ gmmlu_si/test/moral_disputes/test/202
1188
+ gmmlu_si/test/moral_disputes/test/206
1189
+ gmmlu_si/test/moral_disputes/test/219
1190
+ gmmlu_si/test/moral_disputes/test/223
1191
+ gmmlu_si/test/moral_disputes/test/254
1192
+ gmmlu_si/test/moral_disputes/test/275
1193
+ gmmlu_si/test/moral_disputes/test/282
1194
+ gmmlu_si/test/moral_disputes/test/286
1195
+ gmmlu_si/test/moral_disputes/test/288
1196
+ gmmlu_si/test/moral_disputes/test/293
1197
+ gmmlu_si/test/moral_disputes/test/298
1198
+ gmmlu_si/test/moral_disputes/test/303
1199
+ gmmlu_si/test/moral_disputes/test/306
1200
+ gmmlu_si/test/moral_disputes/test/313
1201
+ gmmlu_si/test/moral_disputes/test/342
1202
+ gmmlu_si/test/moral_disputes/test/344
1203
+ gmmlu_si/test/moral_disputes/test/4
1204
+ gmmlu_si/test/moral_disputes/test/55
1205
+ gmmlu_si/test/moral_disputes/test/57
1206
+ gmmlu_si/test/moral_disputes/test/62
1207
+ gmmlu_si/test/moral_disputes/test/65
1208
+ gmmlu_si/test/moral_disputes/test/67
1209
+ gmmlu_si/test/moral_disputes/test/77
1210
+ gmmlu_si/test/moral_disputes/test/81
1211
+ gmmlu_si/test/moral_disputes/test/83
1212
+ gmmlu_si/test/moral_disputes/test/86
1213
+ gmmlu_si/test/moral_disputes/test/89
1214
+ gmmlu_si/test/moral_scenarios/test/122
1215
+ gmmlu_si/test/moral_scenarios/test/127
1216
+ gmmlu_si/test/moral_scenarios/test/135
1217
+ gmmlu_si/test/moral_scenarios/test/136
1218
+ gmmlu_si/test/moral_scenarios/test/140
1219
+ gmmlu_si/test/moral_scenarios/test/149
1220
+ gmmlu_si/test/moral_scenarios/test/151
1221
+ gmmlu_si/test/moral_scenarios/test/155
1222
+ gmmlu_si/test/moral_scenarios/test/162
1223
+ gmmlu_si/test/moral_scenarios/test/169
1224
+ gmmlu_si/test/moral_scenarios/test/180
1225
+ gmmlu_si/test/moral_scenarios/test/181
1226
+ gmmlu_si/test/moral_scenarios/test/186
1227
+ gmmlu_si/test/moral_scenarios/test/187
1228
+ gmmlu_si/test/moral_scenarios/test/191
1229
+ gmmlu_si/test/moral_scenarios/test/195
1230
+ gmmlu_si/test/moral_scenarios/test/197
1231
+ gmmlu_si/test/moral_scenarios/test/20
1232
+ gmmlu_si/test/moral_scenarios/test/227
1233
+ gmmlu_si/test/moral_scenarios/test/231
1234
+ gmmlu_si/test/moral_scenarios/test/245
1235
+ gmmlu_si/test/moral_scenarios/test/264
1236
+ gmmlu_si/test/moral_scenarios/test/269
1237
+ gmmlu_si/test/moral_scenarios/test/279
1238
+ gmmlu_si/test/moral_scenarios/test/28
1239
+ gmmlu_si/test/moral_scenarios/test/283
1240
+ gmmlu_si/test/moral_scenarios/test/290
1241
+ gmmlu_si/test/moral_scenarios/test/304
1242
+ gmmlu_si/test/moral_scenarios/test/326
1243
+ gmmlu_si/test/moral_scenarios/test/341
1244
+ gmmlu_si/test/moral_scenarios/test/345
1245
+ gmmlu_si/test/moral_scenarios/test/346
1246
+ gmmlu_si/test/moral_scenarios/test/349
1247
+ gmmlu_si/test/moral_scenarios/test/350
1248
+ gmmlu_si/test/moral_scenarios/test/355
1249
+ gmmlu_si/test/moral_scenarios/test/362
1250
+ gmmlu_si/test/moral_scenarios/test/367
1251
+ gmmlu_si/test/moral_scenarios/test/373
1252
+ gmmlu_si/test/moral_scenarios/test/396
1253
+ gmmlu_si/test/moral_scenarios/test/398
1254
+ gmmlu_si/test/moral_scenarios/test/4
1255
+ gmmlu_si/test/moral_scenarios/test/400
1256
+ gmmlu_si/test/moral_scenarios/test/402
1257
+ gmmlu_si/test/moral_scenarios/test/409
1258
+ gmmlu_si/test/moral_scenarios/test/413
1259
+ gmmlu_si/test/moral_scenarios/test/42
1260
+ gmmlu_si/test/moral_scenarios/test/43
1261
+ gmmlu_si/test/moral_scenarios/test/432
1262
+ gmmlu_si/test/moral_scenarios/test/433
1263
+ gmmlu_si/test/moral_scenarios/test/436
1264
+ gmmlu_si/test/moral_scenarios/test/464
1265
+ gmmlu_si/test/moral_scenarios/test/466
1266
+ gmmlu_si/test/moral_scenarios/test/47
1267
+ gmmlu_si/test/moral_scenarios/test/476
1268
+ gmmlu_si/test/moral_scenarios/test/477
1269
+ gmmlu_si/test/moral_scenarios/test/484
1270
+ gmmlu_si/test/moral_scenarios/test/490
1271
+ gmmlu_si/test/moral_scenarios/test/494
1272
+ gmmlu_si/test/moral_scenarios/test/507
1273
+ gmmlu_si/test/moral_scenarios/test/508
1274
+ gmmlu_si/test/moral_scenarios/test/514
1275
+ gmmlu_si/test/moral_scenarios/test/518
1276
+ gmmlu_si/test/moral_scenarios/test/519
1277
+ gmmlu_si/test/moral_scenarios/test/523
1278
+ gmmlu_si/test/moral_scenarios/test/528
1279
+ gmmlu_si/test/moral_scenarios/test/53
1280
+ gmmlu_si/test/moral_scenarios/test/539
1281
+ gmmlu_si/test/moral_scenarios/test/543
1282
+ gmmlu_si/test/moral_scenarios/test/548
1283
+ gmmlu_si/test/moral_scenarios/test/550
1284
+ gmmlu_si/test/moral_scenarios/test/552
1285
+ gmmlu_si/test/moral_scenarios/test/562
1286
+ gmmlu_si/test/moral_scenarios/test/565
1287
+ gmmlu_si/test/moral_scenarios/test/57
1288
+ gmmlu_si/test/moral_scenarios/test/570
1289
+ gmmlu_si/test/moral_scenarios/test/572
1290
+ gmmlu_si/test/moral_scenarios/test/578
1291
+ gmmlu_si/test/moral_scenarios/test/584
1292
+ gmmlu_si/test/moral_scenarios/test/588
1293
+ gmmlu_si/test/moral_scenarios/test/596
1294
+ gmmlu_si/test/moral_scenarios/test/6
1295
+ gmmlu_si/test/moral_scenarios/test/60
1296
+ gmmlu_si/test/moral_scenarios/test/606
1297
+ gmmlu_si/test/moral_scenarios/test/612
1298
+ gmmlu_si/test/moral_scenarios/test/62
1299
+ gmmlu_si/test/moral_scenarios/test/626
1300
+ gmmlu_si/test/moral_scenarios/test/631
1301
+ gmmlu_si/test/moral_scenarios/test/632
1302
+ gmmlu_si/test/moral_scenarios/test/640
1303
+ gmmlu_si/test/moral_scenarios/test/641
1304
+ gmmlu_si/test/moral_scenarios/test/646
1305
+ gmmlu_si/test/moral_scenarios/test/65
1306
+ gmmlu_si/test/moral_scenarios/test/682
1307
+ gmmlu_si/test/moral_scenarios/test/693
1308
+ gmmlu_si/test/moral_scenarios/test/699
1309
+ gmmlu_si/test/moral_scenarios/test/7
1310
+ gmmlu_si/test/moral_scenarios/test/709
1311
+ gmmlu_si/test/moral_scenarios/test/718
1312
+ gmmlu_si/test/moral_scenarios/test/732
1313
+ gmmlu_si/test/moral_scenarios/test/747
1314
+ gmmlu_si/test/moral_scenarios/test/756
1315
+ gmmlu_si/test/moral_scenarios/test/759
1316
+ gmmlu_si/test/moral_scenarios/test/76
1317
+ gmmlu_si/test/moral_scenarios/test/761
1318
+ gmmlu_si/test/moral_scenarios/test/775
1319
+ gmmlu_si/test/moral_scenarios/test/789
1320
+ gmmlu_si/test/moral_scenarios/test/793
1321
+ gmmlu_si/test/moral_scenarios/test/794
1322
+ gmmlu_si/test/moral_scenarios/test/802
1323
+ gmmlu_si/test/moral_scenarios/test/808
1324
+ gmmlu_si/test/moral_scenarios/test/814
1325
+ gmmlu_si/test/moral_scenarios/test/82
1326
+ gmmlu_si/test/moral_scenarios/test/827
1327
+ gmmlu_si/test/moral_scenarios/test/831
1328
+ gmmlu_si/test/moral_scenarios/test/834
1329
+ gmmlu_si/test/moral_scenarios/test/848
1330
+ gmmlu_si/test/moral_scenarios/test/851
1331
+ gmmlu_si/test/moral_scenarios/test/855
1332
+ gmmlu_si/test/moral_scenarios/test/856
1333
+ gmmlu_si/test/moral_scenarios/test/857
1334
+ gmmlu_si/test/moral_scenarios/test/87
1335
+ gmmlu_si/test/moral_scenarios/test/884
1336
+ gmmlu_si/test/moral_scenarios/test/887
1337
+ gmmlu_si/test/moral_scenarios/test/888
1338
+ gmmlu_si/test/moral_scenarios/test/894
1339
+ gmmlu_si/test/moral_scenarios/test/90
1340
+ gmmlu_si/test/moral_scenarios/test/97
1341
+ gmmlu_si/test/nutrition/test/104
1342
+ gmmlu_si/test/nutrition/test/113
1343
+ gmmlu_si/test/nutrition/test/126
1344
+ gmmlu_si/test/nutrition/test/131
1345
+ gmmlu_si/test/nutrition/test/136
1346
+ gmmlu_si/test/nutrition/test/145
1347
+ gmmlu_si/test/nutrition/test/15
1348
+ gmmlu_si/test/nutrition/test/152
1349
+ gmmlu_si/test/nutrition/test/155
1350
+ gmmlu_si/test/nutrition/test/160
1351
+ gmmlu_si/test/nutrition/test/168
1352
+ gmmlu_si/test/nutrition/test/183
1353
+ gmmlu_si/test/nutrition/test/186
1354
+ gmmlu_si/test/nutrition/test/188
1355
+ gmmlu_si/test/nutrition/test/191
1356
+ gmmlu_si/test/nutrition/test/200
1357
+ gmmlu_si/test/nutrition/test/209
1358
+ gmmlu_si/test/nutrition/test/210
1359
+ gmmlu_si/test/nutrition/test/211
1360
+ gmmlu_si/test/nutrition/test/217
1361
+ gmmlu_si/test/nutrition/test/225
1362
+ gmmlu_si/test/nutrition/test/228
1363
+ gmmlu_si/test/nutrition/test/232
1364
+ gmmlu_si/test/nutrition/test/237
1365
+ gmmlu_si/test/nutrition/test/238
1366
+ gmmlu_si/test/nutrition/test/24
1367
+ gmmlu_si/test/nutrition/test/248
1368
+ gmmlu_si/test/nutrition/test/277
1369
+ gmmlu_si/test/nutrition/test/279
1370
+ gmmlu_si/test/nutrition/test/281
1371
+ gmmlu_si/test/nutrition/test/282
1372
+ gmmlu_si/test/nutrition/test/291
1373
+ gmmlu_si/test/nutrition/test/303
1374
+ gmmlu_si/test/nutrition/test/49
1375
+ gmmlu_si/test/nutrition/test/52
1376
+ gmmlu_si/test/nutrition/test/53
1377
+ gmmlu_si/test/nutrition/test/59
1378
+ gmmlu_si/test/nutrition/test/62
1379
+ gmmlu_si/test/nutrition/test/65
1380
+ gmmlu_si/test/nutrition/test/67
1381
+ gmmlu_si/test/nutrition/test/68
1382
+ gmmlu_si/test/nutrition/test/72
1383
+ gmmlu_si/test/nutrition/test/90
1384
+ gmmlu_si/test/nutrition/test/95
1385
+ gmmlu_si/test/philosophy/test/126
1386
+ gmmlu_si/test/philosophy/test/135
1387
+ gmmlu_si/test/philosophy/test/15
1388
+ gmmlu_si/test/philosophy/test/158
1389
+ gmmlu_si/test/philosophy/test/16
1390
+ gmmlu_si/test/philosophy/test/160
1391
+ gmmlu_si/test/philosophy/test/161
1392
+ gmmlu_si/test/philosophy/test/165
1393
+ gmmlu_si/test/philosophy/test/174
1394
+ gmmlu_si/test/philosophy/test/176
1395
+ gmmlu_si/test/philosophy/test/179
1396
+ gmmlu_si/test/philosophy/test/187
1397
+ gmmlu_si/test/philosophy/test/193
1398
+ gmmlu_si/test/philosophy/test/194
1399
+ gmmlu_si/test/philosophy/test/195
1400
+ gmmlu_si/test/philosophy/test/201
1401
+ gmmlu_si/test/philosophy/test/202
1402
+ gmmlu_si/test/philosophy/test/207
1403
+ gmmlu_si/test/philosophy/test/215
1404
+ gmmlu_si/test/philosophy/test/217
1405
+ gmmlu_si/test/philosophy/test/229
1406
+ gmmlu_si/test/philosophy/test/234
1407
+ gmmlu_si/test/philosophy/test/243
1408
+ gmmlu_si/test/philosophy/test/244
1409
+ gmmlu_si/test/philosophy/test/250
1410
+ gmmlu_si/test/philosophy/test/257
1411
+ gmmlu_si/test/philosophy/test/263
1412
+ gmmlu_si/test/philosophy/test/264
1413
+ gmmlu_si/test/philosophy/test/265
1414
+ gmmlu_si/test/philosophy/test/278
1415
+ gmmlu_si/test/philosophy/test/279
1416
+ gmmlu_si/test/philosophy/test/280
1417
+ gmmlu_si/test/philosophy/test/281
1418
+ gmmlu_si/test/philosophy/test/299
1419
+ gmmlu_si/test/philosophy/test/305
1420
+ gmmlu_si/test/philosophy/test/306
1421
+ gmmlu_si/test/philosophy/test/40
1422
+ gmmlu_si/test/philosophy/test/46
1423
+ gmmlu_si/test/philosophy/test/6
1424
+ gmmlu_si/test/philosophy/test/61
1425
+ gmmlu_si/test/philosophy/test/65
1426
+ gmmlu_si/test/philosophy/test/70
1427
+ gmmlu_si/test/philosophy/test/81
1428
+ gmmlu_si/test/philosophy/test/88
1429
+ gmmlu_si/test/prehistory/test/108
1430
+ gmmlu_si/test/prehistory/test/111
1431
+ gmmlu_si/test/prehistory/test/119
1432
+ gmmlu_si/test/prehistory/test/122
1433
+ gmmlu_si/test/prehistory/test/129
1434
+ gmmlu_si/test/prehistory/test/13
1435
+ gmmlu_si/test/prehistory/test/133
1436
+ gmmlu_si/test/prehistory/test/134
1437
+ gmmlu_si/test/prehistory/test/141
1438
+ gmmlu_si/test/prehistory/test/142
1439
+ gmmlu_si/test/prehistory/test/143
1440
+ gmmlu_si/test/prehistory/test/149
1441
+ gmmlu_si/test/prehistory/test/161
1442
+ gmmlu_si/test/prehistory/test/162
1443
+ gmmlu_si/test/prehistory/test/174
1444
+ gmmlu_si/test/prehistory/test/184
1445
+ gmmlu_si/test/prehistory/test/203
1446
+ gmmlu_si/test/prehistory/test/211
1447
+ gmmlu_si/test/prehistory/test/213
1448
+ gmmlu_si/test/prehistory/test/216
1449
+ gmmlu_si/test/prehistory/test/217
1450
+ gmmlu_si/test/prehistory/test/223
1451
+ gmmlu_si/test/prehistory/test/238
1452
+ gmmlu_si/test/prehistory/test/24
1453
+ gmmlu_si/test/prehistory/test/242
1454
+ gmmlu_si/test/prehistory/test/255
1455
+ gmmlu_si/test/prehistory/test/26
1456
+ gmmlu_si/test/prehistory/test/267
1457
+ gmmlu_si/test/prehistory/test/279
1458
+ gmmlu_si/test/prehistory/test/28
1459
+ gmmlu_si/test/prehistory/test/294
1460
+ gmmlu_si/test/prehistory/test/299
1461
+ gmmlu_si/test/prehistory/test/3
1462
+ gmmlu_si/test/prehistory/test/300
1463
+ gmmlu_si/test/prehistory/test/303
1464
+ gmmlu_si/test/prehistory/test/308
1465
+ gmmlu_si/test/prehistory/test/312
1466
+ gmmlu_si/test/prehistory/test/318
1467
+ gmmlu_si/test/prehistory/test/320
1468
+ gmmlu_si/test/prehistory/test/45
1469
+ gmmlu_si/test/prehistory/test/48
1470
+ gmmlu_si/test/prehistory/test/59
1471
+ gmmlu_si/test/prehistory/test/7
1472
+ gmmlu_si/test/prehistory/test/76
1473
+ gmmlu_si/test/prehistory/test/85
1474
+ gmmlu_si/test/prehistory/test/95
1475
+ gmmlu_si/test/professional_accounting/test/0
1476
+ gmmlu_si/test/professional_accounting/test/108
1477
+ gmmlu_si/test/professional_accounting/test/109
1478
+ gmmlu_si/test/professional_accounting/test/112
1479
+ gmmlu_si/test/professional_accounting/test/114
1480
+ gmmlu_si/test/professional_accounting/test/119
1481
+ gmmlu_si/test/professional_accounting/test/120
1482
+ gmmlu_si/test/professional_accounting/test/128
1483
+ gmmlu_si/test/professional_accounting/test/135
1484
+ gmmlu_si/test/professional_accounting/test/136
1485
+ gmmlu_si/test/professional_accounting/test/142
1486
+ gmmlu_si/test/professional_accounting/test/157
1487
+ gmmlu_si/test/professional_accounting/test/159
1488
+ gmmlu_si/test/professional_accounting/test/167
1489
+ gmmlu_si/test/professional_accounting/test/168
1490
+ gmmlu_si/test/professional_accounting/test/173
1491
+ gmmlu_si/test/professional_accounting/test/193
1492
+ gmmlu_si/test/professional_accounting/test/197
1493
+ gmmlu_si/test/professional_accounting/test/206
1494
+ gmmlu_si/test/professional_accounting/test/210
1495
+ gmmlu_si/test/professional_accounting/test/212
1496
+ gmmlu_si/test/professional_accounting/test/216
1497
+ gmmlu_si/test/professional_accounting/test/224
1498
+ gmmlu_si/test/professional_accounting/test/237
1499
+ gmmlu_si/test/professional_accounting/test/241
1500
+ gmmlu_si/test/professional_accounting/test/252
1501
+ gmmlu_si/test/professional_accounting/test/254
1502
+ gmmlu_si/test/professional_accounting/test/258
1503
+ gmmlu_si/test/professional_accounting/test/261
1504
+ gmmlu_si/test/professional_accounting/test/262
1505
+ gmmlu_si/test/professional_accounting/test/264
1506
+ gmmlu_si/test/professional_accounting/test/278
1507
+ gmmlu_si/test/professional_accounting/test/279
1508
+ gmmlu_si/test/professional_accounting/test/281
1509
+ gmmlu_si/test/professional_accounting/test/41
1510
+ gmmlu_si/test/professional_accounting/test/46
1511
+ gmmlu_si/test/professional_accounting/test/60
1512
+ gmmlu_si/test/professional_accounting/test/76
1513
+ gmmlu_si/test/professional_accounting/test/86
1514
+ gmmlu_si/test/professional_accounting/test/90
1515
+ gmmlu_si/test/professional_law/test/1014
1516
+ gmmlu_si/test/professional_law/test/1024
1517
+ gmmlu_si/test/professional_law/test/1032
1518
+ gmmlu_si/test/professional_law/test/1034
1519
+ gmmlu_si/test/professional_law/test/1047
1520
+ gmmlu_si/test/professional_law/test/1051
1521
+ gmmlu_si/test/professional_law/test/1052
1522
+ gmmlu_si/test/professional_law/test/1056
1523
+ gmmlu_si/test/professional_law/test/1059
1524
+ gmmlu_si/test/professional_law/test/106
1525
+ gmmlu_si/test/professional_law/test/1072
1526
+ gmmlu_si/test/professional_law/test/1075
1527
+ gmmlu_si/test/professional_law/test/1083
1528
+ gmmlu_si/test/professional_law/test/109
1529
+ gmmlu_si/test/professional_law/test/1095
1530
+ gmmlu_si/test/professional_law/test/1097
1531
+ gmmlu_si/test/professional_law/test/1109
1532
+ gmmlu_si/test/professional_law/test/1110
1533
+ gmmlu_si/test/professional_law/test/1125
1534
+ gmmlu_si/test/professional_law/test/1128
1535
+ gmmlu_si/test/professional_law/test/1131
1536
+ gmmlu_si/test/professional_law/test/1139
1537
+ gmmlu_si/test/professional_law/test/1145
1538
+ gmmlu_si/test/professional_law/test/1169
1539
+ gmmlu_si/test/professional_law/test/1170
1540
+ gmmlu_si/test/professional_law/test/1178
1541
+ gmmlu_si/test/professional_law/test/1179
1542
+ gmmlu_si/test/professional_law/test/1189
1543
+ gmmlu_si/test/professional_law/test/1190
1544
+ gmmlu_si/test/professional_law/test/1202
1545
+ gmmlu_si/test/professional_law/test/1203
1546
+ gmmlu_si/test/professional_law/test/1207
1547
+ gmmlu_si/test/professional_law/test/1211
1548
+ gmmlu_si/test/professional_law/test/1213
1549
+ gmmlu_si/test/professional_law/test/122
1550
+ gmmlu_si/test/professional_law/test/1233
1551
+ gmmlu_si/test/professional_law/test/1251
1552
+ gmmlu_si/test/professional_law/test/1257
1553
+ gmmlu_si/test/professional_law/test/1266
1554
+ gmmlu_si/test/professional_law/test/1294
1555
+ gmmlu_si/test/professional_law/test/1307
1556
+ gmmlu_si/test/professional_law/test/131
1557
+ gmmlu_si/test/professional_law/test/1314
1558
+ gmmlu_si/test/professional_law/test/1319
1559
+ gmmlu_si/test/professional_law/test/1326
1560
+ gmmlu_si/test/professional_law/test/1332
1561
+ gmmlu_si/test/professional_law/test/1335
1562
+ gmmlu_si/test/professional_law/test/1338
1563
+ gmmlu_si/test/professional_law/test/1346
1564
+ gmmlu_si/test/professional_law/test/1347
1565
+ gmmlu_si/test/professional_law/test/1361
1566
+ gmmlu_si/test/professional_law/test/1384
1567
+ gmmlu_si/test/professional_law/test/1387
1568
+ gmmlu_si/test/professional_law/test/1392
1569
+ gmmlu_si/test/professional_law/test/1401
1570
+ gmmlu_si/test/professional_law/test/1411
1571
+ gmmlu_si/test/professional_law/test/1413
1572
+ gmmlu_si/test/professional_law/test/1431
1573
+ gmmlu_si/test/professional_law/test/1438
1574
+ gmmlu_si/test/professional_law/test/1439
1575
+ gmmlu_si/test/professional_law/test/1454
1576
+ gmmlu_si/test/professional_law/test/1459
1577
+ gmmlu_si/test/professional_law/test/1463
1578
+ gmmlu_si/test/professional_law/test/1470
1579
+ gmmlu_si/test/professional_law/test/1475
1580
+ gmmlu_si/test/professional_law/test/1477
1581
+ gmmlu_si/test/professional_law/test/1484
1582
+ gmmlu_si/test/professional_law/test/1487
1583
+ gmmlu_si/test/professional_law/test/1488
1584
+ gmmlu_si/test/professional_law/test/1501
1585
+ gmmlu_si/test/professional_law/test/1502
1586
+ gmmlu_si/test/professional_law/test/1504
1587
+ gmmlu_si/test/professional_law/test/1509
1588
+ gmmlu_si/test/professional_law/test/1515
1589
+ gmmlu_si/test/professional_law/test/1516
1590
+ gmmlu_si/test/professional_law/test/1521
1591
+ gmmlu_si/test/professional_law/test/1526
1592
+ gmmlu_si/test/professional_law/test/1527
1593
+ gmmlu_si/test/professional_law/test/159
1594
+ gmmlu_si/test/professional_law/test/163
1595
+ gmmlu_si/test/professional_law/test/170
1596
+ gmmlu_si/test/professional_law/test/174
1597
+ gmmlu_si/test/professional_law/test/177
1598
+ gmmlu_si/test/professional_law/test/184
1599
+ gmmlu_si/test/professional_law/test/185
1600
+ gmmlu_si/test/professional_law/test/194
1601
+ gmmlu_si/test/professional_law/test/199
1602
+ gmmlu_si/test/professional_law/test/205
1603
+ gmmlu_si/test/professional_law/test/207
1604
+ gmmlu_si/test/professional_law/test/213
1605
+ gmmlu_si/test/professional_law/test/223
1606
+ gmmlu_si/test/professional_law/test/227
1607
+ gmmlu_si/test/professional_law/test/24
1608
+ gmmlu_si/test/professional_law/test/246
1609
+ gmmlu_si/test/professional_law/test/249
1610
+ gmmlu_si/test/professional_law/test/250
1611
+ gmmlu_si/test/professional_law/test/251
1612
+ gmmlu_si/test/professional_law/test/267
1613
+ gmmlu_si/test/professional_law/test/269
1614
+ gmmlu_si/test/professional_law/test/271
1615
+ gmmlu_si/test/professional_law/test/278
1616
+ gmmlu_si/test/professional_law/test/286
1617
+ gmmlu_si/test/professional_law/test/299
1618
+ gmmlu_si/test/professional_law/test/302
1619
+ gmmlu_si/test/professional_law/test/317
1620
+ gmmlu_si/test/professional_law/test/32
1621
+ gmmlu_si/test/professional_law/test/34
1622
+ gmmlu_si/test/professional_law/test/342
1623
+ gmmlu_si/test/professional_law/test/348
1624
+ gmmlu_si/test/professional_law/test/350
1625
+ gmmlu_si/test/professional_law/test/351
1626
+ gmmlu_si/test/professional_law/test/360
1627
+ gmmlu_si/test/professional_law/test/363
1628
+ gmmlu_si/test/professional_law/test/366
1629
+ gmmlu_si/test/professional_law/test/369
1630
+ gmmlu_si/test/professional_law/test/375
1631
+ gmmlu_si/test/professional_law/test/376
1632
+ gmmlu_si/test/professional_law/test/381
1633
+ gmmlu_si/test/professional_law/test/393
1634
+ gmmlu_si/test/professional_law/test/397
1635
+ gmmlu_si/test/professional_law/test/40
1636
+ gmmlu_si/test/professional_law/test/401
1637
+ gmmlu_si/test/professional_law/test/404
1638
+ gmmlu_si/test/professional_law/test/407
1639
+ gmmlu_si/test/professional_law/test/422
1640
+ gmmlu_si/test/professional_law/test/43
1641
+ gmmlu_si/test/professional_law/test/438
1642
+ gmmlu_si/test/professional_law/test/441
1643
+ gmmlu_si/test/professional_law/test/442
1644
+ gmmlu_si/test/professional_law/test/451
1645
+ gmmlu_si/test/professional_law/test/453
1646
+ gmmlu_si/test/professional_law/test/454
1647
+ gmmlu_si/test/professional_law/test/462
1648
+ gmmlu_si/test/professional_law/test/463
1649
+ gmmlu_si/test/professional_law/test/470
1650
+ gmmlu_si/test/professional_law/test/497
1651
+ gmmlu_si/test/professional_law/test/499
1652
+ gmmlu_si/test/professional_law/test/505
1653
+ gmmlu_si/test/professional_law/test/514
1654
+ gmmlu_si/test/professional_law/test/525
1655
+ gmmlu_si/test/professional_law/test/538
1656
+ gmmlu_si/test/professional_law/test/539
1657
+ gmmlu_si/test/professional_law/test/540
1658
+ gmmlu_si/test/professional_law/test/545
1659
+ gmmlu_si/test/professional_law/test/55
1660
+ gmmlu_si/test/professional_law/test/571
1661
+ gmmlu_si/test/professional_law/test/573
1662
+ gmmlu_si/test/professional_law/test/580
1663
+ gmmlu_si/test/professional_law/test/583
1664
+ gmmlu_si/test/professional_law/test/584
1665
+ gmmlu_si/test/professional_law/test/593
1666
+ gmmlu_si/test/professional_law/test/596
1667
+ gmmlu_si/test/professional_law/test/600
1668
+ gmmlu_si/test/professional_law/test/611
1669
+ gmmlu_si/test/professional_law/test/616
1670
+ gmmlu_si/test/professional_law/test/617
1671
+ gmmlu_si/test/professional_law/test/623
1672
+ gmmlu_si/test/professional_law/test/630
1673
+ gmmlu_si/test/professional_law/test/644
1674
+ gmmlu_si/test/professional_law/test/645
1675
+ gmmlu_si/test/professional_law/test/65
1676
+ gmmlu_si/test/professional_law/test/679
1677
+ gmmlu_si/test/professional_law/test/69
1678
+ gmmlu_si/test/professional_law/test/690
1679
+ gmmlu_si/test/professional_law/test/695
1680
+ gmmlu_si/test/professional_law/test/698
1681
+ gmmlu_si/test/professional_law/test/70
1682
+ gmmlu_si/test/professional_law/test/705
1683
+ gmmlu_si/test/professional_law/test/709
1684
+ gmmlu_si/test/professional_law/test/714
1685
+ gmmlu_si/test/professional_law/test/715
1686
+ gmmlu_si/test/professional_law/test/718
1687
+ gmmlu_si/test/professional_law/test/724
1688
+ gmmlu_si/test/professional_law/test/729
1689
+ gmmlu_si/test/professional_law/test/735
1690
+ gmmlu_si/test/professional_law/test/737
1691
+ gmmlu_si/test/professional_law/test/746
1692
+ gmmlu_si/test/professional_law/test/748
1693
+ gmmlu_si/test/professional_law/test/750
1694
+ gmmlu_si/test/professional_law/test/754
1695
+ gmmlu_si/test/professional_law/test/76
1696
+ gmmlu_si/test/professional_law/test/761
1697
+ gmmlu_si/test/professional_law/test/786
1698
+ gmmlu_si/test/professional_law/test/79
1699
+ gmmlu_si/test/professional_law/test/791
1700
+ gmmlu_si/test/professional_law/test/798
1701
+ gmmlu_si/test/professional_law/test/800
1702
+ gmmlu_si/test/professional_law/test/809
1703
+ gmmlu_si/test/professional_law/test/819
1704
+ gmmlu_si/test/professional_law/test/82
1705
+ gmmlu_si/test/professional_law/test/827
1706
+ gmmlu_si/test/professional_law/test/833
1707
+ gmmlu_si/test/professional_law/test/834
1708
+ gmmlu_si/test/professional_law/test/837
1709
+ gmmlu_si/test/professional_law/test/865
1710
+ gmmlu_si/test/professional_law/test/871
1711
+ gmmlu_si/test/professional_law/test/873
1712
+ gmmlu_si/test/professional_law/test/882
1713
+ gmmlu_si/test/professional_law/test/889
1714
+ gmmlu_si/test/professional_law/test/89
1715
+ gmmlu_si/test/professional_law/test/893
1716
+ gmmlu_si/test/professional_law/test/897
1717
+ gmmlu_si/test/professional_law/test/907
1718
+ gmmlu_si/test/professional_law/test/908
1719
+ gmmlu_si/test/professional_law/test/909
1720
+ gmmlu_si/test/professional_law/test/914
1721
+ gmmlu_si/test/professional_law/test/920
1722
+ gmmlu_si/test/professional_law/test/940
1723
+ gmmlu_si/test/professional_law/test/942
1724
+ gmmlu_si/test/professional_law/test/949
1725
+ gmmlu_si/test/professional_law/test/951
1726
+ gmmlu_si/test/professional_law/test/953
1727
+ gmmlu_si/test/professional_law/test/954
1728
+ gmmlu_si/test/professional_law/test/958
1729
+ gmmlu_si/test/professional_law/test/97
1730
+ gmmlu_si/test/professional_law/test/976
1731
+ gmmlu_si/test/professional_law/test/979
1732
+ gmmlu_si/test/professional_law/test/983
1733
+ gmmlu_si/test/professional_medicine/test/103
1734
+ gmmlu_si/test/professional_medicine/test/104
1735
+ gmmlu_si/test/professional_medicine/test/111
1736
+ gmmlu_si/test/professional_medicine/test/119
1737
+ gmmlu_si/test/professional_medicine/test/120
1738
+ gmmlu_si/test/professional_medicine/test/13
1739
+ gmmlu_si/test/professional_medicine/test/132
1740
+ gmmlu_si/test/professional_medicine/test/133
1741
+ gmmlu_si/test/professional_medicine/test/143
1742
+ gmmlu_si/test/professional_medicine/test/144
1743
+ gmmlu_si/test/professional_medicine/test/15
1744
+ gmmlu_si/test/professional_medicine/test/156
1745
+ gmmlu_si/test/professional_medicine/test/158
1746
+ gmmlu_si/test/professional_medicine/test/162
1747
+ gmmlu_si/test/professional_medicine/test/170
1748
+ gmmlu_si/test/professional_medicine/test/174
1749
+ gmmlu_si/test/professional_medicine/test/178
1750
+ gmmlu_si/test/professional_medicine/test/179
1751
+ gmmlu_si/test/professional_medicine/test/18
1752
+ gmmlu_si/test/professional_medicine/test/190
1753
+ gmmlu_si/test/professional_medicine/test/192
1754
+ gmmlu_si/test/professional_medicine/test/204
1755
+ gmmlu_si/test/professional_medicine/test/209
1756
+ gmmlu_si/test/professional_medicine/test/210
1757
+ gmmlu_si/test/professional_medicine/test/211
1758
+ gmmlu_si/test/professional_medicine/test/216
1759
+ gmmlu_si/test/professional_medicine/test/221
1760
+ gmmlu_si/test/professional_medicine/test/224
1761
+ gmmlu_si/test/professional_medicine/test/234
1762
+ gmmlu_si/test/professional_medicine/test/248
1763
+ gmmlu_si/test/professional_medicine/test/249
1764
+ gmmlu_si/test/professional_medicine/test/252
1765
+ gmmlu_si/test/professional_medicine/test/254
1766
+ gmmlu_si/test/professional_medicine/test/257
1767
+ gmmlu_si/test/professional_medicine/test/258
1768
+ gmmlu_si/test/professional_medicine/test/270
1769
+ gmmlu_si/test/professional_medicine/test/43
1770
+ gmmlu_si/test/professional_medicine/test/5
1771
+ gmmlu_si/test/professional_medicine/test/83
1772
+ gmmlu_si/test/professional_psychology/test/108
1773
+ gmmlu_si/test/professional_psychology/test/113
1774
+ gmmlu_si/test/professional_psychology/test/136
1775
+ gmmlu_si/test/professional_psychology/test/140
1776
+ gmmlu_si/test/professional_psychology/test/153
1777
+ gmmlu_si/test/professional_psychology/test/155
1778
+ gmmlu_si/test/professional_psychology/test/157
1779
+ gmmlu_si/test/professional_psychology/test/163
1780
+ gmmlu_si/test/professional_psychology/test/164
1781
+ gmmlu_si/test/professional_psychology/test/17
1782
+ gmmlu_si/test/professional_psychology/test/180
1783
+ gmmlu_si/test/professional_psychology/test/185
1784
+ gmmlu_si/test/professional_psychology/test/196
1785
+ gmmlu_si/test/professional_psychology/test/209
1786
+ gmmlu_si/test/professional_psychology/test/210
1787
+ gmmlu_si/test/professional_psychology/test/223
1788
+ gmmlu_si/test/professional_psychology/test/224
1789
+ gmmlu_si/test/professional_psychology/test/226
1790
+ gmmlu_si/test/professional_psychology/test/227
1791
+ gmmlu_si/test/professional_psychology/test/237
1792
+ gmmlu_si/test/professional_psychology/test/240
1793
+ gmmlu_si/test/professional_psychology/test/242
1794
+ gmmlu_si/test/professional_psychology/test/249
1795
+ gmmlu_si/test/professional_psychology/test/285
1796
+ gmmlu_si/test/professional_psychology/test/288
1797
+ gmmlu_si/test/professional_psychology/test/30
1798
+ gmmlu_si/test/professional_psychology/test/310
1799
+ gmmlu_si/test/professional_psychology/test/314
1800
+ gmmlu_si/test/professional_psychology/test/325
1801
+ gmmlu_si/test/professional_psychology/test/33
1802
+ gmmlu_si/test/professional_psychology/test/334
1803
+ gmmlu_si/test/professional_psychology/test/336
1804
+ gmmlu_si/test/professional_psychology/test/340
1805
+ gmmlu_si/test/professional_psychology/test/341
1806
+ gmmlu_si/test/professional_psychology/test/342
1807
+ gmmlu_si/test/professional_psychology/test/343
1808
+ gmmlu_si/test/professional_psychology/test/352
1809
+ gmmlu_si/test/professional_psychology/test/355
1810
+ gmmlu_si/test/professional_psychology/test/363
1811
+ gmmlu_si/test/professional_psychology/test/380
1812
+ gmmlu_si/test/professional_psychology/test/385
1813
+ gmmlu_si/test/professional_psychology/test/390
1814
+ gmmlu_si/test/professional_psychology/test/400
1815
+ gmmlu_si/test/professional_psychology/test/411
1816
+ gmmlu_si/test/professional_psychology/test/416
1817
+ gmmlu_si/test/professional_psychology/test/418
1818
+ gmmlu_si/test/professional_psychology/test/424
1819
+ gmmlu_si/test/professional_psychology/test/43
1820
+ gmmlu_si/test/professional_psychology/test/430
1821
+ gmmlu_si/test/professional_psychology/test/445
1822
+ gmmlu_si/test/professional_psychology/test/450
1823
+ gmmlu_si/test/professional_psychology/test/458
1824
+ gmmlu_si/test/professional_psychology/test/48
1825
+ gmmlu_si/test/professional_psychology/test/487
1826
+ gmmlu_si/test/professional_psychology/test/489
1827
+ gmmlu_si/test/professional_psychology/test/493
1828
+ gmmlu_si/test/professional_psychology/test/498
1829
+ gmmlu_si/test/professional_psychology/test/503
1830
+ gmmlu_si/test/professional_psychology/test/513
1831
+ gmmlu_si/test/professional_psychology/test/524
1832
+ gmmlu_si/test/professional_psychology/test/526
1833
+ gmmlu_si/test/professional_psychology/test/543
1834
+ gmmlu_si/test/professional_psychology/test/556
1835
+ gmmlu_si/test/professional_psychology/test/557
1836
+ gmmlu_si/test/professional_psychology/test/558
1837
+ gmmlu_si/test/professional_psychology/test/559
1838
+ gmmlu_si/test/professional_psychology/test/56
1839
+ gmmlu_si/test/professional_psychology/test/563
1840
+ gmmlu_si/test/professional_psychology/test/567
1841
+ gmmlu_si/test/professional_psychology/test/57
1842
+ gmmlu_si/test/professional_psychology/test/573
1843
+ gmmlu_si/test/professional_psychology/test/577
1844
+ gmmlu_si/test/professional_psychology/test/583
1845
+ gmmlu_si/test/professional_psychology/test/584
1846
+ gmmlu_si/test/professional_psychology/test/589
1847
+ gmmlu_si/test/professional_psychology/test/592
1848
+ gmmlu_si/test/professional_psychology/test/596
1849
+ gmmlu_si/test/professional_psychology/test/597
1850
+ gmmlu_si/test/professional_psychology/test/599
1851
+ gmmlu_si/test/professional_psychology/test/606
1852
+ gmmlu_si/test/professional_psychology/test/608
1853
+ gmmlu_si/test/professional_psychology/test/61
1854
+ gmmlu_si/test/professional_psychology/test/611
1855
+ gmmlu_si/test/professional_psychology/test/77
1856
+ gmmlu_si/test/professional_psychology/test/86
1857
+ gmmlu_si/test/professional_psychology/test/89
1858
+ gmmlu_si/test/professional_psychology/test/94
1859
+ gmmlu_si/test/public_relations/test/100
1860
+ gmmlu_si/test/public_relations/test/103
1861
+ gmmlu_si/test/public_relations/test/108
1862
+ gmmlu_si/test/public_relations/test/16
1863
+ gmmlu_si/test/public_relations/test/33
1864
+ gmmlu_si/test/public_relations/test/49
1865
+ gmmlu_si/test/public_relations/test/58
1866
+ gmmlu_si/test/public_relations/test/6
1867
+ gmmlu_si/test/public_relations/test/61
1868
+ gmmlu_si/test/public_relations/test/63
1869
+ gmmlu_si/test/public_relations/test/76
1870
+ gmmlu_si/test/public_relations/test/78
1871
+ gmmlu_si/test/public_relations/test/79
1872
+ gmmlu_si/test/public_relations/test/91
1873
+ gmmlu_si/test/public_relations/test/92
1874
+ gmmlu_si/test/public_relations/test/99
1875
+ gmmlu_si/test/security_studies/test/121
1876
+ gmmlu_si/test/security_studies/test/122
1877
+ gmmlu_si/test/security_studies/test/125
1878
+ gmmlu_si/test/security_studies/test/126
1879
+ gmmlu_si/test/security_studies/test/129
1880
+ gmmlu_si/test/security_studies/test/13
1881
+ gmmlu_si/test/security_studies/test/130
1882
+ gmmlu_si/test/security_studies/test/143
1883
+ gmmlu_si/test/security_studies/test/15
1884
+ gmmlu_si/test/security_studies/test/156
1885
+ gmmlu_si/test/security_studies/test/162
1886
+ gmmlu_si/test/security_studies/test/168
1887
+ gmmlu_si/test/security_studies/test/175
1888
+ gmmlu_si/test/security_studies/test/186
1889
+ gmmlu_si/test/security_studies/test/188
1890
+ gmmlu_si/test/security_studies/test/195
1891
+ gmmlu_si/test/security_studies/test/200
1892
+ gmmlu_si/test/security_studies/test/212
1893
+ gmmlu_si/test/security_studies/test/213
1894
+ gmmlu_si/test/security_studies/test/216
1895
+ gmmlu_si/test/security_studies/test/22
1896
+ gmmlu_si/test/security_studies/test/230
1897
+ gmmlu_si/test/security_studies/test/239
1898
+ gmmlu_si/test/security_studies/test/241
1899
+ gmmlu_si/test/security_studies/test/31
1900
+ gmmlu_si/test/security_studies/test/33
1901
+ gmmlu_si/test/security_studies/test/48
1902
+ gmmlu_si/test/security_studies/test/54
1903
+ gmmlu_si/test/security_studies/test/55
1904
+ gmmlu_si/test/security_studies/test/59
1905
+ gmmlu_si/test/security_studies/test/61
1906
+ gmmlu_si/test/security_studies/test/70
1907
+ gmmlu_si/test/security_studies/test/90
1908
+ gmmlu_si/test/security_studies/test/96
1909
+ gmmlu_si/test/security_studies/test/99
1910
+ gmmlu_si/test/sociology/test/105
1911
+ gmmlu_si/test/sociology/test/107
1912
+ gmmlu_si/test/sociology/test/119
1913
+ gmmlu_si/test/sociology/test/121
1914
+ gmmlu_si/test/sociology/test/123
1915
+ gmmlu_si/test/sociology/test/135
1916
+ gmmlu_si/test/sociology/test/139
1917
+ gmmlu_si/test/sociology/test/148
1918
+ gmmlu_si/test/sociology/test/155
1919
+ gmmlu_si/test/sociology/test/156
1920
+ gmmlu_si/test/sociology/test/16
1921
+ gmmlu_si/test/sociology/test/161
1922
+ gmmlu_si/test/sociology/test/165
1923
+ gmmlu_si/test/sociology/test/167
1924
+ gmmlu_si/test/sociology/test/17
1925
+ gmmlu_si/test/sociology/test/177
1926
+ gmmlu_si/test/sociology/test/186
1927
+ gmmlu_si/test/sociology/test/188
1928
+ gmmlu_si/test/sociology/test/195
1929
+ gmmlu_si/test/sociology/test/199
1930
+ gmmlu_si/test/sociology/test/24
1931
+ gmmlu_si/test/sociology/test/36
1932
+ gmmlu_si/test/sociology/test/39
1933
+ gmmlu_si/test/sociology/test/50
1934
+ gmmlu_si/test/sociology/test/51
1935
+ gmmlu_si/test/sociology/test/59
1936
+ gmmlu_si/test/sociology/test/66
1937
+ gmmlu_si/test/sociology/test/93
1938
+ gmmlu_si/test/sociology/test/97
1939
+ gmmlu_si/test/us_foreign_policy/test/14
1940
+ gmmlu_si/test/us_foreign_policy/test/25
1941
+ gmmlu_si/test/us_foreign_policy/test/3
1942
+ gmmlu_si/test/us_foreign_policy/test/39
1943
+ gmmlu_si/test/us_foreign_policy/test/42
1944
+ gmmlu_si/test/us_foreign_policy/test/44
1945
+ gmmlu_si/test/us_foreign_policy/test/46
1946
+ gmmlu_si/test/us_foreign_policy/test/48
1947
+ gmmlu_si/test/us_foreign_policy/test/54
1948
+ gmmlu_si/test/us_foreign_policy/test/58
1949
+ gmmlu_si/test/us_foreign_policy/test/83
1950
+ gmmlu_si/test/us_foreign_policy/test/94
1951
+ gmmlu_si/test/us_foreign_policy/test/98
1952
+ gmmlu_si/test/us_foreign_policy/test/99
1953
+ gmmlu_si/test/virology/test/101
1954
+ gmmlu_si/test/virology/test/105
1955
+ gmmlu_si/test/virology/test/106
1956
+ gmmlu_si/test/virology/test/107
1957
+ gmmlu_si/test/virology/test/11
1958
+ gmmlu_si/test/virology/test/120
1959
+ gmmlu_si/test/virology/test/122
1960
+ gmmlu_si/test/virology/test/129
1961
+ gmmlu_si/test/virology/test/140
1962
+ gmmlu_si/test/virology/test/147
1963
+ gmmlu_si/test/virology/test/157
1964
+ gmmlu_si/test/virology/test/16
1965
+ gmmlu_si/test/virology/test/17
1966
+ gmmlu_si/test/virology/test/23
1967
+ gmmlu_si/test/virology/test/29
1968
+ gmmlu_si/test/virology/test/30
1969
+ gmmlu_si/test/virology/test/34
1970
+ gmmlu_si/test/virology/test/49
1971
+ gmmlu_si/test/virology/test/52
1972
+ gmmlu_si/test/virology/test/61
1973
+ gmmlu_si/test/virology/test/8
1974
+ gmmlu_si/test/virology/test/85
1975
+ gmmlu_si/test/virology/test/94
1976
+ gmmlu_si/test/virology/test/97
1977
+ gmmlu_si/test/world_religions/test/0
1978
+ gmmlu_si/test/world_religions/test/109
1979
+ gmmlu_si/test/world_religions/test/112
1980
+ gmmlu_si/test/world_religions/test/122
1981
+ gmmlu_si/test/world_religions/test/123
1982
+ gmmlu_si/test/world_religions/test/13
1983
+ gmmlu_si/test/world_religions/test/146
1984
+ gmmlu_si/test/world_religions/test/154
1985
+ gmmlu_si/test/world_religions/test/159
1986
+ gmmlu_si/test/world_religions/test/161
1987
+ gmmlu_si/test/world_religions/test/21
1988
+ gmmlu_si/test/world_religions/test/4
1989
+ gmmlu_si/test/world_religions/test/44
1990
+ gmmlu_si/test/world_religions/test/45
1991
+ gmmlu_si/test/world_religions/test/50
1992
+ gmmlu_si/test/world_religions/test/53
1993
+ gmmlu_si/test/world_religions/test/60
1994
+ gmmlu_si/test/world_religions/test/61
1995
+ gmmlu_si/test/world_religions/test/62
1996
+ gmmlu_si/test/world_religions/test/68
1997
+ gmmlu_si/test/world_religions/test/74
1998
+ gmmlu_si/test/world_religions/test/81
1999
+ gmmlu_si/test/world_religions/test/9
2000
+ gmmlu_si/test/world_religions/test/90
training/configs/splits/sinhalammlu_dev_5shot_ids.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ smmlu/easy/science/128
2
+ smmlu/easy/Health and Physical Science/52
3
+ smmlu/easy/Sinhala language and literature/21
4
+ smmlu/easy/Buddhism/158
5
+ smmlu/easy/Buddhism/147
training/configs/splits/sinhalammlu_dev_cv5.json ADDED
@@ -0,0 +1,1862 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ [
3
+ "smmlu/easy/Arts/73",
4
+ "smmlu/easy/Arts/55",
5
+ "smmlu/easy/Arts/84",
6
+ "smmlu/easy/Arts/31",
7
+ "smmlu/easy/Arts/53",
8
+ "smmlu/easy/Arts/66",
9
+ "smmlu/easy/Arts/54",
10
+ "smmlu/easy/Arts/44",
11
+ "smmlu/easy/Arts/30",
12
+ "smmlu/easy/Arts/63",
13
+ "smmlu/easy/Arts/35",
14
+ "smmlu/easy/Arts/29",
15
+ "smmlu/easy/Arts/93",
16
+ "smmlu/easy/Arts/68",
17
+ "smmlu/easy/Arts/37",
18
+ "smmlu/easy/Arts/3",
19
+ "smmlu/easy/Arts/64",
20
+ "smmlu/easy/Arts/11",
21
+ "smmlu/easy/Arts/18",
22
+ "smmlu/easy/Arts/19",
23
+ "smmlu/easy/Buddhism/77",
24
+ "smmlu/easy/Buddhism/154",
25
+ "smmlu/easy/Buddhism/36",
26
+ "smmlu/easy/Buddhism/146",
27
+ "smmlu/easy/Buddhism/35",
28
+ "smmlu/easy/Buddhism/47",
29
+ "smmlu/easy/Buddhism/150",
30
+ "smmlu/easy/Buddhism/124",
31
+ "smmlu/easy/Buddhism/5",
32
+ "smmlu/easy/Buddhism/84",
33
+ "smmlu/easy/Buddhism/159",
34
+ "smmlu/easy/Buddhism/13",
35
+ "smmlu/easy/Buddhism/97",
36
+ "smmlu/easy/Buddhism/142",
37
+ "smmlu/easy/Buddhism/103",
38
+ "smmlu/easy/Buddhism/1",
39
+ "smmlu/easy/Buddhism/87",
40
+ "smmlu/easy/Buddhism/114",
41
+ "smmlu/easy/Buddhism/116",
42
+ "smmlu/easy/Buddhism/67",
43
+ "smmlu/easy/Buddhism/83",
44
+ "smmlu/easy/Buddhism/157",
45
+ "smmlu/easy/Buddhism/71",
46
+ "smmlu/easy/Buddhism/51",
47
+ "smmlu/easy/Buddhism/85",
48
+ "smmlu/easy/Buddhism/60",
49
+ "smmlu/easy/Buddhism/19",
50
+ "smmlu/easy/Buddhism/115",
51
+ "smmlu/easy/Buddhism/135",
52
+ "smmlu/easy/Buddhism/4",
53
+ "smmlu/easy/Buddhism/53",
54
+ "smmlu/easy/Buddhism/20",
55
+ "smmlu/easy/Buddhism/90",
56
+ "smmlu/easy/Catholicism/84",
57
+ "smmlu/easy/Catholicism/70",
58
+ "smmlu/easy/Catholicism/93",
59
+ "smmlu/easy/Catholicism/111",
60
+ "smmlu/easy/Catholicism/11",
61
+ "smmlu/easy/Catholicism/64",
62
+ "smmlu/easy/Catholicism/55",
63
+ "smmlu/easy/Catholicism/42",
64
+ "smmlu/easy/Catholicism/131",
65
+ "smmlu/easy/Catholicism/52",
66
+ "smmlu/easy/Catholicism/88",
67
+ "smmlu/easy/Catholicism/97",
68
+ "smmlu/easy/Catholicism/63",
69
+ "smmlu/easy/Catholicism/76",
70
+ "smmlu/easy/Catholicism/124",
71
+ "smmlu/easy/Catholicism/106",
72
+ "smmlu/easy/Catholicism/16",
73
+ "smmlu/easy/Catholicism/57",
74
+ "smmlu/easy/Catholicism/22",
75
+ "smmlu/easy/Catholicism/92",
76
+ "smmlu/easy/Catholicism/13",
77
+ "smmlu/easy/Catholicism/19",
78
+ "smmlu/easy/Catholicism/107",
79
+ "smmlu/easy/Catholicism/120",
80
+ "smmlu/easy/Catholicism/18",
81
+ "smmlu/easy/Catholicism/47",
82
+ "smmlu/easy/Christianity/122",
83
+ "smmlu/easy/Christianity/105",
84
+ "smmlu/easy/Christianity/91",
85
+ "smmlu/easy/Christianity/96",
86
+ "smmlu/easy/Christianity/103",
87
+ "smmlu/easy/Christianity/41",
88
+ "smmlu/easy/Christianity/124",
89
+ "smmlu/easy/Christianity/25",
90
+ "smmlu/easy/Christianity/58",
91
+ "smmlu/easy/Christianity/95",
92
+ "smmlu/easy/Christianity/127",
93
+ "smmlu/easy/Christianity/60",
94
+ "smmlu/easy/Christianity/20",
95
+ "smmlu/easy/Christianity/40",
96
+ "smmlu/easy/Christianity/52",
97
+ "smmlu/easy/Christianity/120",
98
+ "smmlu/easy/Christianity/118",
99
+ "smmlu/easy/Christianity/85",
100
+ "smmlu/easy/Christianity/78",
101
+ "smmlu/easy/Christianity/102",
102
+ "smmlu/easy/Christianity/49",
103
+ "smmlu/easy/Christianity/82",
104
+ "smmlu/easy/Christianity/24",
105
+ "smmlu/easy/Christianity/50",
106
+ "smmlu/easy/Christianity/128",
107
+ "smmlu/easy/Christianity/4",
108
+ "smmlu/easy/Civics/1",
109
+ "smmlu/easy/Civics/97",
110
+ "smmlu/easy/Civics/43",
111
+ "smmlu/easy/Civics/111",
112
+ "smmlu/easy/Civics/86",
113
+ "smmlu/easy/Civics/108",
114
+ "smmlu/easy/Civics/41",
115
+ "smmlu/easy/Civics/40",
116
+ "smmlu/easy/Civics/89",
117
+ "smmlu/easy/Civics/13",
118
+ "smmlu/easy/Civics/8",
119
+ "smmlu/easy/Civics/42",
120
+ "smmlu/easy/Civics/25",
121
+ "smmlu/easy/Civics/106",
122
+ "smmlu/easy/Civics/122",
123
+ "smmlu/easy/Civics/14",
124
+ "smmlu/easy/Civics/117",
125
+ "smmlu/easy/Civics/94",
126
+ "smmlu/easy/Civics/19",
127
+ "smmlu/easy/Civics/39",
128
+ "smmlu/easy/Civics/116",
129
+ "smmlu/easy/Civics/84",
130
+ "smmlu/easy/Civics/10",
131
+ "smmlu/easy/Civics/92",
132
+ "smmlu/easy/Civics/56",
133
+ "smmlu/easy/Eastern music/35",
134
+ "smmlu/easy/Eastern music/65",
135
+ "smmlu/easy/Eastern music/80",
136
+ "smmlu/easy/Eastern music/73",
137
+ "smmlu/easy/Eastern music/83",
138
+ "smmlu/easy/Eastern music/4",
139
+ "smmlu/easy/Eastern music/100",
140
+ "smmlu/easy/Eastern music/111",
141
+ "smmlu/easy/Eastern music/97",
142
+ "smmlu/easy/Eastern music/109",
143
+ "smmlu/easy/Eastern music/62",
144
+ "smmlu/easy/Eastern music/7",
145
+ "smmlu/easy/Eastern music/132",
146
+ "smmlu/easy/Eastern music/98",
147
+ "smmlu/easy/Eastern music/14",
148
+ "smmlu/easy/Eastern music/91",
149
+ "smmlu/easy/Eastern music/119",
150
+ "smmlu/easy/Eastern music/12",
151
+ "smmlu/easy/Eastern music/104",
152
+ "smmlu/easy/Eastern music/59",
153
+ "smmlu/easy/Eastern music/51",
154
+ "smmlu/easy/Eastern music/89",
155
+ "smmlu/easy/Eastern music/60",
156
+ "smmlu/easy/Eastern music/128",
157
+ "smmlu/easy/Eastern music/8",
158
+ "smmlu/easy/Eastern music/67",
159
+ "smmlu/easy/Eastern music/92",
160
+ "smmlu/easy/Eastern music/90",
161
+ "smmlu/easy/Geography/105",
162
+ "smmlu/easy/Geography/14",
163
+ "smmlu/easy/Geography/118",
164
+ "smmlu/easy/Geography/1",
165
+ "smmlu/easy/Geography/88",
166
+ "smmlu/easy/Geography/89",
167
+ "smmlu/easy/Geography/27",
168
+ "smmlu/easy/Geography/26",
169
+ "smmlu/easy/Geography/15",
170
+ "smmlu/easy/Geography/36",
171
+ "smmlu/easy/Geography/81",
172
+ "smmlu/easy/Geography/3",
173
+ "smmlu/easy/Geography/25",
174
+ "smmlu/easy/Geography/85",
175
+ "smmlu/easy/Geography/53",
176
+ "smmlu/easy/Geography/32",
177
+ "smmlu/easy/Geography/4",
178
+ "smmlu/easy/Geography/6",
179
+ "smmlu/easy/Geography/111",
180
+ "smmlu/easy/Geography/34",
181
+ "smmlu/easy/Geography/106",
182
+ "smmlu/easy/Geography/65",
183
+ "smmlu/easy/Geography/107",
184
+ "smmlu/easy/Geography/75",
185
+ "smmlu/easy/Health and Physical Science/97",
186
+ "smmlu/easy/Health and Physical Science/1",
187
+ "smmlu/easy/Health and Physical Science/65",
188
+ "smmlu/easy/Health and Physical Science/27",
189
+ "smmlu/easy/Health and Physical Science/25",
190
+ "smmlu/easy/Health and Physical Science/40",
191
+ "smmlu/easy/Health and Physical Science/50",
192
+ "smmlu/easy/Health and Physical Science/112",
193
+ "smmlu/easy/Health and Physical Science/38",
194
+ "smmlu/easy/Health and Physical Science/92",
195
+ "smmlu/easy/Health and Physical Science/108",
196
+ "smmlu/easy/Health and Physical Science/20",
197
+ "smmlu/easy/Health and Physical Science/8",
198
+ "smmlu/easy/Health and Physical Science/11",
199
+ "smmlu/easy/Health and Physical Science/72",
200
+ "smmlu/easy/Health and Physical Science/86",
201
+ "smmlu/easy/Health and Physical Science/94",
202
+ "smmlu/easy/Health and Physical Science/121",
203
+ "smmlu/easy/Health and Physical Science/55",
204
+ "smmlu/easy/Health and Physical Science/83",
205
+ "smmlu/easy/Health and Physical Science/54",
206
+ "smmlu/easy/Health and Physical Science/127",
207
+ "smmlu/easy/Health and Physical Science/82",
208
+ "smmlu/easy/Health and Physical Science/115",
209
+ "smmlu/easy/Health and Physical Science/26",
210
+ "smmlu/easy/Health and Physical Science/7",
211
+ "smmlu/easy/History/60",
212
+ "smmlu/easy/History/123",
213
+ "smmlu/easy/History/59",
214
+ "smmlu/easy/History/76",
215
+ "smmlu/easy/History/34",
216
+ "smmlu/easy/History/43",
217
+ "smmlu/easy/History/25",
218
+ "smmlu/easy/History/17",
219
+ "smmlu/easy/History/80",
220
+ "smmlu/easy/History/51",
221
+ "smmlu/easy/History/131",
222
+ "smmlu/easy/History/44",
223
+ "smmlu/easy/History/7",
224
+ "smmlu/easy/History/8",
225
+ "smmlu/easy/History/92",
226
+ "smmlu/easy/History/61",
227
+ "smmlu/easy/History/103",
228
+ "smmlu/easy/History/118",
229
+ "smmlu/easy/History/50",
230
+ "smmlu/easy/History/79",
231
+ "smmlu/easy/History/104",
232
+ "smmlu/easy/History/94",
233
+ "smmlu/easy/History/148",
234
+ "smmlu/easy/History/86",
235
+ "smmlu/easy/History/100",
236
+ "smmlu/easy/History/91",
237
+ "smmlu/easy/History/125",
238
+ "smmlu/easy/History/73",
239
+ "smmlu/easy/History/87",
240
+ "smmlu/easy/History/134",
241
+ "smmlu/easy/Islam/78",
242
+ "smmlu/easy/Islam/68",
243
+ "smmlu/easy/Islam/67",
244
+ "smmlu/easy/Islam/61",
245
+ "smmlu/easy/Islam/107",
246
+ "smmlu/easy/Islam/60",
247
+ "smmlu/easy/Islam/84",
248
+ "smmlu/easy/Islam/105",
249
+ "smmlu/easy/Islam/98",
250
+ "smmlu/easy/Islam/43",
251
+ "smmlu/easy/Islam/52",
252
+ "smmlu/easy/Islam/99",
253
+ "smmlu/easy/Islam/93",
254
+ "smmlu/easy/Islam/24",
255
+ "smmlu/easy/Islam/108",
256
+ "smmlu/easy/Islam/18",
257
+ "smmlu/easy/Islam/48",
258
+ "smmlu/easy/Islam/31",
259
+ "smmlu/easy/Islam/95",
260
+ "smmlu/easy/Islam/50",
261
+ "smmlu/easy/Islam/69",
262
+ "smmlu/easy/Sinhala language and literature/94",
263
+ "smmlu/easy/Sinhala language and literature/62",
264
+ "smmlu/easy/Sinhala language and literature/32",
265
+ "smmlu/easy/Sinhala language and literature/138",
266
+ "smmlu/easy/Sinhala language and literature/154",
267
+ "smmlu/easy/Sinhala language and literature/23",
268
+ "smmlu/easy/Sinhala language and literature/14",
269
+ "smmlu/easy/Sinhala language and literature/98",
270
+ "smmlu/easy/Sinhala language and literature/15",
271
+ "smmlu/easy/Sinhala language and literature/149",
272
+ "smmlu/easy/Sinhala language and literature/7",
273
+ "smmlu/easy/Sinhala language and literature/53",
274
+ "smmlu/easy/Sinhala language and literature/75",
275
+ "smmlu/easy/Sinhala language and literature/93",
276
+ "smmlu/easy/Sinhala language and literature/115",
277
+ "smmlu/easy/Sinhala language and literature/43",
278
+ "smmlu/easy/Sinhala language and literature/69",
279
+ "smmlu/easy/Sinhala language and literature/96",
280
+ "smmlu/easy/Sinhala language and literature/137",
281
+ "smmlu/easy/Sinhala language and literature/60",
282
+ "smmlu/easy/Sinhala language and literature/9",
283
+ "smmlu/easy/Sinhala language and literature/70",
284
+ "smmlu/easy/Sinhala language and literature/82",
285
+ "smmlu/easy/Sinhala language and literature/28",
286
+ "smmlu/easy/Sinhala language and literature/122",
287
+ "smmlu/easy/Sinhala language and literature/107",
288
+ "smmlu/easy/Sinhala language and literature/59",
289
+ "smmlu/easy/Sinhala language and literature/95",
290
+ "smmlu/easy/Sinhala language and literature/81",
291
+ "smmlu/easy/Sinhala language and literature/99",
292
+ "smmlu/easy/Sinhala language and literature/22",
293
+ "smmlu/easy/dancing/93",
294
+ "smmlu/easy/dancing/47",
295
+ "smmlu/easy/dancing/39",
296
+ "smmlu/easy/dancing/34",
297
+ "smmlu/easy/dancing/11",
298
+ "smmlu/easy/dancing/94",
299
+ "smmlu/easy/dancing/75",
300
+ "smmlu/easy/dancing/81",
301
+ "smmlu/easy/dancing/102",
302
+ "smmlu/easy/dancing/19",
303
+ "smmlu/easy/dancing/4",
304
+ "smmlu/easy/dancing/1",
305
+ "smmlu/easy/dancing/10",
306
+ "smmlu/easy/dancing/9",
307
+ "smmlu/easy/dancing/72",
308
+ "smmlu/easy/dancing/50",
309
+ "smmlu/easy/dancing/17",
310
+ "smmlu/easy/dancing/40",
311
+ "smmlu/easy/dancing/22",
312
+ "smmlu/easy/dancing/57",
313
+ "smmlu/easy/dancing/103",
314
+ "smmlu/easy/dancing/37",
315
+ "smmlu/easy/drama and Theatre /90",
316
+ "smmlu/easy/drama and Theatre /66",
317
+ "smmlu/easy/drama and Theatre /33",
318
+ "smmlu/easy/drama and Theatre /39",
319
+ "smmlu/easy/drama and Theatre /102",
320
+ "smmlu/easy/drama and Theatre /2",
321
+ "smmlu/easy/drama and Theatre /89",
322
+ "smmlu/easy/drama and Theatre /34",
323
+ "smmlu/easy/drama and Theatre /10",
324
+ "smmlu/easy/drama and Theatre /5",
325
+ "smmlu/easy/drama and Theatre /29",
326
+ "smmlu/easy/drama and Theatre /24",
327
+ "smmlu/easy/drama and Theatre /12",
328
+ "smmlu/easy/drama and Theatre /111",
329
+ "smmlu/easy/drama and Theatre /125",
330
+ "smmlu/easy/drama and Theatre /104",
331
+ "smmlu/easy/drama and Theatre /49",
332
+ "smmlu/easy/drama and Theatre /25",
333
+ "smmlu/easy/drama and Theatre /17",
334
+ "smmlu/easy/drama and Theatre /78",
335
+ "smmlu/easy/drama and Theatre /13",
336
+ "smmlu/easy/drama and Theatre /19",
337
+ "smmlu/easy/drama and Theatre /79",
338
+ "smmlu/easy/drama and Theatre /45",
339
+ "smmlu/easy/drama and Theatre /63",
340
+ "smmlu/easy/drama and Theatre /88",
341
+ "smmlu/easy/science/157",
342
+ "smmlu/easy/science/140",
343
+ "smmlu/easy/science/133",
344
+ "smmlu/easy/science/9",
345
+ "smmlu/easy/science/50",
346
+ "smmlu/easy/science/37",
347
+ "smmlu/easy/science/34",
348
+ "smmlu/easy/science/76",
349
+ "smmlu/easy/science/156",
350
+ "smmlu/easy/science/14",
351
+ "smmlu/easy/science/38",
352
+ "smmlu/easy/science/158",
353
+ "smmlu/easy/science/64",
354
+ "smmlu/easy/science/47",
355
+ "smmlu/easy/science/114",
356
+ "smmlu/easy/science/164",
357
+ "smmlu/easy/science/86",
358
+ "smmlu/easy/science/54",
359
+ "smmlu/easy/science/137",
360
+ "smmlu/easy/science/101",
361
+ "smmlu/easy/science/56",
362
+ "smmlu/easy/science/53",
363
+ "smmlu/easy/science/84",
364
+ "smmlu/easy/science/74",
365
+ "smmlu/easy/science/129",
366
+ "smmlu/easy/science/45",
367
+ "smmlu/easy/science/15",
368
+ "smmlu/easy/science/3",
369
+ "smmlu/easy/science/11",
370
+ "smmlu/easy/science/162",
371
+ "smmlu/easy/science/44",
372
+ "smmlu/easy/science/124"
373
+ ],
374
+ [
375
+ "smmlu/easy/Arts/81",
376
+ "smmlu/easy/Arts/33",
377
+ "smmlu/easy/Arts/15",
378
+ "smmlu/easy/Arts/61",
379
+ "smmlu/easy/Arts/41",
380
+ "smmlu/easy/Arts/23",
381
+ "smmlu/easy/Arts/51",
382
+ "smmlu/easy/Arts/72",
383
+ "smmlu/easy/Arts/60",
384
+ "smmlu/easy/Arts/38",
385
+ "smmlu/easy/Arts/9",
386
+ "smmlu/easy/Arts/58",
387
+ "smmlu/easy/Arts/40",
388
+ "smmlu/easy/Arts/78",
389
+ "smmlu/easy/Arts/65",
390
+ "smmlu/easy/Arts/95",
391
+ "smmlu/easy/Arts/80",
392
+ "smmlu/easy/Arts/100",
393
+ "smmlu/easy/Arts/89",
394
+ "smmlu/easy/Arts/1",
395
+ "smmlu/easy/Buddhism/102",
396
+ "smmlu/easy/Buddhism/18",
397
+ "smmlu/easy/Buddhism/30",
398
+ "smmlu/easy/Buddhism/70",
399
+ "smmlu/easy/Buddhism/9",
400
+ "smmlu/easy/Buddhism/52",
401
+ "smmlu/easy/Buddhism/31",
402
+ "smmlu/easy/Buddhism/40",
403
+ "smmlu/easy/Buddhism/110",
404
+ "smmlu/easy/Buddhism/129",
405
+ "smmlu/easy/Buddhism/3",
406
+ "smmlu/easy/Buddhism/41",
407
+ "smmlu/easy/Buddhism/74",
408
+ "smmlu/easy/Buddhism/39",
409
+ "smmlu/easy/Buddhism/80",
410
+ "smmlu/easy/Buddhism/26",
411
+ "smmlu/easy/Buddhism/118",
412
+ "smmlu/easy/Buddhism/137",
413
+ "smmlu/easy/Buddhism/79",
414
+ "smmlu/easy/Buddhism/59",
415
+ "smmlu/easy/Buddhism/86",
416
+ "smmlu/easy/Buddhism/66",
417
+ "smmlu/easy/Buddhism/121",
418
+ "smmlu/easy/Buddhism/128",
419
+ "smmlu/easy/Buddhism/78",
420
+ "smmlu/easy/Buddhism/73",
421
+ "smmlu/easy/Buddhism/11",
422
+ "smmlu/easy/Buddhism/56",
423
+ "smmlu/easy/Buddhism/123",
424
+ "smmlu/easy/Buddhism/65",
425
+ "smmlu/easy/Buddhism/49",
426
+ "smmlu/easy/Buddhism/96",
427
+ "smmlu/easy/Buddhism/61",
428
+ "smmlu/easy/Catholicism/75",
429
+ "smmlu/easy/Catholicism/62",
430
+ "smmlu/easy/Catholicism/87",
431
+ "smmlu/easy/Catholicism/1",
432
+ "smmlu/easy/Catholicism/119",
433
+ "smmlu/easy/Catholicism/98",
434
+ "smmlu/easy/Catholicism/58",
435
+ "smmlu/easy/Catholicism/46",
436
+ "smmlu/easy/Catholicism/83",
437
+ "smmlu/easy/Catholicism/26",
438
+ "smmlu/easy/Catholicism/67",
439
+ "smmlu/easy/Catholicism/34",
440
+ "smmlu/easy/Catholicism/37",
441
+ "smmlu/easy/Catholicism/100",
442
+ "smmlu/easy/Catholicism/69",
443
+ "smmlu/easy/Catholicism/77",
444
+ "smmlu/easy/Catholicism/116",
445
+ "smmlu/easy/Catholicism/102",
446
+ "smmlu/easy/Catholicism/128",
447
+ "smmlu/easy/Catholicism/48",
448
+ "smmlu/easy/Catholicism/32",
449
+ "smmlu/easy/Catholicism/122",
450
+ "smmlu/easy/Catholicism/99",
451
+ "smmlu/easy/Catholicism/90",
452
+ "smmlu/easy/Catholicism/96",
453
+ "smmlu/easy/Catholicism/60",
454
+ "smmlu/easy/Christianity/26",
455
+ "smmlu/easy/Christianity/39",
456
+ "smmlu/easy/Christianity/62",
457
+ "smmlu/easy/Christianity/76",
458
+ "smmlu/easy/Christianity/33",
459
+ "smmlu/easy/Christianity/114",
460
+ "smmlu/easy/Christianity/117",
461
+ "smmlu/easy/Christianity/61",
462
+ "smmlu/easy/Christianity/55",
463
+ "smmlu/easy/Christianity/31",
464
+ "smmlu/easy/Christianity/51",
465
+ "smmlu/easy/Christianity/3",
466
+ "smmlu/easy/Christianity/47",
467
+ "smmlu/easy/Christianity/63",
468
+ "smmlu/easy/Christianity/22",
469
+ "smmlu/easy/Christianity/126",
470
+ "smmlu/easy/Christianity/34",
471
+ "smmlu/easy/Christianity/15",
472
+ "smmlu/easy/Christianity/5",
473
+ "smmlu/easy/Christianity/84",
474
+ "smmlu/easy/Christianity/18",
475
+ "smmlu/easy/Christianity/71",
476
+ "smmlu/easy/Christianity/66",
477
+ "smmlu/easy/Christianity/92",
478
+ "smmlu/easy/Christianity/87",
479
+ "smmlu/easy/Christianity/14",
480
+ "smmlu/easy/Civics/88",
481
+ "smmlu/easy/Civics/2",
482
+ "smmlu/easy/Civics/11",
483
+ "smmlu/easy/Civics/100",
484
+ "smmlu/easy/Civics/110",
485
+ "smmlu/easy/Civics/121",
486
+ "smmlu/easy/Civics/47",
487
+ "smmlu/easy/Civics/22",
488
+ "smmlu/easy/Civics/49",
489
+ "smmlu/easy/Civics/90",
490
+ "smmlu/easy/Civics/28",
491
+ "smmlu/easy/Civics/65",
492
+ "smmlu/easy/Civics/6",
493
+ "smmlu/easy/Civics/34",
494
+ "smmlu/easy/Civics/55",
495
+ "smmlu/easy/Civics/102",
496
+ "smmlu/easy/Civics/85",
497
+ "smmlu/easy/Civics/93",
498
+ "smmlu/easy/Civics/48",
499
+ "smmlu/easy/Civics/58",
500
+ "smmlu/easy/Civics/16",
501
+ "smmlu/easy/Civics/20",
502
+ "smmlu/easy/Civics/33",
503
+ "smmlu/easy/Civics/54",
504
+ "smmlu/easy/Civics/23",
505
+ "smmlu/easy/Eastern music/139",
506
+ "smmlu/easy/Eastern music/47",
507
+ "smmlu/easy/Eastern music/105",
508
+ "smmlu/easy/Eastern music/15",
509
+ "smmlu/easy/Eastern music/70",
510
+ "smmlu/easy/Eastern music/136",
511
+ "smmlu/easy/Eastern music/61",
512
+ "smmlu/easy/Eastern music/134",
513
+ "smmlu/easy/Eastern music/13",
514
+ "smmlu/easy/Eastern music/40",
515
+ "smmlu/easy/Eastern music/116",
516
+ "smmlu/easy/Eastern_music/1",
517
+ "smmlu/easy/Eastern music/82",
518
+ "smmlu/easy/Eastern music/79",
519
+ "smmlu/easy/Eastern music/102",
520
+ "smmlu/easy/Eastern music/94",
521
+ "smmlu/easy/Eastern music/142",
522
+ "smmlu/easy/Eastern music/18",
523
+ "smmlu/easy/Eastern music/123",
524
+ "smmlu/easy/Eastern music/74",
525
+ "smmlu/easy/Eastern music/133",
526
+ "smmlu/easy/Eastern music/135",
527
+ "smmlu/easy/Eastern music/37",
528
+ "smmlu/easy/Eastern music/30",
529
+ "smmlu/easy/Eastern music/138",
530
+ "smmlu/easy/Eastern music/101",
531
+ "smmlu/easy/Eastern music/103",
532
+ "smmlu/easy/Eastern music/10",
533
+ "smmlu/easy/Geography/91",
534
+ "smmlu/easy/Geography/17",
535
+ "smmlu/easy/Geography/37",
536
+ "smmlu/easy/Geography/58",
537
+ "smmlu/easy/Geography/113",
538
+ "smmlu/easy/Geography/20",
539
+ "smmlu/easy/Geography/54",
540
+ "smmlu/easy/Geography/98",
541
+ "smmlu/easy/Geography/33",
542
+ "smmlu/easy/Geography/76",
543
+ "smmlu/easy/Geography/38",
544
+ "smmlu/easy/Geography/62",
545
+ "smmlu/easy/Geography/117",
546
+ "smmlu/easy/Geography/100",
547
+ "smmlu/easy/Geography/11",
548
+ "smmlu/easy/Geography/99",
549
+ "smmlu/easy/Geography/60",
550
+ "smmlu/easy/Geography/13",
551
+ "smmlu/easy/Geography/18",
552
+ "smmlu/easy/Geography/10",
553
+ "smmlu/easy/Geography/94",
554
+ "smmlu/easy/Geography/78",
555
+ "smmlu/easy/Geography/93",
556
+ "smmlu/easy/Health and Physical Science/110",
557
+ "smmlu/easy/Health and Physical Science/60",
558
+ "smmlu/easy/Health and Physical Science/99",
559
+ "smmlu/easy/Health and Physical Science/73",
560
+ "smmlu/easy/Health and Physical Science/31",
561
+ "smmlu/easy/Health and Physical Science/39",
562
+ "smmlu/easy/Health and Physical Science/80",
563
+ "smmlu/easy/Health and Physical Science/37",
564
+ "smmlu/easy/Health and Physical Science/106",
565
+ "smmlu/easy/Health and Physical Science/76",
566
+ "smmlu/easy/Health and Physical Science/44",
567
+ "smmlu/easy/Health and Physical Science/16",
568
+ "smmlu/easy/Health and Physical Science/122",
569
+ "smmlu/easy/Health and Physical Science/30",
570
+ "smmlu/easy/Health and Physical Science/74",
571
+ "smmlu/easy/Health and Physical Science/41",
572
+ "smmlu/easy/Health and Physical Science/46",
573
+ "smmlu/easy/Health and Physical Science/36",
574
+ "smmlu/easy/Health and Physical Science/102",
575
+ "smmlu/easy/Health and Physical Science/21",
576
+ "smmlu/easy/Health and Physical Science/105",
577
+ "smmlu/easy/Health and Physical Science/51",
578
+ "smmlu/easy/Health and Physical Science/93",
579
+ "smmlu/easy/Health and Physical Science/58",
580
+ "smmlu/easy/Health and Physical Science/129",
581
+ "smmlu/easy/Health and Physical Science/48",
582
+ "smmlu/easy/History/124",
583
+ "smmlu/easy/History/119",
584
+ "smmlu/easy/History/11",
585
+ "smmlu/easy/History/29",
586
+ "smmlu/easy/History/6",
587
+ "smmlu/easy/History/19",
588
+ "smmlu/easy/History/107",
589
+ "smmlu/easy/History/83",
590
+ "smmlu/easy/History/67",
591
+ "smmlu/easy/History/14",
592
+ "smmlu/easy/History/95",
593
+ "smmlu/easy/History/81",
594
+ "smmlu/easy/History/10",
595
+ "smmlu/easy/History/39",
596
+ "smmlu/easy/History/136",
597
+ "smmlu/easy/History/74",
598
+ "smmlu/easy/History/68",
599
+ "smmlu/easy/History/75",
600
+ "smmlu/easy/History/65",
601
+ "smmlu/easy/History/4",
602
+ "smmlu/easy/History/35",
603
+ "smmlu/easy/History/70",
604
+ "smmlu/easy/History/36",
605
+ "smmlu/easy/History/47",
606
+ "smmlu/easy/History/114",
607
+ "smmlu/easy/History/27",
608
+ "smmlu/easy/History/127",
609
+ "smmlu/easy/History/90",
610
+ "smmlu/easy/History/18",
611
+ "smmlu/easy/History/140",
612
+ "smmlu/easy/History/142",
613
+ "smmlu/easy/Islam/33",
614
+ "smmlu/easy/Islam/15",
615
+ "smmlu/easy/Islam/36",
616
+ "smmlu/easy/Islam/91",
617
+ "smmlu/easy/Islam/7",
618
+ "smmlu/easy/Islam/103",
619
+ "smmlu/easy/Islam/44",
620
+ "smmlu/easy/Islam/3",
621
+ "smmlu/easy/Islam/34",
622
+ "smmlu/easy/Islam/30",
623
+ "smmlu/easy/Islam/66",
624
+ "smmlu/easy/Islam/8",
625
+ "smmlu/easy/Islam/4",
626
+ "smmlu/easy/Islam/85",
627
+ "smmlu/easy/Islam/63",
628
+ "smmlu/easy/Islam/23",
629
+ "smmlu/easy/Islam/92",
630
+ "smmlu/easy/Islam/12",
631
+ "smmlu/easy/Islam/29",
632
+ "smmlu/easy/Islam/49",
633
+ "smmlu/easy/Islam/10",
634
+ "smmlu/easy/Sinhala language and literature/10",
635
+ "smmlu/easy/Sinhala language and literature/45",
636
+ "smmlu/easy/Sinhala language and literature/5",
637
+ "smmlu/easy/Sinhala_language_and_literature/1",
638
+ "smmlu/easy/Sinhala language and literature/67",
639
+ "smmlu/easy/Sinhala language and literature/47",
640
+ "smmlu/easy/Sinhala language and literature/92",
641
+ "smmlu/easy/Sinhala language and literature/63",
642
+ "smmlu/easy/Sinhala language and literature/142",
643
+ "smmlu/easy/Sinhala language and literature/73",
644
+ "smmlu/easy/Sinhala language and literature/143",
645
+ "smmlu/easy/Sinhala language and literature/8",
646
+ "smmlu/easy/Sinhala language and literature/57",
647
+ "smmlu/easy/Sinhala language and literature/80",
648
+ "smmlu/easy/Sinhala language and literature/25",
649
+ "smmlu/easy/Sinhala language and literature/134",
650
+ "smmlu/easy/Sinhala language and literature/85",
651
+ "smmlu/easy/Sinhala language and literature/42",
652
+ "smmlu/easy/Sinhala language and literature/50",
653
+ "smmlu/easy/Sinhala language and literature/117",
654
+ "smmlu/easy/Sinhala language and literature/2",
655
+ "smmlu/easy/Sinhala language and literature/133",
656
+ "smmlu/easy/Sinhala language and literature/17",
657
+ "smmlu/easy/Sinhala language and literature/153",
658
+ "smmlu/easy/Sinhala language and literature/55",
659
+ "smmlu/easy/Sinhala language and literature/49",
660
+ "smmlu/easy/Sinhala language and literature/20",
661
+ "smmlu/easy/Sinhala language and literature/105",
662
+ "smmlu/easy/Sinhala language and literature/109",
663
+ "smmlu/easy/Sinhala language and literature/40",
664
+ "smmlu/easy/Sinhala language and literature/121",
665
+ "smmlu/easy/dancing/33",
666
+ "smmlu/easy/dancing/35",
667
+ "smmlu/easy/dancing/48",
668
+ "smmlu/easy/dancing/27",
669
+ "smmlu/easy/dancing/58",
670
+ "smmlu/easy/dancing/79",
671
+ "smmlu/easy/dancing/87",
672
+ "smmlu/easy/dancing/23",
673
+ "smmlu/easy/dancing/83",
674
+ "smmlu/easy/dancing/92",
675
+ "smmlu/easy/dancing/80",
676
+ "smmlu/easy/dancing/108",
677
+ "smmlu/easy/dancing/78",
678
+ "smmlu/easy/dancing/64",
679
+ "smmlu/easy/dancing/20",
680
+ "smmlu/easy/dancing/90",
681
+ "smmlu/easy/dancing/36",
682
+ "smmlu/easy/dancing/14",
683
+ "smmlu/easy/dancing/30",
684
+ "smmlu/easy/dancing/99",
685
+ "smmlu/easy/dancing/104",
686
+ "smmlu/easy/dancing/38",
687
+ "smmlu/easy/drama and Theatre /71",
688
+ "smmlu/easy/drama_and_theatre/1",
689
+ "smmlu/easy/drama and Theatre /4",
690
+ "smmlu/easy/drama and Theatre /109",
691
+ "smmlu/easy/drama and Theatre /69",
692
+ "smmlu/easy/drama and Theatre /108",
693
+ "smmlu/easy/drama and Theatre /21",
694
+ "smmlu/easy/drama and Theatre /8",
695
+ "smmlu/easy/drama and Theatre /123",
696
+ "smmlu/easy/drama and Theatre /122",
697
+ "smmlu/easy/drama and Theatre /74",
698
+ "smmlu/easy/drama and Theatre /48",
699
+ "smmlu/easy/drama and Theatre /83",
700
+ "smmlu/easy/drama and Theatre /65",
701
+ "smmlu/easy/drama and Theatre /38",
702
+ "smmlu/easy/drama and Theatre /23",
703
+ "smmlu/easy/drama and Theatre /87",
704
+ "smmlu/easy/drama and Theatre /56",
705
+ "smmlu/easy/drama and Theatre /55",
706
+ "smmlu/easy/drama and Theatre /93",
707
+ "smmlu/easy/drama and Theatre /110",
708
+ "smmlu/easy/drama and Theatre /112",
709
+ "smmlu/easy/drama and Theatre /53",
710
+ "smmlu/easy/drama and Theatre /77",
711
+ "smmlu/easy/drama and Theatre /72",
712
+ "smmlu/easy/science/75",
713
+ "smmlu/easy/science/23",
714
+ "smmlu/easy/science/57",
715
+ "smmlu/easy/science/59",
716
+ "smmlu/easy/science/135",
717
+ "smmlu/easy/science/51",
718
+ "smmlu/easy/science/106",
719
+ "smmlu/easy/science/87",
720
+ "smmlu/easy/science/143",
721
+ "smmlu/easy/science/70",
722
+ "smmlu/easy/science/60",
723
+ "smmlu/easy/science/71",
724
+ "smmlu/easy/science/5",
725
+ "smmlu/easy/science/146",
726
+ "smmlu/easy/science/96",
727
+ "smmlu/easy/science/91",
728
+ "smmlu/easy/science/104",
729
+ "smmlu/easy/science/22",
730
+ "smmlu/easy/science/82",
731
+ "smmlu/easy/science/121",
732
+ "smmlu/easy/science/136",
733
+ "smmlu/easy/science/26",
734
+ "smmlu/easy/science/115",
735
+ "smmlu/easy/science/98",
736
+ "smmlu/easy/science/46",
737
+ "smmlu/easy/science/155",
738
+ "smmlu/easy/science/131",
739
+ "smmlu/easy/science/32",
740
+ "smmlu/easy/science/109",
741
+ "smmlu/easy/science/139",
742
+ "smmlu/easy/science/116",
743
+ "smmlu/easy/science/17",
744
+ "smmlu/easy/science/73"
745
+ ],
746
+ [
747
+ "smmlu/easy/Arts/25",
748
+ "smmlu/easy/Arts/98",
749
+ "smmlu/easy/Arts/85",
750
+ "smmlu/easy/Arts/74",
751
+ "smmlu/easy/Arts/94",
752
+ "smmlu/easy/Arts/43",
753
+ "smmlu/easy/Arts/52",
754
+ "smmlu/easy/Arts/91",
755
+ "smmlu/easy/Arts/17",
756
+ "smmlu/easy/Arts/75",
757
+ "smmlu/easy/Arts/70",
758
+ "smmlu/easy/Arts/88",
759
+ "smmlu/easy/Arts/56",
760
+ "smmlu/easy/Arts/71",
761
+ "smmlu/easy/Arts/67",
762
+ "smmlu/easy/Arts/26",
763
+ "smmlu/easy/Arts/83",
764
+ "smmlu/easy/Arts/36",
765
+ "smmlu/easy/Arts/86",
766
+ "smmlu/easy/Arts/21",
767
+ "smmlu/easy/Buddhism/10",
768
+ "smmlu/easy/Buddhism/63",
769
+ "smmlu/easy/Buddhism/23",
770
+ "smmlu/easy/Buddhism/42",
771
+ "smmlu/easy/Buddhism/155",
772
+ "smmlu/easy/Buddhism/112",
773
+ "smmlu/easy/Buddhism/108",
774
+ "smmlu/easy/Buddhism/101",
775
+ "smmlu/easy/Buddhism/98",
776
+ "smmlu/easy/Buddhism/145",
777
+ "smmlu/easy/Buddhism/29",
778
+ "smmlu/easy/Buddhism/76",
779
+ "smmlu/easy/Buddhism/17",
780
+ "smmlu/easy/Buddhism/22",
781
+ "smmlu/easy/Buddhism/25",
782
+ "smmlu/easy/Buddhism/136",
783
+ "smmlu/easy/Buddhism/24",
784
+ "smmlu/easy/Buddhism/153",
785
+ "smmlu/easy/Buddhism/14",
786
+ "smmlu/easy/Buddhism/68",
787
+ "smmlu/easy/Buddhism/140",
788
+ "smmlu/easy/Buddhism/34",
789
+ "smmlu/easy/Buddhism/95",
790
+ "smmlu/easy/Buddhism/2",
791
+ "smmlu/easy/Buddhism/8",
792
+ "smmlu/easy/Buddhism/119",
793
+ "smmlu/easy/Buddhism/148",
794
+ "smmlu/easy/Buddhism/27",
795
+ "smmlu/easy/Buddhism/32",
796
+ "smmlu/easy/Buddhism/122",
797
+ "smmlu/easy/Buddhism/141",
798
+ "smmlu/easy/Buddhism/72",
799
+ "smmlu/easy/Catholicism/123",
800
+ "smmlu/easy/Catholicism/61",
801
+ "smmlu/easy/Catholicism/27",
802
+ "smmlu/easy/Catholicism/110",
803
+ "smmlu/easy/Catholicism/10",
804
+ "smmlu/easy/Catholicism/113",
805
+ "smmlu/easy/Catholicism/105",
806
+ "smmlu/easy/Catholicism/89",
807
+ "smmlu/easy/Catholicism/14",
808
+ "smmlu/easy/Catholicism/50",
809
+ "smmlu/easy/Catholicism/23",
810
+ "smmlu/easy/Catholicism/28",
811
+ "smmlu/easy/Catholicism/8",
812
+ "smmlu/easy/Catholicism/35",
813
+ "smmlu/easy/Catholicism/72",
814
+ "smmlu/easy/Catholicism/36",
815
+ "smmlu/easy/Catholicism/3",
816
+ "smmlu/easy/Catholicism/80",
817
+ "smmlu/easy/Catholicism/25",
818
+ "smmlu/easy/Catholicism/127",
819
+ "smmlu/easy/Catholicism/40",
820
+ "smmlu/easy/Catholicism/17",
821
+ "smmlu/easy/Catholicism/5",
822
+ "smmlu/easy/Catholicism/66",
823
+ "smmlu/easy/Catholicism/132",
824
+ "smmlu/easy/Catholicism/94",
825
+ "smmlu/easy/Catholicism/56",
826
+ "smmlu/easy/Christianity/28",
827
+ "smmlu/easy/Christianity/75",
828
+ "smmlu/easy/Christianity/54",
829
+ "smmlu/easy/Christianity/2",
830
+ "smmlu/easy/Christianity/7",
831
+ "smmlu/easy/Christianity/101",
832
+ "smmlu/easy/Christianity/77",
833
+ "smmlu/easy/Christianity/83",
834
+ "smmlu/easy/Christianity/69",
835
+ "smmlu/easy/Christianity/130",
836
+ "smmlu/easy/Christianity/80",
837
+ "smmlu/easy/Christianity/121",
838
+ "smmlu/easy/Christianity/110",
839
+ "smmlu/easy/Christianity/37",
840
+ "smmlu/easy/Christianity/90",
841
+ "smmlu/easy/Christianity/8",
842
+ "smmlu/easy/Christianity/119",
843
+ "smmlu/easy/Christianity/19",
844
+ "smmlu/easy/Christianity/48",
845
+ "smmlu/easy/Christianity/44",
846
+ "smmlu/easy/Christianity/10",
847
+ "smmlu/easy/Christianity/29",
848
+ "smmlu/easy/Christianity/88",
849
+ "smmlu/easy/Christianity/104",
850
+ "smmlu/easy/Christianity/6",
851
+ "smmlu/easy/Christianity/27",
852
+ "smmlu/easy/Civics/113",
853
+ "smmlu/easy/Civics/51",
854
+ "smmlu/easy/Civics/15",
855
+ "smmlu/easy/Civics/103",
856
+ "smmlu/easy/Civics/64",
857
+ "smmlu/easy/Civics/114",
858
+ "smmlu/easy/Civics/30",
859
+ "smmlu/easy/Civics/73",
860
+ "smmlu/easy/Civics/76",
861
+ "smmlu/easy/Civics/68",
862
+ "smmlu/easy/Civics/112",
863
+ "smmlu/easy/Civics/53",
864
+ "smmlu/easy/Civics/63",
865
+ "smmlu/easy/Civics/101",
866
+ "smmlu/easy/Civics/29",
867
+ "smmlu/easy/Civics/60",
868
+ "smmlu/easy/Civics/80",
869
+ "smmlu/easy/Civics/18",
870
+ "smmlu/easy/Civics/27",
871
+ "smmlu/easy/Civics/4",
872
+ "smmlu/easy/Civics/59",
873
+ "smmlu/easy/Civics/87",
874
+ "smmlu/easy/Civics/31",
875
+ "smmlu/easy/Civics/70",
876
+ "smmlu/easy/Eastern music/121",
877
+ "smmlu/easy/Eastern music/49",
878
+ "smmlu/easy/Eastern music/57",
879
+ "smmlu/easy/Eastern music/31",
880
+ "smmlu/easy/Eastern music/33",
881
+ "smmlu/easy/Eastern music/9",
882
+ "smmlu/easy/Eastern music/23",
883
+ "smmlu/easy/Eastern music/140",
884
+ "smmlu/easy/Eastern music/118",
885
+ "smmlu/easy/Eastern music/117",
886
+ "smmlu/easy/Eastern music/63",
887
+ "smmlu/easy/Eastern music/68",
888
+ "smmlu/easy/Eastern music/52",
889
+ "smmlu/easy/Eastern music/26",
890
+ "smmlu/easy/Eastern music/131",
891
+ "smmlu/easy/Eastern music/29",
892
+ "smmlu/easy/Eastern music/3",
893
+ "smmlu/easy/Eastern music/108",
894
+ "smmlu/easy/Eastern music/112",
895
+ "smmlu/easy/Eastern music/84",
896
+ "smmlu/easy/Eastern music/93",
897
+ "smmlu/easy/Eastern music/87",
898
+ "smmlu/easy/Eastern music/27",
899
+ "smmlu/easy/Eastern music/6",
900
+ "smmlu/easy/Eastern music/38",
901
+ "smmlu/easy/Eastern music/19",
902
+ "smmlu/easy/Eastern music/25",
903
+ "smmlu/easy/Eastern music/22",
904
+ "smmlu/easy/Eastern music/66",
905
+ "smmlu/easy/Geography/43",
906
+ "smmlu/easy/Geography/112",
907
+ "smmlu/easy/Geography/50",
908
+ "smmlu/easy/Geography/35",
909
+ "smmlu/easy/Geography/67",
910
+ "smmlu/easy/Geography/80",
911
+ "smmlu/easy/Geography/48",
912
+ "smmlu/easy/Geography/39",
913
+ "smmlu/easy/Geography/12",
914
+ "smmlu/easy/Geography/70",
915
+ "smmlu/easy/Geography/74",
916
+ "smmlu/easy/Geography/47",
917
+ "smmlu/easy/Geography/41",
918
+ "smmlu/easy/Geography/28",
919
+ "smmlu/easy/Geography/77",
920
+ "smmlu/easy/Geography/8",
921
+ "smmlu/easy/Geography/51",
922
+ "smmlu/easy/Geography/57",
923
+ "smmlu/easy/Geography/82",
924
+ "smmlu/easy/Geography/9",
925
+ "smmlu/easy/Geography/83",
926
+ "smmlu/easy/Geography/31",
927
+ "smmlu/easy/Geography/68",
928
+ "smmlu/easy/Health and Physical Science/95",
929
+ "smmlu/easy/Health and Physical Science/69",
930
+ "smmlu/easy/Health and Physical Science/84",
931
+ "smmlu/easy/Health and Physical Science/43",
932
+ "smmlu/easy/Health and Physical Science/19",
933
+ "smmlu/easy/Health and Physical Science/5",
934
+ "smmlu/easy/Health and Physical Science/124",
935
+ "smmlu/easy/Health and Physical Science/12",
936
+ "smmlu/easy/Health and Physical Science/45",
937
+ "smmlu/easy/Health and Physical Science/101",
938
+ "smmlu/easy/Health and Physical Science/119",
939
+ "smmlu/easy/Health and Physical Science/89",
940
+ "smmlu/easy/Health and Physical Science/59",
941
+ "smmlu/easy/Health and Physical Science/42",
942
+ "smmlu/easy/Health and Physical Science/6",
943
+ "smmlu/easy/Health and Physical Science/33",
944
+ "smmlu/easy/Health and Physical Science/18",
945
+ "smmlu/easy/Health and Physical Science/120",
946
+ "smmlu/easy/Health and Physical Science/4",
947
+ "smmlu/easy/Health and Physical Science/104",
948
+ "smmlu/easy/Health and Physical Science/34",
949
+ "smmlu/easy/Health and Physical Science/116",
950
+ "smmlu/easy/Health and Physical Science/52",
951
+ "smmlu/easy/Health and Physical Science/62",
952
+ "smmlu/easy/Health and Physical Science/130",
953
+ "smmlu/easy/Health and Physical Science/64",
954
+ "smmlu/easy/History/57",
955
+ "smmlu/easy/History/115",
956
+ "smmlu/easy/History/62",
957
+ "smmlu/easy/History/20",
958
+ "smmlu/easy/History/30",
959
+ "smmlu/easy/History/38",
960
+ "smmlu/easy/History/113",
961
+ "smmlu/easy/History/105",
962
+ "smmlu/easy/History/101",
963
+ "smmlu/easy/History/5",
964
+ "smmlu/easy/History/102",
965
+ "smmlu/easy/History/26",
966
+ "smmlu/easy/History/66",
967
+ "smmlu/easy/History/9",
968
+ "smmlu/easy/History/85",
969
+ "smmlu/easy/History/149",
970
+ "smmlu/easy/History/137",
971
+ "smmlu/easy/History/32",
972
+ "smmlu/easy/History/69",
973
+ "smmlu/easy/History/141",
974
+ "smmlu/easy/History/133",
975
+ "smmlu/easy/History/106",
976
+ "smmlu/easy/History/82",
977
+ "smmlu/easy/History/33",
978
+ "smmlu/easy/History/78",
979
+ "smmlu/easy/History/64",
980
+ "smmlu/easy/History/129",
981
+ "smmlu/easy/History/135",
982
+ "smmlu/easy/History/110",
983
+ "smmlu/easy/History/97",
984
+ "smmlu/easy/Islam/9",
985
+ "smmlu/easy/Islam/73",
986
+ "smmlu/easy/Islam/39",
987
+ "smmlu/easy/Islam/80",
988
+ "smmlu/easy/Islam/42",
989
+ "smmlu/easy/Islam/106",
990
+ "smmlu/easy/Islam/64",
991
+ "smmlu/easy/Islam/37",
992
+ "smmlu/easy/Islam/72",
993
+ "smmlu/easy/Islam/38",
994
+ "smmlu/easy/Islam/5",
995
+ "smmlu/easy/Islam/6",
996
+ "smmlu/easy/Islam/79",
997
+ "smmlu/easy/Islam/97",
998
+ "smmlu/easy/Islam/88",
999
+ "smmlu/easy/Islam/13",
1000
+ "smmlu/easy/Islam/101",
1001
+ "smmlu/easy/Islam/75",
1002
+ "smmlu/easy/Islam/74",
1003
+ "smmlu/easy/Islam/53",
1004
+ "smmlu/easy/Islam/71",
1005
+ "smmlu/easy/Islam/86",
1006
+ "smmlu/easy/Sinhala language and literature/72",
1007
+ "smmlu/easy/Sinhala language and literature/65",
1008
+ "smmlu/easy/Sinhala language and literature/140",
1009
+ "smmlu/easy/Sinhala language and literature/126",
1010
+ "smmlu/easy/Sinhala language and literature/56",
1011
+ "smmlu/easy/Sinhala language and literature/83",
1012
+ "smmlu/easy/Sinhala language and literature/26",
1013
+ "smmlu/easy/Sinhala language and literature/11",
1014
+ "smmlu/easy/Sinhala language and literature/150",
1015
+ "smmlu/easy/Sinhala language and literature/61",
1016
+ "smmlu/easy/Sinhala language and literature/33",
1017
+ "smmlu/easy/Sinhala language and literature/118",
1018
+ "smmlu/easy/Sinhala language and literature/102",
1019
+ "smmlu/easy/Sinhala language and literature/100",
1020
+ "smmlu/easy/Sinhala language and literature/97",
1021
+ "smmlu/easy/Sinhala language and literature/144",
1022
+ "smmlu/easy/Sinhala language and literature/113",
1023
+ "smmlu/easy/Sinhala language and literature/151",
1024
+ "smmlu/easy/Sinhala language and literature/78",
1025
+ "smmlu/easy/Sinhala language and literature/34",
1026
+ "smmlu/easy/Sinhala language and literature/103",
1027
+ "smmlu/easy/Sinhala language and literature/132",
1028
+ "smmlu/easy/Sinhala language and literature/37",
1029
+ "smmlu/easy/Sinhala language and literature/110",
1030
+ "smmlu/easy/Sinhala language and literature/108",
1031
+ "smmlu/easy/Sinhala language and literature/74",
1032
+ "smmlu/easy/Sinhala language and literature/141",
1033
+ "smmlu/easy/Sinhala language and literature/58",
1034
+ "smmlu/easy/Sinhala language and literature/71",
1035
+ "smmlu/easy/Sinhala language and literature/131",
1036
+ "smmlu/easy/Sinhala language and literature/36",
1037
+ "smmlu/easy/dancing/105",
1038
+ "smmlu/easy/dancing/3",
1039
+ "smmlu/easy/dancing/26",
1040
+ "smmlu/easy/dancing/70",
1041
+ "smmlu/easy/dancing/68",
1042
+ "smmlu/easy/dancing/42",
1043
+ "smmlu/easy/dancing/5",
1044
+ "smmlu/easy/dancing/65",
1045
+ "smmlu/easy/dancing/24",
1046
+ "smmlu/easy/dancing/13",
1047
+ "smmlu/easy/dancing/60",
1048
+ "smmlu/easy/dancing/54",
1049
+ "smmlu/easy/dancing/97",
1050
+ "smmlu/easy/dancing/41",
1051
+ "smmlu/easy/dancing/88",
1052
+ "smmlu/easy/dancing/67",
1053
+ "smmlu/easy/dancing/43",
1054
+ "smmlu/easy/dancing/107",
1055
+ "smmlu/easy/dancing/28",
1056
+ "smmlu/easy/dancing/100",
1057
+ "smmlu/easy/dancing/77",
1058
+ "smmlu/easy/dancing/106",
1059
+ "smmlu/easy/drama and Theatre /32",
1060
+ "smmlu/easy/drama and Theatre /126",
1061
+ "smmlu/easy/drama and Theatre /100",
1062
+ "smmlu/easy/drama and Theatre /59",
1063
+ "smmlu/easy/drama and Theatre /44",
1064
+ "smmlu/easy/drama and Theatre /85",
1065
+ "smmlu/easy/drama and Theatre /99",
1066
+ "smmlu/easy/drama and Theatre /116",
1067
+ "smmlu/easy/drama and Theatre /11",
1068
+ "smmlu/easy/drama and Theatre /97",
1069
+ "smmlu/easy/drama and Theatre /75",
1070
+ "smmlu/easy/drama and Theatre /96",
1071
+ "smmlu/easy/drama and Theatre /9",
1072
+ "smmlu/easy/drama and Theatre /103",
1073
+ "smmlu/easy/drama and Theatre /84",
1074
+ "smmlu/easy/drama and Theatre /95",
1075
+ "smmlu/easy/drama and Theatre /121",
1076
+ "smmlu/easy/drama and Theatre /62",
1077
+ "smmlu/easy/drama and Theatre /82",
1078
+ "smmlu/easy/drama and Theatre /81",
1079
+ "smmlu/easy/drama and Theatre /27",
1080
+ "smmlu/easy/drama and Theatre /14",
1081
+ "smmlu/easy/drama and Theatre /36",
1082
+ "smmlu/easy/drama and Theatre /113",
1083
+ "smmlu/easy/drama and Theatre /46",
1084
+ "smmlu/easy/science/118",
1085
+ "smmlu/easy/science/134",
1086
+ "smmlu/easy/science/145",
1087
+ "smmlu/easy/science/25",
1088
+ "smmlu/easy/science/2",
1089
+ "smmlu/easy/science/152",
1090
+ "smmlu/easy/science/120",
1091
+ "smmlu/easy/science/6",
1092
+ "smmlu/easy/science/111",
1093
+ "smmlu/easy/science/105",
1094
+ "smmlu/easy/science/147",
1095
+ "smmlu/easy/science/31",
1096
+ "smmlu/easy/science/58",
1097
+ "smmlu/easy/science/35",
1098
+ "smmlu/easy/science/88",
1099
+ "smmlu/easy/science/130",
1100
+ "smmlu/easy/science/48",
1101
+ "smmlu/easy/science/83",
1102
+ "smmlu/easy/science/28",
1103
+ "smmlu/easy/science/113",
1104
+ "smmlu/easy/science/149",
1105
+ "smmlu/easy/science/95",
1106
+ "smmlu/easy/science/72",
1107
+ "smmlu/easy/science/7",
1108
+ "smmlu/easy/science/61",
1109
+ "smmlu/easy/science/21",
1110
+ "smmlu/easy/science/67",
1111
+ "smmlu/easy/science/19",
1112
+ "smmlu/easy/science/112",
1113
+ "smmlu/easy/science/163",
1114
+ "smmlu/easy/science/62",
1115
+ "smmlu/easy/science/102",
1116
+ "smmlu/easy/science/27"
1117
+ ],
1118
+ [
1119
+ "smmlu/easy/Arts/32",
1120
+ "smmlu/easy/Arts/14",
1121
+ "smmlu/easy/Arts/27",
1122
+ "smmlu/easy/Arts/34",
1123
+ "smmlu/easy/Arts/50",
1124
+ "smmlu/easy/Arts/45",
1125
+ "smmlu/easy/Arts/20",
1126
+ "smmlu/easy/Arts/92",
1127
+ "smmlu/easy/Arts/28",
1128
+ "smmlu/easy/Arts/47",
1129
+ "smmlu/easy/Arts/22",
1130
+ "smmlu/easy/Arts/79",
1131
+ "smmlu/easy/Arts/4",
1132
+ "smmlu/easy/Arts/82",
1133
+ "smmlu/easy/Arts/10",
1134
+ "smmlu/easy/Arts/62",
1135
+ "smmlu/easy/Arts/49",
1136
+ "smmlu/easy/Arts/5",
1137
+ "smmlu/easy/Arts/12",
1138
+ "smmlu/easy/Arts/6",
1139
+ "smmlu/easy/Buddhism/46",
1140
+ "smmlu/easy/Buddhism/125",
1141
+ "smmlu/easy/Buddhism/48",
1142
+ "smmlu/easy/Buddhism/12",
1143
+ "smmlu/easy/Buddhism/21",
1144
+ "smmlu/easy/Buddhism/100",
1145
+ "smmlu/easy/Buddhism/91",
1146
+ "smmlu/easy/Buddhism/82",
1147
+ "smmlu/easy/Buddhism/50",
1148
+ "smmlu/easy/Buddhism/152",
1149
+ "smmlu/easy/Buddhism/43",
1150
+ "smmlu/easy/Buddhism/94",
1151
+ "smmlu/easy/Buddhism/38",
1152
+ "smmlu/easy/Buddhism/57",
1153
+ "smmlu/easy/Buddhism/109",
1154
+ "smmlu/easy/Buddhism/6",
1155
+ "smmlu/easy/Buddhism/104",
1156
+ "smmlu/easy/Buddhism/92",
1157
+ "smmlu/easy/Buddhism/105",
1158
+ "smmlu/easy/Buddhism/147",
1159
+ "smmlu/easy/Buddhism/45",
1160
+ "smmlu/easy/Buddhism/120",
1161
+ "smmlu/easy/Buddhism/81",
1162
+ "smmlu/easy/Buddhism/106",
1163
+ "smmlu/easy/Buddhism/33",
1164
+ "smmlu/easy/Buddhism/15",
1165
+ "smmlu/easy/Buddhism/44",
1166
+ "smmlu/easy/Buddhism/134",
1167
+ "smmlu/easy/Buddhism/143",
1168
+ "smmlu/easy/Buddhism/75",
1169
+ "smmlu/easy/Buddhism/127",
1170
+ "smmlu/easy/Buddhism/54",
1171
+ "smmlu/easy/Catholicism/81",
1172
+ "smmlu/easy/Catholicism/24",
1173
+ "smmlu/easy/Catholicism/126",
1174
+ "smmlu/easy/Catholicism/31",
1175
+ "smmlu/easy/Catholicism/29",
1176
+ "smmlu/easy/Catholicism/109",
1177
+ "smmlu/easy/Catholicism/21",
1178
+ "smmlu/easy/Catholicism/85",
1179
+ "smmlu/easy/Catholicism/33",
1180
+ "smmlu/easy/Catholicism/54",
1181
+ "smmlu/easy/Catholicism/65",
1182
+ "smmlu/easy/Catholicism/51",
1183
+ "smmlu/easy/Catholicism/73",
1184
+ "smmlu/easy/Catholicism/117",
1185
+ "smmlu/easy/Catholicism/38",
1186
+ "smmlu/easy/Catholicism/129",
1187
+ "smmlu/easy/Catholicism/20",
1188
+ "smmlu/easy/Catholicism/79",
1189
+ "smmlu/easy/Catholicism/101",
1190
+ "smmlu/easy/Catholicism/112",
1191
+ "smmlu/easy/Catholicism/68",
1192
+ "smmlu/easy/Catholicism/91",
1193
+ "smmlu/easy/Catholicism/6",
1194
+ "smmlu/easy/Catholicism/74",
1195
+ "smmlu/easy/Catholicism/9",
1196
+ "smmlu/easy/Catholicism/59",
1197
+ "smmlu/easy/Catholicism/130",
1198
+ "smmlu/easy/Christianity/9",
1199
+ "smmlu/easy/Christianity/107",
1200
+ "smmlu/easy/Christianity/45",
1201
+ "smmlu/easy/Christianity/108",
1202
+ "smmlu/easy/Christianity/100",
1203
+ "smmlu/easy/Christianity/93",
1204
+ "smmlu/easy/Christianity/46",
1205
+ "smmlu/easy/Christianity/36",
1206
+ "smmlu/easy/Christianity/21",
1207
+ "smmlu/easy/Christianity/73",
1208
+ "smmlu/easy/Christianity/89",
1209
+ "smmlu/easy/Christianity/99",
1210
+ "smmlu/easy/Christianity/64",
1211
+ "smmlu/easy/Christianity/38",
1212
+ "smmlu/easy/Christianity/59",
1213
+ "smmlu/easy/Christianity/70",
1214
+ "smmlu/easy/Christianity/56",
1215
+ "smmlu/easy/Christianity/12",
1216
+ "smmlu/easy/Christianity/43",
1217
+ "smmlu/easy/Christianity/112",
1218
+ "smmlu/easy/Christianity/81",
1219
+ "smmlu/easy/Christianity/98",
1220
+ "smmlu/easy/Christianity/23",
1221
+ "smmlu/easy/Christianity/68",
1222
+ "smmlu/easy/Christianity/113",
1223
+ "smmlu/easy/Christianity/30",
1224
+ "smmlu/easy/Civics/104",
1225
+ "smmlu/easy/Civics/3",
1226
+ "smmlu/easy/Civics/91",
1227
+ "smmlu/easy/Civics/52",
1228
+ "smmlu/easy/Civics/44",
1229
+ "smmlu/easy/Civics/74",
1230
+ "smmlu/easy/Civics/99",
1231
+ "smmlu/easy/Civics/109",
1232
+ "smmlu/easy/Civics/72",
1233
+ "smmlu/easy/Civics/78",
1234
+ "smmlu/easy/Civics/69",
1235
+ "smmlu/easy/Civics/98",
1236
+ "smmlu/easy/Civics/107",
1237
+ "smmlu/easy/Civics/75",
1238
+ "smmlu/easy/Civics/50",
1239
+ "smmlu/easy/Civics/35",
1240
+ "smmlu/easy/Civics/82",
1241
+ "smmlu/easy/Civics/9",
1242
+ "smmlu/easy/Civics/46",
1243
+ "smmlu/easy/Civics/81",
1244
+ "smmlu/easy/Civics/24",
1245
+ "smmlu/easy/Civics/57",
1246
+ "smmlu/easy/Civics/118",
1247
+ "smmlu/easy/Civics/38",
1248
+ "smmlu/easy/Eastern music/115",
1249
+ "smmlu/easy/Eastern music/17",
1250
+ "smmlu/easy/Eastern music/110",
1251
+ "smmlu/easy/Eastern music/86",
1252
+ "smmlu/easy/Eastern music/120",
1253
+ "smmlu/easy/Eastern music/48",
1254
+ "smmlu/easy/Eastern music/42",
1255
+ "smmlu/easy/Eastern music/32",
1256
+ "smmlu/easy/Eastern music/141",
1257
+ "smmlu/easy/Eastern music/137",
1258
+ "smmlu/easy/Eastern music/45",
1259
+ "smmlu/easy/Eastern music/85",
1260
+ "smmlu/easy/Eastern music/11",
1261
+ "smmlu/easy/Eastern music/64",
1262
+ "smmlu/easy/Eastern music/106",
1263
+ "smmlu/easy/Eastern music/130",
1264
+ "smmlu/easy/Eastern music/107",
1265
+ "smmlu/easy/Eastern music/41",
1266
+ "smmlu/easy/Eastern music/81",
1267
+ "smmlu/easy/Eastern music/16",
1268
+ "smmlu/easy/Eastern music/113",
1269
+ "smmlu/easy/Eastern music/88",
1270
+ "smmlu/easy/Eastern music/36",
1271
+ "smmlu/easy/Eastern music/39",
1272
+ "smmlu/easy/Eastern music/46",
1273
+ "smmlu/easy/Eastern music/28",
1274
+ "smmlu/easy/Eastern music/72",
1275
+ "smmlu/easy/Eastern music/143",
1276
+ "smmlu/easy/Eastern music/5",
1277
+ "smmlu/easy/Geography/84",
1278
+ "smmlu/easy/Geography/55",
1279
+ "smmlu/easy/Geography/5",
1280
+ "smmlu/easy/Geography/97",
1281
+ "smmlu/easy/Geography/115",
1282
+ "smmlu/easy/Geography/116",
1283
+ "smmlu/easy/Geography/42",
1284
+ "smmlu/easy/Geography/104",
1285
+ "smmlu/easy/Geography/30",
1286
+ "smmlu/easy/Geography/2",
1287
+ "smmlu/easy/Geography/59",
1288
+ "smmlu/easy/Geography/72",
1289
+ "smmlu/easy/Geography/101",
1290
+ "smmlu/easy/Geography/110",
1291
+ "smmlu/easy/Geography/79",
1292
+ "smmlu/easy/Geography/96",
1293
+ "smmlu/easy/Geography/24",
1294
+ "smmlu/easy/Geography/87",
1295
+ "smmlu/easy/Geography/61",
1296
+ "smmlu/easy/Geography/45",
1297
+ "smmlu/easy/Geography/23",
1298
+ "smmlu/easy/Geography/95",
1299
+ "smmlu/easy/Geography/114",
1300
+ "smmlu/easy/Health and Physical Science/35",
1301
+ "smmlu/easy/Health and Physical Science/66",
1302
+ "smmlu/easy/Health and Physical Science/77",
1303
+ "smmlu/easy/Health and Physical Science/123",
1304
+ "smmlu/easy/Health and Physical Science/114",
1305
+ "smmlu/easy/Health and Physical Science/79",
1306
+ "smmlu/easy/Health and Physical Science/117",
1307
+ "smmlu/easy/Health and Physical Science/78",
1308
+ "smmlu/easy/Health and Physical Science/96",
1309
+ "smmlu/easy/Health and Physical Science/109",
1310
+ "smmlu/easy/Health and Physical Science/56",
1311
+ "smmlu/easy/Health and Physical Science/88",
1312
+ "smmlu/easy/Health and Physical Science/29",
1313
+ "smmlu/easy/Health and Physical Science/23",
1314
+ "smmlu/easy/Health and Physical Science/128",
1315
+ "smmlu/easy/Health and Physical Science/13",
1316
+ "smmlu/easy/Health and Physical Science/14",
1317
+ "smmlu/easy/Health and Physical Science/81",
1318
+ "smmlu/easy/Health and Physical Science/10",
1319
+ "smmlu/easy/Health and Physical Science/24",
1320
+ "smmlu/easy/Health and Physical Science/67",
1321
+ "smmlu/easy/Health and Physical Science/118",
1322
+ "smmlu/easy/Health and Physical Science/90",
1323
+ "smmlu/easy/Health and Physical Science/113",
1324
+ "smmlu/easy/Health and Physical Science/47",
1325
+ "smmlu/easy/Health and Physical Science/91",
1326
+ "smmlu/easy/History/54",
1327
+ "smmlu/easy/History/16",
1328
+ "smmlu/easy/History/109",
1329
+ "smmlu/easy/History/46",
1330
+ "smmlu/easy/History/126",
1331
+ "smmlu/easy/History/117",
1332
+ "smmlu/easy/History/146",
1333
+ "smmlu/easy/History/88",
1334
+ "smmlu/easy/History/15",
1335
+ "smmlu/easy/History/77",
1336
+ "smmlu/easy/History/24",
1337
+ "smmlu/easy/History/139",
1338
+ "smmlu/easy/History/56",
1339
+ "smmlu/easy/History/13",
1340
+ "smmlu/easy/History/22",
1341
+ "smmlu/easy/History/112",
1342
+ "smmlu/easy/History/21",
1343
+ "smmlu/easy/History/58",
1344
+ "smmlu/easy/History/98",
1345
+ "smmlu/easy/History/23",
1346
+ "smmlu/easy/History/42",
1347
+ "smmlu/easy/History/84",
1348
+ "smmlu/easy/History/55",
1349
+ "smmlu/easy/History/128",
1350
+ "smmlu/easy/History/52",
1351
+ "smmlu/easy/History/122",
1352
+ "smmlu/easy/History/132",
1353
+ "smmlu/easy/History/120",
1354
+ "smmlu/easy/History/71",
1355
+ "smmlu/easy/History/49",
1356
+ "smmlu/easy/Islam/87",
1357
+ "smmlu/easy/Islam/54",
1358
+ "smmlu/easy/Islam/21",
1359
+ "smmlu/easy/Islam/100",
1360
+ "smmlu/easy/Islam/16",
1361
+ "smmlu/easy/Islam/57",
1362
+ "smmlu/easy/Islam/94",
1363
+ "smmlu/easy/Islam/17",
1364
+ "smmlu/easy/Islam/41",
1365
+ "smmlu/easy/Islam/76",
1366
+ "smmlu/easy/Islam/59",
1367
+ "smmlu/easy/Islam/27",
1368
+ "smmlu/easy/Islam/58",
1369
+ "smmlu/easy/Islam/47",
1370
+ "smmlu/easy/Islam/14",
1371
+ "smmlu/easy/Islam/40",
1372
+ "smmlu/easy/Islam/65",
1373
+ "smmlu/easy/Islam/25",
1374
+ "smmlu/easy/Islam/28",
1375
+ "smmlu/easy/Islam/11",
1376
+ "smmlu/easy/Islam/70",
1377
+ "smmlu/easy/Islam/51",
1378
+ "smmlu/easy/Sinhala language and literature/104",
1379
+ "smmlu/easy/Sinhala language and literature/54",
1380
+ "smmlu/easy/Sinhala language and literature/155",
1381
+ "smmlu/easy/Sinhala language and literature/3",
1382
+ "smmlu/easy/Sinhala language and literature/101",
1383
+ "smmlu/easy/Sinhala language and literature/30",
1384
+ "smmlu/easy/Sinhala language and literature/91",
1385
+ "smmlu/easy/Sinhala language and literature/12",
1386
+ "smmlu/easy/Sinhala language and literature/147",
1387
+ "smmlu/easy/Sinhala language and literature/124",
1388
+ "smmlu/easy/Sinhala language and literature/21",
1389
+ "smmlu/easy/Sinhala language and literature/90",
1390
+ "smmlu/easy/Sinhala language and literature/114",
1391
+ "smmlu/easy/Sinhala language and literature/48",
1392
+ "smmlu/easy/Sinhala language and literature/120",
1393
+ "smmlu/easy/Sinhala language and literature/76",
1394
+ "smmlu/easy/Sinhala language and literature/146",
1395
+ "smmlu/easy/Sinhala language and literature/128",
1396
+ "smmlu/easy/Sinhala language and literature/46",
1397
+ "smmlu/easy/Sinhala language and literature/135",
1398
+ "smmlu/easy/Sinhala language and literature/87",
1399
+ "smmlu/easy/Sinhala language and literature/52",
1400
+ "smmlu/easy/Sinhala language and literature/16",
1401
+ "smmlu/easy/Sinhala language and literature/152",
1402
+ "smmlu/easy/Sinhala language and literature/84",
1403
+ "smmlu/easy/Sinhala language and literature/27",
1404
+ "smmlu/easy/Sinhala language and literature/29",
1405
+ "smmlu/easy/Sinhala language and literature/88",
1406
+ "smmlu/easy/Sinhala language and literature/79",
1407
+ "smmlu/easy/Sinhala language and literature/86",
1408
+ "smmlu/easy/Sinhala language and literature/44",
1409
+ "smmlu/easy/dancing/59",
1410
+ "smmlu/easy/dancing/46",
1411
+ "smmlu/easy/dancing/32",
1412
+ "smmlu/easy/dancing/95",
1413
+ "smmlu/easy/dancing/2",
1414
+ "smmlu/easy/dancing/56",
1415
+ "smmlu/easy/dancing/49",
1416
+ "smmlu/easy/dancing/63",
1417
+ "smmlu/easy/dancing/98",
1418
+ "smmlu/easy/dancing/45",
1419
+ "smmlu/easy/dancing/15",
1420
+ "smmlu/easy/dancing/21",
1421
+ "smmlu/easy/dancing/29",
1422
+ "smmlu/easy/dancing/74",
1423
+ "smmlu/easy/dancing/8",
1424
+ "smmlu/easy/dancing/53",
1425
+ "smmlu/easy/dancing/101",
1426
+ "smmlu/easy/dancing/73",
1427
+ "smmlu/easy/dancing/31",
1428
+ "smmlu/easy/dancing/82",
1429
+ "smmlu/easy/dancing/71",
1430
+ "smmlu/easy/drama and Theatre /50",
1431
+ "smmlu/easy/drama and Theatre /6",
1432
+ "smmlu/easy/drama and Theatre /107",
1433
+ "smmlu/easy/drama and Theatre /26",
1434
+ "smmlu/easy/drama and Theatre /22",
1435
+ "smmlu/easy/drama and Theatre /30",
1436
+ "smmlu/easy/drama and Theatre /67",
1437
+ "smmlu/easy/drama and Theatre /61",
1438
+ "smmlu/easy/drama and Theatre /127",
1439
+ "smmlu/easy/drama and Theatre /43",
1440
+ "smmlu/easy/drama and Theatre /120",
1441
+ "smmlu/easy/drama and Theatre /117",
1442
+ "smmlu/easy/drama and Theatre /42",
1443
+ "smmlu/easy/drama and Theatre /92",
1444
+ "smmlu/easy/drama and Theatre /101",
1445
+ "smmlu/easy/drama and Theatre /51",
1446
+ "smmlu/easy/drama and Theatre /28",
1447
+ "smmlu/easy/drama and Theatre /119",
1448
+ "smmlu/easy/drama and Theatre /58",
1449
+ "smmlu/easy/drama and Theatre /68",
1450
+ "smmlu/easy/drama and Theatre /80",
1451
+ "smmlu/easy/drama and Theatre /31",
1452
+ "smmlu/easy/drama and Theatre /16",
1453
+ "smmlu/easy/drama and Theatre /3",
1454
+ "smmlu/easy/drama and Theatre /7",
1455
+ "smmlu/easy/drama and Theatre /54",
1456
+ "smmlu/easy/science/12",
1457
+ "smmlu/easy/science/68",
1458
+ "smmlu/easy/science/89",
1459
+ "smmlu/easy/science/108",
1460
+ "smmlu/easy/science/29",
1461
+ "smmlu/easy/science/142",
1462
+ "smmlu/easy/science/77",
1463
+ "smmlu/easy/science/148",
1464
+ "smmlu/easy/science/10",
1465
+ "smmlu/easy/science/160",
1466
+ "smmlu/easy/science/13",
1467
+ "smmlu/easy/science/153",
1468
+ "smmlu/easy/science/65",
1469
+ "smmlu/easy/science/33",
1470
+ "smmlu/easy/science/40",
1471
+ "smmlu/easy/science/81",
1472
+ "smmlu/easy/science/117",
1473
+ "smmlu/easy/science/43",
1474
+ "smmlu/easy/science/132",
1475
+ "smmlu/easy/science/122",
1476
+ "smmlu/easy/science/126",
1477
+ "smmlu/easy/science/128",
1478
+ "smmlu/easy/science/30",
1479
+ "smmlu/easy/science/92",
1480
+ "smmlu/easy/science/151",
1481
+ "smmlu/easy/science/94",
1482
+ "smmlu/easy/science/42",
1483
+ "smmlu/easy/science/110",
1484
+ "smmlu/easy/science/41",
1485
+ "smmlu/easy/science/66",
1486
+ "smmlu/easy/science/78",
1487
+ "smmlu/easy/science/141",
1488
+ "smmlu/easy/science/90"
1489
+ ],
1490
+ [
1491
+ "smmlu/easy/Arts/59",
1492
+ "smmlu/easy/Arts/77",
1493
+ "smmlu/easy/Arts/57",
1494
+ "smmlu/easy/Arts/7",
1495
+ "smmlu/easy/Arts/48",
1496
+ "smmlu/easy/Arts/69",
1497
+ "smmlu/easy/Arts/42",
1498
+ "smmlu/easy/Arts/90",
1499
+ "smmlu/easy/Arts/96",
1500
+ "smmlu/easy/Arts/39",
1501
+ "smmlu/easy/Arts/24",
1502
+ "smmlu/easy/Arts/46",
1503
+ "smmlu/easy/Arts/13",
1504
+ "smmlu/easy/Arts/16",
1505
+ "smmlu/easy/Arts/97",
1506
+ "smmlu/easy/Arts/8",
1507
+ "smmlu/easy/Arts/87",
1508
+ "smmlu/easy/Arts/2",
1509
+ "smmlu/easy/Arts/76",
1510
+ "smmlu/easy/Arts/99",
1511
+ "smmlu/easy/Buddhism/28",
1512
+ "smmlu/easy/Buddhism/58",
1513
+ "smmlu/easy/Buddhism/62",
1514
+ "smmlu/easy/Buddhism/69",
1515
+ "smmlu/easy/Buddhism/16",
1516
+ "smmlu/easy/Buddhism/93",
1517
+ "smmlu/easy/Buddhism/111",
1518
+ "smmlu/easy/Buddhism/132",
1519
+ "smmlu/easy/Buddhism/139",
1520
+ "smmlu/easy/Buddhism/89",
1521
+ "smmlu/easy/Buddhism/55",
1522
+ "smmlu/easy/Buddhism/131",
1523
+ "smmlu/easy/Buddhism/130",
1524
+ "smmlu/easy/Buddhism/149",
1525
+ "smmlu/easy/Buddhism/37",
1526
+ "smmlu/easy/Buddhism/161",
1527
+ "smmlu/easy/Buddhism/113",
1528
+ "smmlu/easy/Buddhism/156",
1529
+ "smmlu/easy/Buddhism/133",
1530
+ "smmlu/easy/Buddhism/64",
1531
+ "smmlu/easy/Buddhism/88",
1532
+ "smmlu/easy/Buddhism/144",
1533
+ "smmlu/easy/Buddhism/7",
1534
+ "smmlu/easy/Buddhism/151",
1535
+ "smmlu/easy/Buddhism/99",
1536
+ "smmlu/easy/Buddhism/107",
1537
+ "smmlu/easy/Buddhism/117",
1538
+ "smmlu/easy/Buddhism/160",
1539
+ "smmlu/easy/Buddhism/158",
1540
+ "smmlu/easy/Buddhism/126",
1541
+ "smmlu/easy/Buddhism/162",
1542
+ "smmlu/easy/Buddhism/138",
1543
+ "smmlu/easy/Catholicism/53",
1544
+ "smmlu/easy/Catholicism/118",
1545
+ "smmlu/easy/Catholicism/44",
1546
+ "smmlu/easy/Catholicism/95",
1547
+ "smmlu/easy/Catholicism/115",
1548
+ "smmlu/easy/Catholicism/104",
1549
+ "smmlu/easy/Catholicism/78",
1550
+ "smmlu/easy/Catholicism/12",
1551
+ "smmlu/easy/Catholicism/7",
1552
+ "smmlu/easy/Catholicism/121",
1553
+ "smmlu/easy/Catholicism/71",
1554
+ "smmlu/easy/Catholicism/82",
1555
+ "smmlu/easy/Catholicism/30",
1556
+ "smmlu/easy/Catholicism/125",
1557
+ "smmlu/easy/Catholicism/2",
1558
+ "smmlu/easy/Catholicism/15",
1559
+ "smmlu/easy/Catholicism/4",
1560
+ "smmlu/easy/Catholicism/103",
1561
+ "smmlu/easy/Catholicism/114",
1562
+ "smmlu/easy/Catholicism/43",
1563
+ "smmlu/easy/Catholicism/108",
1564
+ "smmlu/easy/Catholicism/86",
1565
+ "smmlu/easy/Catholicism/41",
1566
+ "smmlu/easy/Catholicism/39",
1567
+ "smmlu/easy/Catholicism/45",
1568
+ "smmlu/easy/Catholicism/49",
1569
+ "smmlu/easy/Christianity/53",
1570
+ "smmlu/easy/Christianity/109",
1571
+ "smmlu/easy/Christianity/74",
1572
+ "smmlu/easy/Christianity/16",
1573
+ "smmlu/easy/Christianity/116",
1574
+ "smmlu/easy/Christianity/111",
1575
+ "smmlu/easy/Christianity/17",
1576
+ "smmlu/easy/Christianity/11",
1577
+ "smmlu/easy/Christianity/115",
1578
+ "smmlu/easy/Christianity/79",
1579
+ "smmlu/easy/Christianity/86",
1580
+ "smmlu/easy/Christianity/106",
1581
+ "smmlu/easy/Christianity/129",
1582
+ "smmlu/easy/Christianity/65",
1583
+ "smmlu/easy/Christianity/42",
1584
+ "smmlu/easy/Christianity/32",
1585
+ "smmlu/easy/Christianity/1",
1586
+ "smmlu/easy/Christianity/72",
1587
+ "smmlu/easy/Christianity/67",
1588
+ "smmlu/easy/Christianity/123",
1589
+ "smmlu/easy/Christianity/13",
1590
+ "smmlu/easy/Christianity/125",
1591
+ "smmlu/easy/Christianity/97",
1592
+ "smmlu/easy/Christianity/35",
1593
+ "smmlu/easy/Christianity/57",
1594
+ "smmlu/easy/Christianity/94",
1595
+ "smmlu/easy/Civics/115",
1596
+ "smmlu/easy/Civics/119",
1597
+ "smmlu/easy/Civics/62",
1598
+ "smmlu/easy/Civics/105",
1599
+ "smmlu/easy/Civics/12",
1600
+ "smmlu/easy/Civics/77",
1601
+ "smmlu/easy/Civics/5",
1602
+ "smmlu/easy/Civics/123",
1603
+ "smmlu/easy/Civics/37",
1604
+ "smmlu/easy/Civics/26",
1605
+ "smmlu/easy/Civics/17",
1606
+ "smmlu/easy/Civics/32",
1607
+ "smmlu/easy/Civics/79",
1608
+ "smmlu/easy/Civics/71",
1609
+ "smmlu/easy/Civics/83",
1610
+ "smmlu/easy/Civics/66",
1611
+ "smmlu/easy/Civics/61",
1612
+ "smmlu/easy/Civics/45",
1613
+ "smmlu/easy/Civics/96",
1614
+ "smmlu/easy/Civics/36",
1615
+ "smmlu/easy/Civics/120",
1616
+ "smmlu/easy/Civics/7",
1617
+ "smmlu/easy/Civics/21",
1618
+ "smmlu/easy/Civics/67",
1619
+ "smmlu/easy/Civics/95",
1620
+ "smmlu/easy/Eastern music/129",
1621
+ "smmlu/easy/Eastern music/122",
1622
+ "smmlu/easy/Eastern music/44",
1623
+ "smmlu/easy/Eastern music/99",
1624
+ "smmlu/easy/Eastern music/127",
1625
+ "smmlu/easy/Eastern music/34",
1626
+ "smmlu/easy/Eastern music/124",
1627
+ "smmlu/easy/Eastern music/53",
1628
+ "smmlu/easy/Eastern music/24",
1629
+ "smmlu/easy/Eastern music/56",
1630
+ "smmlu/easy/Eastern music/125",
1631
+ "smmlu/easy/Eastern music/75",
1632
+ "smmlu/easy/Eastern music/21",
1633
+ "smmlu/easy/Eastern music/55",
1634
+ "smmlu/easy/Eastern music/43",
1635
+ "smmlu/easy/Eastern music/114",
1636
+ "smmlu/easy/Eastern music/126",
1637
+ "smmlu/easy/Eastern music/95",
1638
+ "smmlu/easy/Eastern music/20",
1639
+ "smmlu/easy/Eastern music/78",
1640
+ "smmlu/easy/Eastern music/71",
1641
+ "smmlu/easy/Eastern music/76",
1642
+ "smmlu/easy/Eastern music/96",
1643
+ "smmlu/easy/Eastern music/58",
1644
+ "smmlu/easy/Eastern music/77",
1645
+ "smmlu/easy/Eastern music/69",
1646
+ "smmlu/easy/Eastern music/54",
1647
+ "smmlu/easy/Eastern music/50",
1648
+ "smmlu/easy/Eastern music/2",
1649
+ "smmlu/easy/Geography/7",
1650
+ "smmlu/easy/Geography/86",
1651
+ "smmlu/easy/Geography/90",
1652
+ "smmlu/easy/Geography/73",
1653
+ "smmlu/easy/Geography/92",
1654
+ "smmlu/easy/Geography/22",
1655
+ "smmlu/easy/Geography/19",
1656
+ "smmlu/easy/Geography/44",
1657
+ "smmlu/easy/Geography/46",
1658
+ "smmlu/easy/Geography/16",
1659
+ "smmlu/easy/Geography/40",
1660
+ "smmlu/easy/Geography/66",
1661
+ "smmlu/easy/Geography/109",
1662
+ "smmlu/easy/Geography/21",
1663
+ "smmlu/easy/Geography/56",
1664
+ "smmlu/easy/Geography/29",
1665
+ "smmlu/easy/Geography/103",
1666
+ "smmlu/easy/Geography/71",
1667
+ "smmlu/easy/Geography/102",
1668
+ "smmlu/easy/Geography/63",
1669
+ "smmlu/easy/Geography/49",
1670
+ "smmlu/easy/Geography/69",
1671
+ "smmlu/easy/Geography/52",
1672
+ "smmlu/easy/Health and Physical Science/87",
1673
+ "smmlu/easy/Health and Physical Science/107",
1674
+ "smmlu/easy/Health and Physical Science/100",
1675
+ "smmlu/easy/Health and Physical Science/71",
1676
+ "smmlu/easy/Health and Physical Science/103",
1677
+ "smmlu/easy/Health and Physical Science/126",
1678
+ "smmlu/easy/Health and Physical Science/111",
1679
+ "smmlu/easy/Health and Physical Science/32",
1680
+ "smmlu/easy/Health and Physical Science/61",
1681
+ "smmlu/easy/Health and Physical Science/68",
1682
+ "smmlu/easy/Health and Physical Science/125",
1683
+ "smmlu/easy/Health and Physical Science/9",
1684
+ "smmlu/easy/Health and Physical Science/53",
1685
+ "smmlu/easy/Health and Physical Science/28",
1686
+ "smmlu/easy/Health and Physical Science/2",
1687
+ "smmlu/easy/Health and Physical Science/70",
1688
+ "smmlu/easy/Health and Physical Science/57",
1689
+ "smmlu/easy/Health and Physical Science/85",
1690
+ "smmlu/easy/Health and Physical Science/63",
1691
+ "smmlu/easy/Health and Physical Science/3",
1692
+ "smmlu/easy/Health and Physical Science/49",
1693
+ "smmlu/easy/Health and Physical Science/15",
1694
+ "smmlu/easy/Health and Physical Science/75",
1695
+ "smmlu/easy/Health and Physical Science/22",
1696
+ "smmlu/easy/Health and Physical Science/17",
1697
+ "smmlu/easy/Health and Physical Science/98",
1698
+ "smmlu/easy/History/28",
1699
+ "smmlu/easy/History/143",
1700
+ "smmlu/easy/History/37",
1701
+ "smmlu/easy/History/40",
1702
+ "smmlu/easy/History/116",
1703
+ "smmlu/easy/History/121",
1704
+ "smmlu/easy/History/45",
1705
+ "smmlu/easy/History/89",
1706
+ "smmlu/easy/History/96",
1707
+ "smmlu/easy/History/31",
1708
+ "smmlu/easy/History/130",
1709
+ "smmlu/easy/History/111",
1710
+ "smmlu/easy/History/1",
1711
+ "smmlu/easy/History/144",
1712
+ "smmlu/easy/History/147",
1713
+ "smmlu/easy/History/151",
1714
+ "smmlu/easy/History/138",
1715
+ "smmlu/easy/History/12",
1716
+ "smmlu/easy/History/2",
1717
+ "smmlu/easy/History/145",
1718
+ "smmlu/easy/History/72",
1719
+ "smmlu/easy/History/150",
1720
+ "smmlu/easy/History/41",
1721
+ "smmlu/easy/History/99",
1722
+ "smmlu/easy/History/108",
1723
+ "smmlu/easy/History/48",
1724
+ "smmlu/easy/History/93",
1725
+ "smmlu/easy/History/53",
1726
+ "smmlu/easy/History/63",
1727
+ "smmlu/easy/History/3",
1728
+ "smmlu/easy/Islam/56",
1729
+ "smmlu/easy/Islam/1",
1730
+ "smmlu/easy/Islam/81",
1731
+ "smmlu/easy/Islam/19",
1732
+ "smmlu/easy/Islam/90",
1733
+ "smmlu/easy/Islam/26",
1734
+ "smmlu/easy/Islam/62",
1735
+ "smmlu/easy/Islam/45",
1736
+ "smmlu/easy/Islam/2",
1737
+ "smmlu/easy/Islam/22",
1738
+ "smmlu/easy/Islam/35",
1739
+ "smmlu/easy/Islam/55",
1740
+ "smmlu/easy/Islam/83",
1741
+ "smmlu/easy/Islam/77",
1742
+ "smmlu/easy/Islam/89",
1743
+ "smmlu/easy/Islam/82",
1744
+ "smmlu/easy/Islam/46",
1745
+ "smmlu/easy/Islam/96",
1746
+ "smmlu/easy/Islam/102",
1747
+ "smmlu/easy/Islam/20",
1748
+ "smmlu/easy/Islam/104",
1749
+ "smmlu/easy/Islam/32",
1750
+ "smmlu/easy/Sinhala language and literature/38",
1751
+ "smmlu/easy/Sinhala language and literature/89",
1752
+ "smmlu/easy/Sinhala language and literature/129",
1753
+ "smmlu/easy/Sinhala language and literature/41",
1754
+ "smmlu/easy/Sinhala language and literature/66",
1755
+ "smmlu/easy/Sinhala language and literature/35",
1756
+ "smmlu/easy/Sinhala language and literature/31",
1757
+ "smmlu/easy/Sinhala language and literature/119",
1758
+ "smmlu/easy/Sinhala language and literature/39",
1759
+ "smmlu/easy/Sinhala language and literature/130",
1760
+ "smmlu/easy/Sinhala language and literature/77",
1761
+ "smmlu/easy/Sinhala language and literature/116",
1762
+ "smmlu/easy/Sinhala language and literature/123",
1763
+ "smmlu/easy/Sinhala language and literature/64",
1764
+ "smmlu/easy/Sinhala language and literature/6",
1765
+ "smmlu/easy/Sinhala language and literature/106",
1766
+ "smmlu/easy/Sinhala language and literature/111",
1767
+ "smmlu/easy/Sinhala language and literature/127",
1768
+ "smmlu/easy/Sinhala language and literature/13",
1769
+ "smmlu/easy/Sinhala language and literature/19",
1770
+ "smmlu/easy/Sinhala language and literature/148",
1771
+ "smmlu/easy/Sinhala language and literature/4",
1772
+ "smmlu/easy/Sinhala language and literature/112",
1773
+ "smmlu/easy/Sinhala language and literature/139",
1774
+ "smmlu/easy/Sinhala language and literature/18",
1775
+ "smmlu/easy/Sinhala language and literature/136",
1776
+ "smmlu/easy/Sinhala language and literature/125",
1777
+ "smmlu/easy/Sinhala language and literature/68",
1778
+ "smmlu/easy/Sinhala language and literature/24",
1779
+ "smmlu/easy/Sinhala language and literature/145",
1780
+ "smmlu/easy/Sinhala language and literature/51",
1781
+ "smmlu/easy/dancing/51",
1782
+ "smmlu/easy/dancing/86",
1783
+ "smmlu/easy/dancing/6",
1784
+ "smmlu/easy/dancing/18",
1785
+ "smmlu/easy/dancing/44",
1786
+ "smmlu/easy/dancing/96",
1787
+ "smmlu/easy/dancing/76",
1788
+ "smmlu/easy/dancing/16",
1789
+ "smmlu/easy/dancing/66",
1790
+ "smmlu/easy/dancing/62",
1791
+ "smmlu/easy/dancing/7",
1792
+ "smmlu/easy/dancing/89",
1793
+ "smmlu/easy/dancing/25",
1794
+ "smmlu/easy/dancing/61",
1795
+ "smmlu/easy/dancing/52",
1796
+ "smmlu/easy/dancing/55",
1797
+ "smmlu/easy/dancing/69",
1798
+ "smmlu/easy/dancing/91",
1799
+ "smmlu/easy/dancing/84",
1800
+ "smmlu/easy/dancing/12",
1801
+ "smmlu/easy/dancing/85",
1802
+ "smmlu/easy/drama and Theatre /18",
1803
+ "smmlu/easy/drama and Theatre /73",
1804
+ "smmlu/easy/drama and Theatre /106",
1805
+ "smmlu/easy/drama and Theatre /94",
1806
+ "smmlu/easy/drama and Theatre /47",
1807
+ "smmlu/easy/drama and Theatre /40",
1808
+ "smmlu/easy/drama and Theatre /57",
1809
+ "smmlu/easy/drama and Theatre /70",
1810
+ "smmlu/easy/drama and Theatre /115",
1811
+ "smmlu/easy/drama and Theatre /118",
1812
+ "smmlu/easy/drama and Theatre /114",
1813
+ "smmlu/easy/drama and Theatre /15",
1814
+ "smmlu/easy/drama and Theatre /52",
1815
+ "smmlu/easy/drama and Theatre /20",
1816
+ "smmlu/easy/drama and Theatre /76",
1817
+ "smmlu/easy/drama and Theatre /64",
1818
+ "smmlu/easy/drama and Theatre /105",
1819
+ "smmlu/easy/drama and Theatre /41",
1820
+ "smmlu/easy/drama and Theatre /98",
1821
+ "smmlu/easy/drama and Theatre /35",
1822
+ "smmlu/easy/drama and Theatre /37",
1823
+ "smmlu/easy/drama and Theatre /86",
1824
+ "smmlu/easy/drama and Theatre /60",
1825
+ "smmlu/easy/drama and Theatre /124",
1826
+ "smmlu/easy/drama and Theatre /128",
1827
+ "smmlu/easy/drama and Theatre /91",
1828
+ "smmlu/easy/science/1",
1829
+ "smmlu/easy/science/123",
1830
+ "smmlu/easy/science/63",
1831
+ "smmlu/easy/science/69",
1832
+ "smmlu/easy/science/80",
1833
+ "smmlu/easy/science/150",
1834
+ "smmlu/easy/science/79",
1835
+ "smmlu/easy/science/4",
1836
+ "smmlu/easy/science/52",
1837
+ "smmlu/easy/science/85",
1838
+ "smmlu/easy/science/154",
1839
+ "smmlu/easy/science/127",
1840
+ "smmlu/easy/science/36",
1841
+ "smmlu/easy/science/55",
1842
+ "smmlu/easy/science/20",
1843
+ "smmlu/easy/science/8",
1844
+ "smmlu/easy/science/99",
1845
+ "smmlu/easy/science/93",
1846
+ "smmlu/easy/science/16",
1847
+ "smmlu/easy/science/161",
1848
+ "smmlu/easy/science/18",
1849
+ "smmlu/easy/science/97",
1850
+ "smmlu/easy/science/107",
1851
+ "smmlu/easy/science/119",
1852
+ "smmlu/easy/science/103",
1853
+ "smmlu/easy/science/144",
1854
+ "smmlu/easy/science/125",
1855
+ "smmlu/easy/science/24",
1856
+ "smmlu/easy/science/39",
1857
+ "smmlu/easy/science/138",
1858
+ "smmlu/easy/science/100",
1859
+ "smmlu/easy/science/49",
1860
+ "smmlu/easy/science/159"
1861
+ ]
1862
+ ]
training/configs/submission.yaml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # Chosen on SinhalaMMLU dev + Global-MMLU si validation only (reports/experiments_prompting.md), never on test.
3
+ model: models/gemma-4-E4B-it-text # text-only Gemma 4 E4B (scripts/make_text_only.py), 7.463B parameters
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 1
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
training/configs/submission_A_think_hard.yaml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # A + thinking on hard (19 Oct): model A; questions labelled hard use thinking mode (academic proxy +8.4, paired CI [+4.9, +11.8]); others fast 4-order vote. Never chosen on test.
3
+ model: models/sft_gmmlu_lora/step-357 # model A: LoRA r=16 on Global-MMLU si, 1 epoch, merged (7.463B)
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 4 # vote over 4 cyclic option orders (+2.7 dev vs zero-shot, paired bootstrap)
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
14
+ thinking_levels: [hard]
15
+ think_max_new_tokens: 2048
training/configs/submission_base_think_gated_sc.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Final candidate B (21 Oct): base Gemma 4 E4B, text-only (7.463B, no adapter), thinking for every question.
2
+ # Agreement-gated self-consistency on all levels: where the one-step answer disagrees with greedy thinking, add 3 sampled
3
+ # reasoning paths and take the majority vote (ties -> greedy). Evidence (dev/validation only): full dev, base thinking 63.0 vs
4
+ # model A vote 57.2 (+5.8 [+3.6, +8.0]); pooled proxies, gated self-consistency +2.70 [+1.18, +4.23] on 43% of questions.
5
+ model: models/gemma-4-E4B-it-text
6
+ lang: en
7
+ chat: true
8
+ method: logit # fast path, used only if a thinking answer cannot be read
9
+ n_perms: 4
10
+ perm_mode: cyclic
11
+ seed: 1234
12
+ dtype: bfloat16
13
+ gpu_mem_gb: 100
14
+ token_budget: 32768
15
+ max_batch: 64
16
+ thinking_levels: [easy, medium, hard]
17
+ think_max_new_tokens: 3072
18
+ sc_levels: [easy, medium, hard]
19
+ sc_gate: disagree
20
+ sc_samples: 3
21
+ sc_temperature: 0.8
22
+ sc_top_p: 0.95
23
+ sc_top_k: 64
training/configs/submission_base_think_sc_hard.yaml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Final candidate (21 Oct): base Gemma 4 E4B, text-only (7.463B, no adapter), thinking for every question.
2
+ # Hard: self-consistency (greedy + 3 sampled reasoning paths, majority vote, ties -> greedy).
3
+ # Evidence (dev / validation only, never test): full dev, base thinking 63.0 vs model A 4-order vote 57.2
4
+ # (+5.8 [+3.6, +8.0]); academic proxy, self-consistency 82.2 vs greedy 79.5 (+2.7 [+0.9, +4.7]).
5
+ model: models/gemma-4-E4B-it-text
6
+ lang: en
7
+ chat: true
8
+ method: logit # fast path, used only if a thinking answer cannot be read
9
+ n_perms: 4
10
+ perm_mode: cyclic
11
+ seed: 1234
12
+ dtype: bfloat16
13
+ gpu_mem_gb: 100
14
+ token_budget: 32768
15
+ max_batch: 64
16
+ thinking_levels: [easy, medium, hard]
17
+ think_max_new_tokens: 3072
18
+ sc_levels: [hard]
19
+ sc_samples: 3
20
+ sc_temperature: 0.8
21
+ sc_top_p: 0.95
22
+ sc_top_k: 64
training/configs/submission_lora_gmmlu_vote.yaml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # Chosen on SinhalaMMLU dev only (reports/experiments_abc.md), never on test.
3
+ model: models/sft_gmmlu_lora/step-357 # experiment A: LoRA r=16 on Global-MMLU si, 1 epoch, merged (7.463B)
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 4 # vote over 4 cyclic option orders (+2.7 dev vs zero-shot, paired bootstrap)
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
training/configs/submission_medium_option_order.yaml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Medium-only option-order self-consistency (27 Oct): base Gemma 4 E4B text-only (7.463B, no adapter). For every medium question,
2
+ # thinking under 3 extra cyclic option orders; vote over the previous answer (candidate B's) and the 3 re-orderings, ties -> previous.
3
+ # Run with --levels medium and merge into candidate B (scripts/merge_predictions.py). Chosen only if eval/perm_sc.py says GO on the
4
+ # held-out stand-in (never on test).
5
+ model: models/gemma-4-E4B-it-text
6
+ lang: en
7
+ chat: true
8
+ method: logit
9
+ n_perms: 1
10
+ perm_mode: cyclic
11
+ seed: 1234
12
+ dtype: bfloat16
13
+ gpu_mem_gb: 100
14
+ token_budget: 32768
15
+ max_batch: 64
16
+ thinking_levels: []
17
+ think_max_new_tokens: 3072
18
+ perm_think_levels: [medium]
19
+ perm_think_orders: 3
20
+ prior_predictions: results/submissions/final_candidate_base_think_gated_sc.zip
training/configs/submission_pool_base_medium.yaml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Cross-model pooling, part 1 (27 Oct), MEDIUM ONLY: base Gemma 4 E4B, greedy thinking + 3 sampled paths on EVERY question
2
+ # (no agreement gate); every answer is saved to <output>.ballots.jsonl. scripts/pool_ballots.py votes over these ballots and the
3
+ # RFT2 model's (configs/submission_pool_rft2_medium.yaml) and merges into candidate B. Used only if eval/pool_decide.py says GO.
4
+ model: models/gemma-4-E4B-it-text
5
+ lang: en
6
+ chat: true
7
+ method: logit
8
+ n_perms: 4
9
+ perm_mode: cyclic
10
+ seed: 1234
11
+ dtype: bfloat16
12
+ gpu_mem_gb: 100
13
+ token_budget: 32768
14
+ max_batch: 64
15
+ thinking_levels: [medium]
16
+ think_max_new_tokens: 3072
17
+ sc_levels: [medium]
18
+ sc_samples: 3
19
+ sc_temperature: 0.8
20
+ sc_top_p: 0.95
21
+ sc_top_k: 64
training/configs/submission_pool_rft2_medium.yaml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Cross-model pooling, part 2 (27 Oct), MEDIUM ONLY: the RFT2 model (base + reasoning-trace LoRA, 7.50B parameters, adapter ON),
2
+ # greedy thinking + 3 sampled paths on every question (no gate); ballots saved for scripts/pool_ballots.py.
3
+ model: models/gemma-4-E4B-it-text
4
+ adapter: models/rft_v2/step-141/adapter
5
+ lang: en
6
+ chat: true
7
+ method: logit
8
+ n_perms: 4
9
+ perm_mode: cyclic
10
+ seed: 1234
11
+ dtype: bfloat16
12
+ gpu_mem_gb: 100
13
+ token_budget: 32768
14
+ max_batch: 64
15
+ thinking_levels: [medium]
16
+ think_max_new_tokens: 3072
17
+ sc_levels: [medium]
18
+ sc_samples: 3
19
+ sc_temperature: 0.8
20
+ sc_top_p: 0.95
21
+ sc_top_k: 64
training/configs/submission_rft2_medium.yaml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Candidate D (27 Oct), MEDIUM ONLY: base Gemma 4 E4B + LoRA adapter trained on the base model's own correct reasoning traces
2
+ # (dev minus held-out 400, Global-MMLU, synthetic Wikipedia MCQs; ~7.50B parameters). Thinking with the adapter ON; the fast answer
3
+ # for the agreement gate comes from the plain base model. Agreement-gated self-consistency. Run with --levels medium and merge into
4
+ # candidate B (scripts/merge_predictions.py). Chosen only if it passes the pre-registered held-out validation (eval/decide_rft.py).
5
+ model: models/gemma-4-E4B-it-text
6
+ adapter: models/rft_v2/step-ADAPTER/adapter
7
+ thinking_without_adapter: false
8
+ fast_without_adapter: true
9
+ lang: en
10
+ chat: true
11
+ method: logit
12
+ n_perms: 4
13
+ perm_mode: cyclic
14
+ seed: 1234
15
+ dtype: bfloat16
16
+ gpu_mem_gb: 100
17
+ token_budget: 32768
18
+ max_batch: 64
19
+ thinking_levels: [medium]
20
+ think_max_new_tokens: 3072
21
+ sc_levels: [medium]
22
+ sc_gate: disagree
23
+ sc_samples: 3
24
+ sc_temperature: 0.8
25
+ sc_top_p: 0.95
26
+ sc_top_k: 64
training/configs/submission_rft_think_gated_sc.yaml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Final candidate C (26-27 Oct): base Gemma 4 E4B + LoRA adapter trained on the base model's own correct reasoning traces
2
+ # (rejection sampling, SinhalaMMLU dev minus a held-out 400; ~7.50B parameters). Thinking for every question with the adapter ON;
3
+ # the fast one-step answer for the agreement gate comes from the plain base model (adapter off).
4
+ # Agreement-gated self-consistency on all levels, as candidate B. Chosen only if it passes the pre-registered held-out
5
+ # validation rule in eval/decide_rft.py (never on test).
6
+ model: models/gemma-4-E4B-it-text
7
+ adapter: models/rft_v1/step-ADAPTER/adapter
8
+ thinking_without_adapter: false
9
+ fast_without_adapter: true
10
+ lang: en
11
+ chat: true
12
+ method: logit
13
+ n_perms: 4
14
+ perm_mode: cyclic
15
+ seed: 1234
16
+ dtype: bfloat16
17
+ gpu_mem_gb: 100
18
+ token_budget: 32768
19
+ max_batch: 64
20
+ thinking_levels: [easy, medium, hard]
21
+ think_max_new_tokens: 3072
22
+ sc_levels: [easy, medium, hard]
23
+ sc_gate: disagree
24
+ sc_samples: 3
25
+ sc_temperature: 0.8
26
+ sc_top_p: 0.95
27
+ sc_top_k: 64
training/configs/submission_sub5_route.yaml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # sub5 (19 Oct): base Gemma 4 E4B + adapter A (LoRA r=16, extracted, ~0.04B); easy/medium fast 4-order vote WITH adapter; hard: thinking WITHOUT adapter (academic proxy: base thinking 79.5 vs A fast 60.1). Never chosen on test.
3
+ model: models/gemma-4-E4B-it-text # base, 7.463B
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 4 # vote over 4 cyclic option orders (+2.7 dev vs zero-shot, paired bootstrap)
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
14
+ thinking_levels: [hard]
15
+ think_max_new_tokens: 3072
16
+ adapter: models/adapter_A # model A as a separate LoRA adapter
17
+ thinking_without_adapter: true
training/configs/submission_sub6_think_medhard.yaml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # sub6 (20 Oct): as sub5, plus base-model thinking (adapter off) for medium. Evidence: non-academic Global-MMLU proxy +12.3 [+6.0, +18.3] and easy-style dev not worse (+0.8) vs model A fast. Never chosen on test.
3
+ model: models/gemma-4-E4B-it-text # base, 7.463B
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 4 # vote over 4 cyclic option orders (+2.7 dev vs zero-shot, paired bootstrap)
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
14
+ thinking_levels: [medium, hard]
15
+ think_max_new_tokens: 3072
16
+ adapter: models/adapter_A # model A as a separate LoRA adapter
17
+ thinking_without_adapter: true
training/configs/submission_v2.yaml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Everything the offline submission pipeline needs (inference/predict.py).
2
+ # v2: recipe validated on dev via A (Global-MMLU LoRA, +2.7) and B (dev 5-fold LoRA, +2.8); never chosen on test.
3
+ model: models/sft_v2_gmmlu_dev/step-415 # v2: LoRA r=16 on Global-MMLU si + all SinhalaMMLU dev, 1 epoch, merged (7.463B)
4
+ lang: en
5
+ chat: true
6
+ method: logit
7
+ n_perms: 4 # vote over 4 cyclic option orders (+2.7 dev vs zero-shot, paired bootstrap)
8
+ perm_mode: cyclic
9
+ seed: 1234
10
+ dtype: bfloat16
11
+ gpu_mem_gb: 100
12
+ token_budget: 32768
13
+ max_batch: 64
training/configs/train/cpt_pilot.yaml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Experiment C: 30M-token pilot of continued pretraining (lower LR to limit forgetting), checkpoints at 15M/30M.
2
+ mode: cpt
3
+ model: models/gemma-4-E4B-it-text
4
+ out_dir: models/cpt_pilot
5
+ data_dir: data/corpus/cpt_v1
6
+ seq_len: 2048
7
+ micro_batch: 2
8
+ grad_accum: 32 # 131k tokens per optimizer step
9
+ max_tokens: 30000000
10
+ epochs: 1
11
+ lr: 5.0e-6
12
+ min_lr_ratio: 0.1
13
+ warmup_steps: 20
14
+ weight_decay: 0.0
15
+ max_grad_norm: 1.0
16
+ freeze_embeddings: true
17
+ ckpt_every: 2
18
+ compile: true
19
+ loss: liger
20
+ seed: 1234
21
+ gpu_mem_gb: 100
22
+ save_every_tokens: 15000000
23
+ keep_checkpoints: 3
24
+ log_every: 10
training/configs/train/cpt_v1.yaml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Continued pretraining on data/corpus/cpt_v1 (scripts/select_cpt_subset.py). Fastest measured safe setting.
2
+ mode: cpt
3
+ model: models/gemma-4-E4B-it-text
4
+ out_dir: models/cpt_v1
5
+ data_dir: data/corpus/cpt_v1
6
+ seq_len: 2048
7
+ micro_batch: 2
8
+ grad_accum: 32 # 131k tokens per optimizer step
9
+ max_tokens: 300000000
10
+ epochs: 1
11
+ lr: 1.0e-5
12
+ min_lr_ratio: 0.1
13
+ warmup_steps: 50
14
+ weight_decay: 0.0
15
+ max_grad_norm: 1.0
16
+ freeze_embeddings: true
17
+ ckpt_every: 2
18
+ compile: true
19
+ loss: liger
20
+ seed: 1234
21
+ gpu_mem_gb: 100
22
+ save_every_tokens: 50000000
23
+ keep_checkpoints: 3
24
+ log_every: 10
training/configs/train/rft_trace.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Reasoning-preserving fine-tuning (21-26 Oct): LoRA r=16 on the base model's OWN correct thinking traces for SinhalaMMLU
2
+ # dev questions (scripts/gen_traces.py), loss on the trace only. The 400-question dev sample is held out for validation.
3
+ mode: trace
4
+ model: models/gemma-4-E4B-it-text
5
+ out_dir: models/rft_v1
6
+ data: [data/synth/rft_traces.jsonl]
7
+ lang: en
8
+ max_len: 4096
9
+ epochs: 1
10
+ batch_size: 16
11
+ micro_tokens: 12000
12
+ lr: 1.0e-4
13
+ min_lr_ratio: 0.1
14
+ warmup_steps: 5
15
+ weight_decay: 0.0
16
+ max_grad_norm: 1.0
17
+ lora: {r: 16, alpha: 32, dropout: 0.0, targets: all-linear}
18
+ ckpt_every: 1
19
+ compile: false
20
+ seed: 1234
21
+ gpu_mem_gb: 100
22
+ keep_checkpoints: 1
23
+ log_every: 5
training/configs/train/rft_trace2.yaml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Round 2 (27 Oct): LoRA r=16 on the base model OWN correct thinking traces: SinhalaMMLU dev (minus held-out 400) + Global-MMLU (humanities/social/other/business) + synthetic Wikipedia MCQs.
2
+ mode: trace
3
+ model: models/gemma-4-E4B-it-text
4
+ out_dir: models/rft_v2
5
+ data: [data/synth/rft_traces.jsonl, data/synth/rft2_traces.jsonl]
6
+ lang: en
7
+ max_len: 4096
8
+ epochs: 1
9
+ batch_size: 16
10
+ micro_tokens: 12000
11
+ lr: 1.0e-4
12
+ min_lr_ratio: 0.1
13
+ warmup_steps: 5
14
+ weight_decay: 0.0
15
+ max_grad_norm: 1.0
16
+ lora: {r: 16, alpha: 32, dropout: 0.0, targets: all-linear}
17
+ ckpt_every: 1
18
+ compile: false
19
+ seed: 1234
20
+ gpu_mem_gb: 100
21
+ keep_checkpoints: 1
22
+ log_every: 5
training/configs/train/sft_gmmlu.yaml ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Step 4: fine-tune text-only Gemma 4 E4B on Global-MMLU si MCQs (scripts/build_sft_gmmlu.py), answer-digit loss.
2
+ mode: sft
3
+ model: models/gemma-4-E4B-it-text
4
+ out_dir: models/sft_gmmlu_v1
5
+ data: [data/sft/gmmlu_si_train.jsonl]
6
+ lang: en
7
+ chat: true
8
+ permute_options: true
9
+ epochs: 2
10
+ batch_size: 32 # questions per optimizer step
11
+ micro_tokens: 16384 # padded tokens per forward pass
12
+ lr: 1.0e-5
13
+ min_lr_ratio: 0.1
14
+ warmup_steps: 20
15
+ weight_decay: 0.0
16
+ max_grad_norm: 1.0
17
+ freeze_embeddings: true # Gemma per-layer embedding tables (3.5B) frozen; 3.97B trained
18
+ ckpt_every: 1
19
+ compile: false # variable SFT lengths would recompile per shape
20
+ loss: liger
21
+ seed: 1234
22
+ gpu_mem_gb: 100
23
+ keep_checkpoints: 2
24
+ log_every: 10
training/configs/train/sft_lora.yaml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Gentle fine-tuning: LoRA r=16 on all linear layers (base frozen, merged at save -> 7.463B params).
2
+ # Used for experiment A (Global-MMLU, 1 epoch) and B (SinhalaMMLU dev 5-fold CV, --data/--out per fold).
3
+ mode: sft
4
+ model: models/gemma-4-E4B-it-text
5
+ out_dir: models/sft_lora
6
+ data: [data/sft/gmmlu_si_train.jsonl]
7
+ lang: en
8
+ chat: true
9
+ permute_options: true
10
+ epochs: 1
11
+ batch_size: 32
12
+ micro_tokens: 16384
13
+ lr: 1.0e-4
14
+ min_lr_ratio: 0.1
15
+ warmup_steps: 10
16
+ weight_decay: 0.0
17
+ max_grad_norm: 1.0
18
+ lora: {r: 16, alpha: 32, dropout: 0.0, targets: all-linear}
19
+ ckpt_every: 1
20
+ compile: false
21
+ loss: liger
22
+ seed: 1234
23
+ gpu_mem_gb: 100
24
+ keep_checkpoints: 1
25
+ log_every: 10