| |
| from __future__ import annotations |
|
|
| import argparse |
| 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.experiments.baselines import ( |
| BaselineConfig, |
| list_baselines, |
| train_baseline, |
| ) |
|
|
|
|
| def main(argv: list[str] | None = None) -> int: |
| parser = argparse.ArgumentParser(description="Run a DoVLA-CIL baseline experiment.") |
| parser.add_argument("--baseline", choices=list_baselines(), required=True) |
| parser.add_argument("--dataset", type=Path, required=True) |
| parser.add_argument("--out", type=Path, required=True) |
| parser.add_argument("--backend", choices=["toy"], default="toy") |
| parser.add_argument("--epochs", type=int, default=1) |
| parser.add_argument("--batch-groups", type=int, default=4) |
| parser.add_argument("--records-per-group", type=int, default=8) |
| parser.add_argument("--hidden-dim", type=int, default=128) |
| parser.add_argument("--lr", type=float, default=1e-3) |
| parser.add_argument("--device", default="auto") |
| parser.add_argument("--seed", type=int, default=0) |
| parser.add_argument("--shard-size", type=int, default=1024) |
| parser.add_argument("--eval-num-tasks", type=int, default=6) |
| parser.add_argument("--eval-k", type=int, default=4) |
| args = parser.parse_args(argv) |
|
|
| summary = train_baseline( |
| BaselineConfig( |
| baseline=args.baseline, |
| dataset=args.dataset, |
| out=args.out, |
| backend=args.backend, |
| epochs=args.epochs, |
| batch_groups=args.batch_groups, |
| records_per_group=args.records_per_group, |
| hidden_dim=args.hidden_dim, |
| lr=args.lr, |
| device=args.device, |
| seed=args.seed, |
| shard_size=args.shard_size, |
| eval_num_tasks=args.eval_num_tasks, |
| eval_k=args.eval_k, |
| ) |
| ) |
| eval_metrics = summary["eval"] |
| print(f"baseline={summary['baseline']}") |
| print(f"prepared_dataset={summary['prepared_dataset']}") |
| print(f"checkpoint={summary['checkpoint']}") |
| print( |
| "task_success_rate={task_success_rate:.4f} " |
| "pairwise_ranking_accuracy={pairwise_ranking_accuracy:.4f}".format(**eval_metrics) |
| ) |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |
|
|