fix(hyperopt): auto-bump trials to n_initial+1 instead of crashing

When trials=0 (or any value <= n_initial), both RL and supervised
hyperopt binaries now auto-bump to n_initial+1 instead of bailing.
Previously the RL binary bumped to 5 which equalled n_initial=5,
triggering "trials must be greater than n_initial" error. The
supervised binary lacked the bump entirely and just crashed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2026-03-12 21:55:56 +01:00
parent 12d85993cf
commit 2086405352
2 changed files with 16 additions and 18 deletions

View File

@@ -509,19 +509,15 @@ fn main() -> Result<()> {
);
}
// Enforce minimum 5 trials for meaningful hyperopt
if args.trials < 5 {
info!("Trials {} below minimum — bumping to 5", args.trials);
args.trials = 5;
}
// Verify trials > n_initial (ArgminOptimizer requirement)
if args.trials <= args.n_initial {
anyhow::bail!(
"trials ({}) must be greater than n_initial ({})",
args.trials,
args.n_initial
// Enforce trials > n_initial (ArgminOptimizer needs at least n_initial
// LHS exploration rounds + 1 TPE-guided trial to be meaningful)
let min_trials = args.n_initial + 1;
if args.trials < min_trials {
info!(
"Trials {} below minimum (n_initial {} + 1) — bumping to {}",
args.trials, args.n_initial, min_trials
);
args.trials = min_trials;
}
// Create output directory

View File

@@ -613,7 +613,7 @@ fn main() -> Result<()> {
metrics_server::start_metrics_server(9094);
training_metrics::set_active_workers(1.0);
let args = Args::parse();
let mut args = Args::parse();
// Signal hyperopt mode active — will be cleared at exit
let hyperopt_model_label = args.model.clone();
@@ -654,12 +654,14 @@ fn main() -> Result<()> {
info!("Models to optimize: {:?}", models);
if args.trials <= args.n_initial {
anyhow::bail!(
"trials ({}) must be greater than n_initial ({})",
args.trials,
args.n_initial
// Enforce trials > n_initial (ArgminOptimizer needs LHS exploration + ≥1 TPE trial)
let min_trials = args.n_initial + 1;
if args.trials < min_trials {
info!(
"Trials {} below minimum (n_initial {} + 1) — bumping to {}",
args.trials, args.n_initial, min_trials
);
args.trials = min_trials;
}
if let Some(parent) = args.output.parent() {