Files
aituner/runs/action-aware-v0/action_aware_client.py

64 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""Add explicit MBBT/config provenance to the accepted Phase-6 replay client."""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
PHASE6 = Path(__file__).resolve().parents[1] / "opprof-phase6"
sys.path.insert(0, str(PHASE6))
import opprof_phase6_client as base # noqa: E402
def parser() -> argparse.ArgumentParser:
result = argparse.ArgumentParser()
result.add_argument("command", choices=("warmup", "run-anchor"))
result.add_argument("--study", required=True)
result.add_argument("--cell", required=True)
result.add_argument("--anchor", type=float, required=True)
result.add_argument("--tp", type=int, required=True)
result.add_argument("--mns", type=int, required=True)
result.add_argument("--mbbt", type=int, required=True)
result.add_argument("--base-url", required=True)
result.add_argument("--result-dir", required=True)
result.add_argument("--disable-slo-early-stop", action="store_true")
return result
def main() -> None:
args = parser().parse_args()
result = base.run_replay(args, warmup=args.command == "warmup")
result.update(
{
"schema": "action-aware-pilot-result-v0",
"config_id": args.cell,
"mbbt": args.mbbt,
}
)
base.atomic_json(Path(args.result_dir) / "result.json", result)
print(
json.dumps(
{
key: result[key]
for key in (
"config_id",
"mns",
"mbbt",
"kind",
"pass_rate",
"feasible",
)
},
sort_keys=True,
)
)
if __name__ == "__main__":
main()