From ca8b77f63aa69b13e65de91a2a99fc6c35c8d138 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Tue, 3 Mar 2026 00:34:41 +0100 Subject: [PATCH] feat(dqn): wire gradient explosion and checkpoint save metrics into trainer Co-Authored-By: Claude Opus 4.6 --- crates/ml/src/trainers/dqn/trainer.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/ml/src/trainers/dqn/trainer.rs b/crates/ml/src/trainers/dqn/trainer.rs index a06c22b12..8318963bf 100644 --- a/crates/ml/src/trainers/dqn/trainer.rs +++ b/crates/ml/src/trainers/dqn/trainer.rs @@ -2637,6 +2637,7 @@ impl DQNTrainer { warn!(" • Reducing learning rate (current: {:.2e})", self.hyperparams.learning_rate); warn!(" • Enabling target network soft updates (Polyak averaging, tau=0.005)"); warn!(" • Adjusting reward scaling"); + training_metrics::record_gradient_explosion("dqn", "current"); } } @@ -2799,12 +2800,15 @@ impl DQNTrainer { } } + let ckpt_size = checkpoint_data.len() as f64; + let ckpt_start = std::time::Instant::now(); let best_checkpoint_path = checkpoint_callback( epoch + 1, checkpoint_data, true, // is_best flag ) .context("Failed to save best checkpoint")?; + training_metrics::record_checkpoint_save("dqn", "current", ckpt_start.elapsed().as_secs_f64(), ckpt_size); info!("Best model saved to: {}", best_checkpoint_path); }