from __future__ import annotations import argparse from pathlib import Path from bayes_gp_llmops.tuning.optuna_runner import run_optuna_study def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( description="Run Optuna hyperparameter tuning for the AG News classifier." ) parser.add_argument("--data-config", type=Path, default=Path("configs/data.yaml")) parser.add_argument("--model-config", type=Path, default=Path("configs/model.yaml")) parser.add_argument("--train-config", type=Path, default=Path("configs/train.yaml")) parser.add_argument("--tune-config", type=Path, default=Path("configs/tune.yaml")) parser.add_argument("--device", type=str, default=None) parser.add_argument("--n-trials", type=int, default=None) parser.add_argument("--timeout", type=int, default=None) parser.add_argument("--debug", action="store_true") return parser.parse_args() def main() -> int: args = parse_args() artifacts = run_optuna_study( data_config_path=args.data_config, model_config_path=args.model_config, train_config_path=args.train_config, tune_config_path=args.tune_config, device_override=args.device, n_trials_override=args.n_trials, timeout_override=args.timeout, debug_override=True if args.debug else None, ) print(f"study_storage={artifacts.storage_path}") print(f"study_output_dir={artifacts.output_dir}") print(f"best_trial_number={artifacts.best_trial_number}") print(f"best_value={artifacts.best_value:.6f}") print(f"best_params={artifacts.best_params}") print(f"best_params_path={artifacts.best_params_path}") print(f"trial_results_path={artifacts.trial_results_path}") print(f"study_summary_path={artifacts.study_summary_path}") return 0 if __name__ == "__main__": raise SystemExit(main())