fix(ml): improve TPE exploitation with Scott bandwidth, best-trial injection
- Replace Silverman's bandwidth (h = 1.06σn^(-1/5)) with Scott's rule (h = 0.7σn^(-1/(d+4))) for tighter kernels in high-D parameter spaces - Add best-trial injection: always evaluate EI at best known point plus 5 small perturbations (±5%), preventing optimizer from forgetting peaks - Scale n_candidates dynamically: max(256, 8*n_dims) instead of fixed 100 - Reduce gamma from 0.25 to 0.15 when trials < 50 for tighter exploitation - Wire model_name through PSO/TPE paths for per-trial Prometheus metrics Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -136,6 +136,7 @@ fn run_tft_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("tft")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("tft", 0.0, args.trials as f64);
|
||||
@@ -195,6 +196,7 @@ fn run_mamba2_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("mamba2")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("mamba2", 0.0, args.trials as f64);
|
||||
@@ -255,6 +257,7 @@ fn run_liquid_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("liquid")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("liquid", 0.0, args.trials as f64);
|
||||
@@ -315,6 +318,7 @@ fn run_tggn_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("tggn")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("tggn", 0.0, args.trials as f64);
|
||||
@@ -375,6 +379,7 @@ fn run_tlob_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("tlob")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("tlob", 0.0, args.trials as f64);
|
||||
@@ -435,6 +440,7 @@ fn run_kan_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("kan")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("kan", 0.0, args.trials as f64);
|
||||
@@ -495,6 +501,7 @@ fn run_xlstm_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("xlstm")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("xlstm", 0.0, args.trials as f64);
|
||||
@@ -555,6 +562,7 @@ fn run_diffusion_hyperopt(args: &Args) -> Result<Value> {
|
||||
.max_trials(args.trials)
|
||||
.n_initial(args.n_initial)
|
||||
.seed(args.seed)
|
||||
.model_name("diffusion")
|
||||
.build();
|
||||
|
||||
training_metrics::set_hyperopt_trial("diffusion", 0.0, args.trials as f64);
|
||||
|
||||
Reference in New Issue
Block a user