InferScale-Sim / scripts /calibrate_profiles.py
ArchitSharma's picture
Finalize InferScale research consolidation
9916edb
Raw
History Blame Contribute Delete
1.19 kB
from __future__ import annotations
import argparse
import json
from pathlib import Path
from inferscale.measurements import calibrate_measurements
def main() -> None:
parser = argparse.ArgumentParser(description="Fit timing scale factors and validate on held-out serving measurements.")
parser.add_argument("cases", type=Path, help="Normalized measurement_cases.json or a raw list of InferScale cases.")
parser.add_argument("--holdout", type=float, default=0.33)
parser.add_argument("--seed", type=int, default=7)
parser.add_argument("--output", type=Path, default=Path("calibration_result.json"))
args = parser.parse_args()
payload = json.loads(args.cases.read_text())
cases = payload.get("cases", payload) if isinstance(payload, dict) else payload
result = calibrate_measurements(cases, args.holdout, args.seed)
args.output.write_text(json.dumps(result, indent=2) + "\n")
print(f"Validation mode: {result['validation_mode']}")
print(f"Baseline MAPE: {result['baseline']['mape_pct']:.2f}%")
print(f"Calibrated MAPE: {result['calibrated']['mape_pct']:.2f}%")
print(f"Wrote {args.output}")
if __name__ == "__main__":
main()