diff --git a/config/training/dqn-production.toml b/config/training/dqn-production.toml index 3771c5197..8ec639f93 100644 --- a/config/training/dqn-production.toml +++ b/config/training/dqn-production.toml @@ -91,6 +91,7 @@ her_ratio = 0.2 cql_alpha = 1.0 curiosity_weight = 0.1 iqn_lambda = 0.25 +num_quantiles = 32 spectral_norm_sigma_max = 1.5 spectral_decoupling_lambda = 0.01 # With per-component clipping removed, raw gradient norms are ~4000. diff --git a/crates/ml/examples/evaluate_baseline.rs b/crates/ml/examples/evaluate_baseline.rs index b40622b10..7c45a88a0 100644 --- a/crates/ml/examples/evaluate_baseline.rs +++ b/crates/ml/examples/evaluate_baseline.rs @@ -918,7 +918,7 @@ fn evaluate_dqn_fold( let gamma = hp_f64(hp, "gamma").unwrap_or(0.95); (10.0 / (1.0 - gamma) * 1.2).clamp(20.0, 300.0) }) as f32, - iqn_num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(64), + iqn_num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(32), ..DQNConfig::default() }; @@ -1086,7 +1086,7 @@ fn evaluate_dqn_fold_gpu( let gamma = hp_f64(hp, "gamma").unwrap_or(0.95); (10.0 / (1.0 - gamma) * 1.2).clamp(20.0, 300.0) }) as f32, - iqn_num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(64), + iqn_num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(32), ..DQNConfig::default() }; diff --git a/crates/ml/examples/train_baseline_rl.rs b/crates/ml/examples/train_baseline_rl.rs index 2f52e0874..f75517aa5 100644 --- a/crates/ml/examples/train_baseline_rl.rs +++ b/crates/ml/examples/train_baseline_rl.rs @@ -402,7 +402,7 @@ fn build_dqn_hyperparams( (10.0_f64 / (1.0 - gamma) * 1.2).clamp(20.0, 300.0) }), noisy_sigma_init: hp_f64(hp, "noisy_sigma_init").unwrap_or(0.5), - num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(64), + num_quantiles: hp_usize(hp, "num_quantiles").unwrap_or(32), noisy_epsilon_floor: hp_f64(hp, "noisy_epsilon_floor").unwrap_or(0.05).into(), hold_penalty_weight: hp_f64(hp, "hold_penalty_weight").unwrap_or(0.01), max_position_absolute: hp_f64(hp, "max_position_absolute").unwrap_or(2.0),