Voltline's picture
Release VimeML V2.1 step40000 FP32 and Core ML INT8 (GPL-2.0)
29f25be verified
Raw History Blame Contribute Delete
1.82 kB
"""Pair frozen V1/V2 case outcomes and compute exact McNemar statistics."""
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT / "src"))
from vimeml.training.data import write_json
from vimeml.benchmarks.comparison import paired, rows
def main():
out = ROOT / "outputs/ime-eval/tiny-ja-v2.0-comparison"
out.mkdir(parents=True, exist_ok=True)
source = ROOT / "artifacts/models/tiny-ja-v2.0-e16k-d320-l6"
full = json.loads((source / "full-validation.json").read_text(encoding="utf-8"))
v1_bpc = 3.4736559
result = {
"model_selection": "best.pt step 375000; minimum full BPC among last/subset-best and strongest dev result",
"v1_bpc": v1_bpc,
"v2_best_bpc": full["best"]["bpc"],
"v2_last_bpc": full["last"]["bpc"],
"relative_bpc_reduction": 1 - full["best"]["bpc"] / v1_bpc,
"benchmarks": {},
"test_split_used": False,
"note": "Two small regression sets; larger frozen dev/blind sets are needed for robust selection.",
}
for name, v1_directory in [
("ajimee", "tiny-ja-v1-ajimee"),
("development", "tiny-ja-v1-dev-v2-scores"),
]:
before = rows(ROOT / "outputs/ime-eval" / v1_directory / "scores.jsonl")
best = rows(ROOT / "outputs/ime-eval" / f"tiny-ja-v2.0-best-{name}" / "scores.jsonl")
last = rows(source / "epoch-evaluation/epoch-4" / name / "scores.jsonl")
result["benchmarks"][name] = {"best": paired(before, best), "last": paired(before, last)}
write_json(out / "comparison.json", result)
print(
json.dumps(
{k: {m: x["paired"] for m, x in v.items()} for k, v in result["benchmarks"].items()},
indent=2,
)
)
if __name__ == "__main__":
main()