| |
| from __future__ import annotations |
|
|
| import argparse |
| import json |
| import sys |
| from pathlib import Path |
|
|
| PROJECT_ROOT = Path(__file__).resolve().parents[1] |
| if str(PROJECT_ROOT) not in sys.path: |
| sys.path.insert(0, str(PROJECT_ROOT)) |
|
|
| from dovla_cil.eval.lattice_eval import evaluate_lattice_checkpoint |
|
|
|
|
| def main(argv: list[str] | None = None) -> int: |
| parser = argparse.ArgumentParser( |
| description="Evaluate a DoVLA checkpoint on all held-out same-state lattice edges." |
| ) |
| parser.add_argument("--checkpoint", type=Path, required=True) |
| parser.add_argument("--dataset", type=Path, required=True) |
| parser.add_argument("--out", type=Path, required=True) |
| parser.add_argument("--device", default="cpu", help="Device to use: 'cpu' or 'cuda'") |
| parser.add_argument( |
| "--training-k", |
| type=int, |
| default=None, |
| help="Training intervention multiplicity when evaluating on a common fixed-K benchmark.", |
| ) |
| parser.add_argument( |
| "--all-groups", |
| action="store_true", |
| help="Evaluate every group, for a separate state-disjoint benchmark dataset.", |
| ) |
| args = parser.parse_args(argv) |
| result = evaluate_lattice_checkpoint( |
| args.checkpoint, |
| args.dataset, |
| output_path=args.out, |
| device=args.device, |
| training_k=args.training_k, |
| all_groups=args.all_groups, |
| ) |
| print(json.dumps(result, indent=2)) |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |
|
|