From af60ddf837d19aed9de3a3ead9b4e97bdef30020 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Wed, 8 Apr 2026 11:13:58 +0200 Subject: [PATCH] =?UTF-8?q?fix:=2010x=20stronger=20aux=20optimizer=20(LR?= =?UTF-8?q?=200.001=E2=86=920.01,=20weight=200.01=E2=86=920.1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With separate optimizer, no gradient competition — safe to increase. Smoke test shows within-group differentiation starting (S100≠S25≠L50). Co-Authored-By: Claude Opus 4.6 (1M context) --- config/training/dqn-hyperopt.toml | 4 ++-- config/training/dqn-localdev.toml | 2 +- config/training/dqn-production.toml | 2 +- config/training/dqn-smoketest.toml | 2 +- crates/ml/src/cuda_pipeline/gpu_dqn_trainer.rs | 2 +- crates/ml/src/trainers/dqn/config.rs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config/training/dqn-hyperopt.toml b/config/training/dqn-hyperopt.toml index e7cb50794..478f6ad86 100644 --- a/config/training/dqn-hyperopt.toml +++ b/config/training/dqn-hyperopt.toml @@ -139,7 +139,7 @@ exit_timing_weight = 0.05 ofi_reward_weight = 0.2 kelly_sizing_weight = 0.1 reward_noise_scale = 0.05 -exposure_aux_weight = 0.01 +exposure_aux_weight = 0.1 exposure_aux_warmup_epochs = 5 [fixed] @@ -182,5 +182,5 @@ exit_timing_weight = 0.05 ofi_reward_weight = 0.2 kelly_sizing_weight = 0.1 reward_noise_scale = 0.05 -exposure_aux_weight = 0.01 +exposure_aux_weight = 0.1 exposure_aux_warmup_epochs = 5 diff --git a/config/training/dqn-localdev.toml b/config/training/dqn-localdev.toml index dacb6f82f..7ebd67609 100644 --- a/config/training/dqn-localdev.toml +++ b/config/training/dqn-localdev.toml @@ -131,5 +131,5 @@ exit_timing_weight = 0.05 ofi_reward_weight = 0.2 kelly_sizing_weight = 0.1 reward_noise_scale = 0.05 -exposure_aux_weight = 0.01 +exposure_aux_weight = 0.1 exposure_aux_warmup_epochs = 5 diff --git a/config/training/dqn-production.toml b/config/training/dqn-production.toml index f10e07db7..de179d569 100644 --- a/config/training/dqn-production.toml +++ b/config/training/dqn-production.toml @@ -142,5 +142,5 @@ exit_timing_weight = 0.05 ofi_reward_weight = 0.2 kelly_sizing_weight = 0.1 reward_noise_scale = 0.05 -exposure_aux_weight = 0.01 +exposure_aux_weight = 0.1 exposure_aux_warmup_epochs = 5 diff --git a/config/training/dqn-smoketest.toml b/config/training/dqn-smoketest.toml index 7ad05e31e..a36ea24b9 100644 --- a/config/training/dqn-smoketest.toml +++ b/config/training/dqn-smoketest.toml @@ -138,7 +138,7 @@ exit_timing_weight = 0.05 ofi_reward_weight = 0.2 kelly_sizing_weight = 0.1 reward_noise_scale = 0.05 -exposure_aux_weight = 0.01 +exposure_aux_weight = 0.1 exposure_aux_warmup_epochs = 5 [walk_forward] diff --git a/crates/ml/src/cuda_pipeline/gpu_dqn_trainer.rs b/crates/ml/src/cuda_pipeline/gpu_dqn_trainer.rs index 67db881e8..e0c0ed457 100644 --- a/crates/ml/src/cuda_pipeline/gpu_dqn_trainer.rs +++ b/crates/ml/src/cuda_pipeline/gpu_dqn_trainer.rs @@ -2110,7 +2110,7 @@ impl GpuDqnTrainer { let goff_w_b0out: usize = sizes[..10].iter().sum::(); let aux_params_ptr = self.ptrs.params_f32_ptr + (goff_w_b0out as u64) * 4; - let aux_lr = 0.001_f32; // higher LR for aux (independent from main) + let aux_lr = 0.01_f32; // 10x main LR — aux needs strong signal to break i%3 let aux_beta1 = 0.9_f32; let aux_beta2 = 0.999_f32; let aux_eps = 1e-8_f32; diff --git a/crates/ml/src/trainers/dqn/config.rs b/crates/ml/src/trainers/dqn/config.rs index 247ed1851..eed0f87db 100644 --- a/crates/ml/src/trainers/dqn/config.rs +++ b/crates/ml/src/trainers/dqn/config.rs @@ -1653,7 +1653,7 @@ impl DQNHyperparameters { ofi_reward_weight: 0.2, kelly_sizing_weight: 0.1, reward_noise_scale: 0.05, - exposure_aux_weight: 0.01, + exposure_aux_weight: 0.1, exposure_aux_warmup_epochs: 5, // v8: Dense micro-reward, TD(λ), PopArt, curriculum, hindsight micro_reward_scale: 0.01,