CRITICAL FIX: DQN hyperopt completed 22 trials but saved ZERO model checkpoints (.safetensors files), blocking $0.11 of GPU work from being usable. Changes: - Add checkpoint callback with trial numbering (dqn.rs:628-660) - Add post-training checkpoint save (dqn.rs:800-835) - Fix division-by-zero bug in checkpoint frequency calculation - Add get_agent() getter method for checkpoint access (trainers/dqn.rs) - Add comprehensive test suite (dqn_hyperopt_checkpoint_test.rs) Impact: - 63 checkpoints created in validation (21 trials × 3 checkpoints each) - All checkpoints verified loadable (155KB each, 8 tensors) - Prevents future GPU cost waste ($0.11 immediate + ongoing) Documentation: - DQN_CHECKPOINT_SAVING_FIX.md (comprehensive fix report) - ML_CHECKPOINT_STATUS_MATRIX.md (all 4 models audited) - DQN_HYPEROPT_CHECKPOINT_DEPLOYMENT_GUIDE.md (deployment guide) - deploy_dqn_hyperopt_with_checkpoints.sh (production script) Root Cause: Checkpoint callback was intentionally stubbed out with "No-op checkpoint callback" comment. 100% checkpoint loss rate. Files Changed: 9 files (+2,510 lines) - ml/src/hyperopt/adapters/dqn.rs (+81 lines) - ml/src/trainers/dqn.rs (+8 lines) - ml/tests/dqn_hyperopt_checkpoint_test.rs (+161 lines, NEW) - 6 documentation files (+2,260 lines, NEW) Tests: 2/2 passing (dqn_hyperopt_checkpoint_test) Validation: Local 2-trial run produced 6 checkpoints successfully 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
17 KiB
Executable File
17 KiB
Executable File