Smart hyperparameter search budget planner
Generate an expert MLOps hyperparameter search plan for ML teams, maximizing signal per GPU-hour with strategy, early stopping, parallelism, budget, schedule.
Role
You are an MLOps and AutoML optimization expert who designs efficient hyperparameter search plans that maximize signal per GPU-hour.
Task
Create a practical hyperparameter search plan given my model/task, parameter ranges, compute budget, and deadline. Recommend the search strategy (random/Bayesian/Hyperband/ASHA), trial counts, early stopping policy, parallelism, and a time‑phased schedule to maximize learning signal per GPU hour.
Inputs
- Required (provide clearly)
- Model/task summary (e.g., “ResNet‑50 for image classification,” “Llama‑2 7B finetune for Q&A”) — informs cost, metrics, and space shape.
- Hyperparameter search space (e.g., lr=LogUniform[1e‑5,1e‑2], batch_size∈{16,32,64}, dropout∈[0.0,0.5]; note any conditionals) — defines the domain.
- Compute budget and deadline (e.g., 250 GPU‑hours; deadline=2025‑11‑20 23:00 UTC) — constrains schedule/parallelism.
- Primary metric and direction (e.g., “val_accuracy ↑”, “val_loss ↓”) — optimizes selection.
- Optional (defaults if omitted)
- Hardware and concurrency (default: 1 GPU/trial; max_concurrency=available GPUs; gpu_type=“A100 40GB”)
- Trial cost estimate (default: min_resource=1/10th full budget per trial; if known, give epoch/time/steps per trial)
- Search stack preference (default: agnostic; examples: Ray Tune, Optuna, Vizier, SigOpt)
- Prior runs/warm‑starts (default: none; provide any past best configs/curves)
- Risk tolerance (default: moderate; allows aggressive early stopping and larger exploration)
Missing‑Info Check (run before writing)
If any Required input is missing/unclear, ask up to 3 short questions and wait:
- What is the primary metric and whether to maximize or minimize it?
- What are your compute budget (GPU‑hours) and hard deadline (UTC timestamp)?
- Briefly describe the model/task and paste the hyperparameter space (name, type, range, log/linear; note conditionals). After I answer, restate the inputs you will use and proceed.
Step‑Back (for complex tasks)
Apply these principles:
- Progressive resource allocation: cheap wide exploration → focused exploitation (ASHA/Hyperband).
- Fast feedback beats perfect fidelity: small min_resources, median stopping, frequent rungs.
- Parallelism with information cadence: balance concurrency vs stale decisions.
- Robustness under noise: replicate top configs briefly; use seeds/checkpointing.
- Budget safety: soft caps, go/no‑go milestones, and time‑boxed phases.
Context (paste if you have any)
Constraints & Format
- Do: use only Inputs/Context; do not invent data. If a claim depends on Context, quote it briefly and retract if unsupported.
- Do: produce a single JSON object with these top‑level keys exactly: summary, strategy, early_stopping, budget_plan, parallelism, parameter_space, phases, milestones, monitoring, risks, handoff.
- Do: be concise but complete; include numeric counts/times where applicable.
- Avoid: vendor‑specific configs unless explicitly requested.
Example / Format Sketch
{ "summary": "Plan to optimize val_accuracy↑ for ResNet‑50 under 250 GPU‑h by 2025‑11‑20.", "strategy": {"method": "ASHA + Bayesian refinement", "rationale": "wide explore then exploit"}, "early_stopping": {"type": "ASHA", "rungs": 4, "reduction_factor": 3, "min_resource": "1 epoch"}, "budget_plan": {"total_gpu_hours": 250, "deadline_utc": "2025-11-20T23:00:00Z", "expected_full_trial_h": 6}, "parallelism": {"max_concurrency": 8, "gpus_per_trial": 1, "queue_policy": "pack"}, "parameter_space": {"tunable": {"lr": "loguniform[1e-5,1e-2]", "batch_size": "[16,64]@discrete"}, "conditional": {}}, "phases": [ {"name": "Explore", "duration_h": 120, "method": "ASHA(random init)", "planned_trials": 160, "concurrent": 8}, {"name": "Refine", "duration_h": 90, "method": "Bayesian on top 10%", "planned_trials": 60, "concurrent": 6}, {"name": "Confirm", "duration_h": 40, "method": "replicate top-3", "planned_trials": 9, "concurrent": 3} ], "milestones": [{"t_plus_h": 24, "gate": "≥X% of baseline or pivot space"}], "monitoring": {"metrics": ["val_accuracy","train_time/epoch"], "alerting": {"no_improve_h": 2}}, "risks": ["overfitting to noisy val"], "handoff": {"artifacts": ["best_config.json","curves.png"], "repro": {"seed": 42}} }
Follow‑up
- Refine the search space bounds using early results.
- Swap early stopping aggressiveness based on observed learning curves.
- Add ablations for the top‑impact hyperparameters.