cli.py (59 lines of code) (raw):

import argparse import logging from trending_deploy.main import Trending def parse_args(): parser = argparse.ArgumentParser( description="Deploy trending models based on optimization criteria" ) parser.add_argument( "--tasks", type=str, nargs="+", help="List of tasks to consider. If not provided, defaults to predefined tasks." ) parser.add_argument( "--max-models-per-task", type=int, default=300, help="Maximum number of models to consider per task. Default: 200" ) parser.add_argument( "--budget", type=int, default=10_000, help="Budget for model deployment in monthly dollar spend. Default: 1000" ) parser.add_argument( "--filename", type=str, help="Path to save selected models as JSON. If not provided, models won't be saved to file." ) parser.add_argument( "--dry", action="store_true", help="Run in dry run mode. No models will be deployed." ) parser.add_argument( "--verbose", action="store_true", help="Enable verbose output" ) return parser.parse_args() def main(): args = parse_args() # Configure logging log_level = logging.DEBUG if args.verbose else logging.INFO logging.basicConfig( format="%(asctime)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=log_level ) # Initialize Trending with provided arguments trending = Trending( tasks=args.tasks, max_models_per_task=args.max_models_per_task, budget=args.budget ) # Run the trending model selection and deployment selected_models, max_reward, spent_budget = trending(filename=args.filename, deploy_models=not args.dry) logging.info(f"Selected {len(selected_models)} models with total reward of {max_reward}") logging.info(f"Spent budget: ${spent_budget:,} out of ${args.budget:,}") if __name__ == "__main__": main()