Files
foxhunt/ml/src/hyperopt/mod.rs
jgrusewski 5dddf365e5 feat(hyperopt): add CampaignConfig with DQN/PPO defaults and GPU limits
Campaign configuration for systematic multi-trial optimization:
- DQN: 50 trials, SHA η=3, 81 max epochs
- PPO: 30 trials, Hyperband, 81 max epochs
- Batch size clamped at 230 (RTX 3050 Ti 4GB VRAM)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 14:09:59 +01:00

68 lines
2.2 KiB
Rust

//! Hyperparameter Optimization Module
//!
//! Production-ready hyperparameter optimization using argmin (Nelder-Mead).
//!
//! This module provides:
//! - **Argmin Optimization**: Derivative-free optimization using Nelder-Mead simplex
//! - **Latin Hypercube Sampling**: Smart initialization for exploration
//! - **Multi-restart**: Escape local minima with strategic restarts
//! - **Model Adapters**: MAMBA-2, DQN, PPO, TFT support
//!
//! ## Features
//!
//! - **Fast Convergence**: Finds optimal hyperparameters in 20-50 trials
//! - **Log-Scale Support**: Proper handling of learning rates and weight decay
//! - **Production Ready**: Integrates with existing training pipelines
//! - **GPU Accelerated**: Leverages CUDA for fast evaluations
//!
//! ## Example
//!
//! ```rust,no_run
//! use ml::hyperopt::{ArgminOptimizer, HyperparameterOptimizable};
//! use ml::hyperopt::adapters::mamba2::Mamba2Trainer;
//!
//! # fn example() -> anyhow::Result<()> {
//! // Create trainer
//! let trainer = Mamba2Trainer::new("test_data/ES_FUT_180d.parquet", 50)?;
//!
//! // Run optimization
//! let optimizer = ArgminOptimizer::builder()
//! .max_trials(30)
//! .n_initial(5)
//! .seed(42)
//! .build();
//!
//! let result = optimizer.optimize(trainer)?;
//! println!("Best loss: {:.6}", result.best_objective);
//! # Ok(())
//! # }
//! ```
pub mod adapters;
pub mod campaign;
pub mod early_stopping;
pub mod egobox_tuner; // Deprecated - kept for backward compatibility
pub mod observer;
pub mod optimizer;
pub mod paths;
pub mod sensitivity;
pub mod traits;
#[cfg(test)]
mod tests; // Old egobox tests (deprecated)
#[cfg(test)]
mod tests_argmin; // New argmin tests
// Re-exports for convenience
pub use observer::TrialBudgetObserver;
pub use optimizer::{ArgminOptimizer, ArgminOptimizerBuilder, TwoPhaseObjective};
pub use optimizer::{EgoboxOptimizer, EgoboxOptimizerBuilder}; // Backward compatibility
pub use traits::{HyperparameterOptimizable, OptimizationResult, ParameterSpace, TrialResult};
// Deprecated egobox exports
pub use egobox_tuner::{
optimize_mamba2, BestHyperparameters, HyperparameterSpace,
OptimizationResult as EgoboxOptimizationResult, TrialResult as EgoboxTrialResult,
};