--- a/ml/examples/hyperopt_mamba2_demo.rs +++ b/ml/examples/hyperopt_mamba2_demo.rs @@ -66,8 +66,9 @@ struct Args { batch_size_min: usize, - /// Maximum batch size for GPU memory constraints (default: 96 for RTX A4000 16GB) - /// Examples: RTX 3050 Ti 4GB = 32, RTX A4000 16GB = 96, RTX 4090 24GB = 256 - #[arg(long, default_value = "96")] + /// Maximum batch size for GPU memory constraints (default: 180 for RTX A4000 16GB) + /// Validated safe limits based on VRAM analysis (AGENT_R3_A5_VRAM_ANALYSIS.md): + /// Examples: RTX 3050 Ti 4GB = 32, RTX A4000 16GB = 180, RTX 4090 24GB = 256 + #[arg(long, default_value = "180")] batch_size_max: usize, } --- a/ml/src/hyperopt/adapters/mamba2.rs +++ b/ml/src/hyperopt/adapters/mamba2.rs @@ -115,7 +115,8 @@ impl ParameterSpace for Mamba2Params { fn continuous_bounds() -> Vec<(f64, f64)> { vec![ (1e-5_f64.ln(), 1e-2_f64.ln()), // learning_rate (log scale) - (4.0, 256.0), // batch_size (linear) - wide bounds, clamped by trainer config + (4.0, 180.0), // batch_size (linear) - validated safe for 16GB GPU + // See AGENT_R3_A5_VRAM_ANALYSIS.md for derivation (0.0, 0.5), // dropout (linear) (1e-6_f64.ln(), 1e-2_f64.ln()), // weight_decay (log scale) (0.5_f64.ln(), 5.0_f64.ln()), // grad_clip (log scale)