diff --git a/crates/ml/src/trainers/dqn/trainer/training_loop.rs b/crates/ml/src/trainers/dqn/trainer/training_loop.rs index c5615848c..cb3a579cb 100644 --- a/crates/ml/src/trainers/dqn/trainer/training_loop.rs +++ b/crates/ml/src/trainers/dqn/trainer/training_loop.rs @@ -1565,9 +1565,9 @@ impl DQNTrainer { } // end guard frequency check guard_total_us += guard_start.elapsed().as_micros() as u64; - // Q-stats + v_range adaptation every step. - // Cost: ~1 kernel (q_stats_reduce) + sync for 76B DtoH readback. - // q_out_buf is already populated by graph replay — no re-computation. + // Q-stats computed at epoch boundary only (process_epoch_boundary). + // Per-step Q-stats sync was creating GPU pipeline bubbles. + if false { if let Some(ref mut fused) = self.fused_ctx { if let Ok(stats) = fused.reduce_current_q_stats() { self.cached_avg_q = stats.q_mean as f64; @@ -1586,6 +1586,7 @@ impl DQNTrainer { fused.update_eval_v_range(stats.q_mean, q_std, q_gap, per_branch_q_gaps); } } + } // end if false (Q-stats disabled per-step) train_step_count += 1; self.gradient_logging_step += 1; }