File size: 2,408 Bytes
adc02fa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #!/usr/bin/env python
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 ( # noqa: E402
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())
|