jgrusewski
be8f3310d5
feat: gradient stability + 9-agent audit bug fixes
Per-component gradient clipping:
- 2 new CUDA kernels (dqn_clipped_saxpy, dqn_clip_grad)
- CQL gradient isolated into separate scratch buffer
- Budget allocation: C51=70%, CQL=15%, IQN=10%, Ens=5%
- Dynamic budget — inactive components' share goes to C51
Spectral norm extended to all 10 weight matrices:
- Was trunk-only (W_s1, W_s2), now covers all heads
- 16 u/v power iteration buffers, batched GOFF sync-back
- Uniform sigma_max, end-to-end Lipschitz bounded
Bug fixes from 9-agent audit:
- Backtest episode reset: all 8 fields (was 5), max_equity updated before floor check
- gradient_clip_norm unified: 10.0 everywhere (was 10.0 vs 1.0)
- entropy_coefficient: Option<f64> → f64, single default 0.001
- Close price: unwrap_or(1.0) → direct indexing (no silent wrong rewards)
- step_count: only increments during training (was incrementing on inference)
- Quantile loss: single CUDA context (was 3×), silent fallbacks removed
- MaybeNoisyLinear: single-variant enum removed → direct NoisyLinear
- Budget fractions: exported as pub(crate) constants, referenced not hardcoded
Monitoring:
- Per-component gradient Prometheus gauges (C51 raw, combined)
- Diagnostic logging every 1000 steps
Tests: 7 new gradient budget tests, 1 gradient bounds smoke test
All 488 tests pass (359 ml-dqn + 129 ml)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 19:52:44 +01:00
..
2026-03-10 15:49:40 +01:00
2026-03-11 22:00:13 +01:00
2026-03-13 11:51:58 +01:00
2026-03-14 19:41:40 +01:00
2026-03-16 16:11:48 +01:00
2026-03-16 21:01:28 +01:00
2026-03-17 22:27:56 +01:00
2026-03-17 15:13:04 +01:00
2026-03-18 19:36:41 +01:00
2026-03-18 07:26:56 +01:00
2026-03-18 13:31:35 +01:00
2026-03-21 10:26:11 +01:00
2026-03-21 11:23:09 +01:00
2026-03-21 15:33:00 +01:00
2026-03-21 16:29:32 +01:00
2026-03-21 23:22:58 +01:00
2026-03-22 20:35:57 +01:00
2026-03-22 00:39:34 +01:00
2026-03-23 09:03:19 +01:00
2026-03-23 20:42:08 +01:00
2026-03-24 21:48:38 +01:00
2026-03-24 23:57:04 +01:00
2026-03-24 22:00:45 +01:00
2026-03-24 23:57:04 +01:00
2026-03-25 19:43:26 +01:00
2026-03-25 09:01:12 +01:00
2026-03-25 23:58:30 +01:00
2026-03-25 01:49:53 +01:00
2026-03-25 23:02:39 +01:00
2026-03-26 00:43:58 +01:00
2026-03-26 01:06:28 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 19:52:44 +01:00
2026-03-27 07:56:50 +01:00
2026-03-27 00:47:34 +01:00
2026-03-27 08:16:51 +01:00