Download eval/recompute.py from SinhalaMMLU-SharedTask/team-nexus: direct link, hf CLI and curl.
- Browser
- Download file 1.37 kB
-
https://huggingface.co/SinhalaMMLU-SharedTask/team-nexus/resolve/main/eval/recompute.py
- Command line
-
hf download hf://SinhalaMMLU-SharedTask/team-nexus/eval/recompute.py
-
curl -L -o recompute.py https://huggingface.co/SinhalaMMLU-SharedTask/team-nexus/resolve/main/eval/recompute.py
1.37 kB
| """Recompute metrics.json / report.md of finished runs from their saved predictions (no model needed). | |
| Use after changing data grouping or metrics code. Usage: python -m eval.recompute results/base_* | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import sys | |
| from pathlib import Path | |
| from .common import read_jsonl | |
| from .metrics import markdown_report | |
| from .run_eval import metrics_by_dataset, resolve_data | |
| def main() -> None: | |
| for d in map(Path, sys.argv[1:]): | |
| if not (d / "metrics.json").exists(): | |
| continue | |
| old = json.loads((d / "metrics.json").read_text()) | |
| records = read_jsonl(d / "predictions.jsonl") | |
| uids = {r["uid"] for r in records} | |
| items = {r["uid"]: r for name in old["run"]["args"]["data"] for r in read_jsonl(resolve_data(name)) if r["uid"] in uids} | |
| missing = uids - items.keys() | |
| if missing: | |
| print(f"{d.name}: {len(missing)} predicted uids not in current data, skipped") | |
| continue | |
| new = {"by_dataset": metrics_by_dataset(items, records), "run": old["run"]} | |
| (d / "metrics.json").write_text(json.dumps(new, indent=2, ensure_ascii=False)) | |
| (d / "report.md").write_text("\n".join(markdown_report(f"{d.name} / {k}", m) for k, m in new["by_dataset"].items())) | |
| print(f"{d.name}: recomputed") | |
| if __name__ == "__main__": | |
| main() | |