diff --git a/crates/ml/src/trainers/dqn/trainer/training_loop.rs b/crates/ml/src/trainers/dqn/trainer/training_loop.rs index 3b4978338..16a65aaa2 100644 --- a/crates/ml/src/trainers/dqn/trainer/training_loop.rs +++ b/crates/ml/src/trainers/dqn/trainer/training_loop.rs @@ -1505,7 +1505,15 @@ impl DQNTrainer { let _fused_result = fused.run_full_step(&batch, &mut *agent, &self.device) .context("Fused CUDA training step failed")?; - fused_total_us += fused_start.elapsed().as_micros() as u64; + let step_us = fused_start.elapsed().as_micros() as u64; + fused_total_us += step_us; + if train_step_count < 5 || train_step_count % 50 == 0 { + tracing::info!( + step = train_step_count, + step_ms = step_us / 1000, + "STEP_TIMING" + ); + } let guard_start = std::time::Instant::now(); // Run guard every 5th step — NaN/loss checks add ~12ms/step overhead.