Voltline's picture
Release VimeML V4.2 epoch20 FP32 and Core ML INT8 (GPL-2.0)
c83c617 verified
Raw History Blame Contribute Delete
1.69 kB
"""Evaluate a C1 checkpoint only on the frozen nonblind snapshots."""
import argparse
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT / "src"))
def main():
from vimeml.posttraining.infer import (TRACKS, read_snapshot, load_conditional_checkpoint,
fp32_evaluation, evaluate_snapshot)
from vimeml.training.data import write_json
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--checkpoint", type=Path, required=True)
parser.add_argument("--output", type=Path, required=True)
parser.add_argument("--device", choices=("cpu", "cuda"), default="cpu")
parser.add_argument("--tracks", choices=tuple(TRACKS), nargs="+", default=["standard-development"])
parser.add_argument("--condition", choices=("context_reading", "empty_reading", "empty_context"), default="context_reading")
args = parser.parse_args()
if args.output.exists() and any(args.output.iterdir()):
parser.error("Use a new evaluation output directory")
rows = {track: read_snapshot(track) for track in args.tracks}
model, codec, metadata = load_conditional_checkpoint(args.checkpoint,
ROOT / "artifacts/tokenizers/v4-a/ja-unigram-8192/tokenizer.model", args.device)
report = {"checkpoint": metadata, "condition": args.condition, "tracks": {}}
with fp32_evaluation(model):
for track, data in rows.items():
report["tracks"][track] = evaluate_snapshot(model, codec, data, args.output / track, args.condition)
write_json(args.output / "summary.json", report)
print(report)
if __name__ == "__main__":
main()