@@ -4,6 +4,7 @@ use crate::benchmarks::evaluation::{
44 DurationWrapper , ProblemSpec ,
55} ;
66use crate :: Optimizer ;
7+ use dfdx:: prelude:: Shape ;
78use itertools:: Itertools ;
89use log:: { debug, info, trace, warn} ;
910use rand:: prelude:: * ;
@@ -17,7 +18,6 @@ use std::iter::Take;
1718use std:: slice:: Iter ;
1819use std:: sync:: Arc ;
1920use std:: time:: Duration ;
20- use luminal:: prelude:: Shape ;
2121use tokio:: sync:: Semaphore ;
2222
2323/// Detailed tracking of evolutionary events
@@ -158,11 +158,11 @@ impl AdaptiveExperimentRunner {
158158 }
159159
160160 /// Run adaptive parameter evolution to find best optimizer configurations for each problem
161- pub async fn run_adaptive_evolution < S : Shape > (
161+ pub async fn run_adaptive_evolution (
162162 & mut self ,
163163 problems : Vec < ProblemSpec > ,
164164 optimizer_types : Vec < super :: parameter_evolution:: OptimizerType > ,
165- ) -> anyhow:: Result < HashMap < String , Vec < ( String , Arc < dyn Optimizer < S > > ) > > > {
165+ ) -> anyhow:: Result < HashMap < String , Vec < ( String , Arc < dyn Optimizer > ) > > > {
166166 info ! ( "Starting adaptive parameter evolution" ) ;
167167 info ! (
168168 "Population size: {}, Generations: {}, Evaluation runs: {}" ,
@@ -221,7 +221,7 @@ impl AdaptiveExperimentRunner {
221221 ) ;
222222
223223 let family_best = self
224- . evolve_optimizer_for_problem_family :: < S > (
224+ . evolve_optimizer_for_problem_family (
225225 family_problems. clone ( ) ,
226226 optimizer_type. clone ( ) ,
227227 & evolution_dir,
@@ -259,7 +259,7 @@ impl AdaptiveExperimentRunner {
259259 family_name, all_best_genomes. len( ) ) ;
260260
261261 // Convert best genomes to optimizers
262- let mut optimizers: Vec < ( String , Arc < dyn Optimizer < S > > ) > = Vec :: new ( ) ;
262+ let mut optimizers: Vec < ( String , Arc < dyn Optimizer > ) > = Vec :: new ( ) ;
263263 let best: Vec < OptimizerGenome > = all_best_genomes
264264 . iter ( )
265265 . into_group_map_by ( |x| x. optimizer_type . to_string ( ) )
@@ -289,7 +289,7 @@ impl AdaptiveExperimentRunner {
289289 "Created evolved optimizer '{}' with fitness: {:?}" ,
290290 name, genome. fitness
291291 ) ;
292- optimizers. push ( ( name, genome. to_optimizer :: < S > ( ) ) ) ;
292+ optimizers. push ( ( name, genome. to_optimizer ( ) ) ) ;
293293 }
294294
295295 family_best_optimizers. insert ( family_name. clone ( ) , optimizers) ;
@@ -336,7 +336,7 @@ impl AdaptiveExperimentRunner {
336336 }
337337 }
338338
339- async fn evolve_optimizer_for_problem_family < S : Shape > (
339+ async fn evolve_optimizer_for_problem_family (
340340 & self ,
341341 family_problems : Vec < ProblemSpec > ,
342342 optimizer_type : super :: parameter_evolution:: OptimizerType ,
@@ -394,7 +394,7 @@ impl AdaptiveExperimentRunner {
394394
395395 // Evaluate fitness of population
396396 debug ! ( "Starting fitness evaluation for generation {}" , generation) ;
397- self . evaluate_population_on_family :: < S > (
397+ self . evaluate_population_on_family (
398398 & mut population,
399399 & family_problems,
400400 & mut tracker,
@@ -492,7 +492,7 @@ impl AdaptiveExperimentRunner {
492492 if i < sorted_population. len ( ) {
493493 let genome = & mut sorted_population[ i] ;
494494 match Self :: evaluate_genome_with_metrics (
495- genome. to_optimizer :: < S > ( ) ,
495+ genome. to_optimizer ( ) ,
496496 ( & family_problems[ 0 ] ) . clone ( ) . clone ( ) ,
497497 self . config . clone ( ) ,
498498 1 , // Just one run for emergency evaluation
@@ -573,7 +573,7 @@ impl AdaptiveExperimentRunner {
573573 OptimizerGenome :: new_random ( optimizer_type. clone ( ) , & mut rng) ;
574574 // Try to evaluate the fallback genome
575575 match Self :: evaluate_genome (
576- fallback_genome. to_optimizer :: < S > ( ) ,
576+ fallback_genome. to_optimizer ( ) ,
577577 ( & family_problems[ 0 ] ) . clone ( ) ,
578578 self . config . clone ( ) ,
579579 1 ,
@@ -659,7 +659,7 @@ impl AdaptiveExperimentRunner {
659659 Ok ( best_genomes)
660660 }
661661
662- async fn evaluate_population_on_family < S : Shape > (
662+ async fn evaluate_population_on_family (
663663 & self ,
664664 population : & mut [ OptimizerGenome ] ,
665665 family_problems : & [ ProblemSpec ] ,
@@ -705,7 +705,7 @@ impl AdaptiveExperimentRunner {
705705 } ) ;
706706
707707 let semaphore = semaphore. clone ( ) ;
708- let optimizer = genome. to_optimizer :: < S > ( ) ;
708+ let optimizer = genome. to_optimizer ( ) ;
709709 let problems = family_problems. to_vec ( ) ;
710710 let config = self . config . clone ( ) ;
711711 let evaluation_runs = self . evaluation_runs ;
@@ -854,7 +854,7 @@ impl AdaptiveExperimentRunner {
854854 Ok ( ( ) )
855855 }
856856
857- async fn evaluate_population < S : Shape > (
857+ async fn evaluate_population (
858858 & self ,
859859 population : & mut [ OptimizerGenome ] ,
860860 problem : & ProblemSpec ,
@@ -895,7 +895,7 @@ impl AdaptiveExperimentRunner {
895895 } ) ;
896896
897897 let semaphore = semaphore. clone ( ) ;
898- let optimizer = genome. to_optimizer :: < S > ( ) ;
898+ let optimizer = genome. to_optimizer ( ) ;
899899 let problem = problem. clone ( ) ;
900900 let config = self . config . clone ( ) ;
901901 let evaluation_runs = self . evaluation_runs ;
@@ -1297,8 +1297,8 @@ impl AdaptiveExperimentRunner {
12971297 new_population
12981298 }
12991299
1300- async fn evaluate_genome_with_metrics < S : Shape > (
1301- optimizer : Arc < dyn Optimizer < S > > ,
1300+ async fn evaluate_genome_with_metrics (
1301+ optimizer : Arc < dyn Optimizer > ,
13021302 problem : ProblemSpec ,
13031303 config : BenchmarkConfig ,
13041304 num_runs : usize ,
@@ -1376,8 +1376,8 @@ impl AdaptiveExperimentRunner {
13761376 ) )
13771377 }
13781378
1379- async fn evaluate_genome < S : Shape > (
1380- optimizer : Arc < dyn Optimizer < S > > ,
1379+ async fn evaluate_genome (
1380+ optimizer : Arc < dyn Optimizer > ,
13811381 problem : ProblemSpec ,
13821382 config : BenchmarkConfig ,
13831383 num_runs : usize ,
@@ -1543,10 +1543,10 @@ impl AdaptiveExperimentRunner {
15431543 }
15441544
15451545 /// Run final championship with evolved optimizers
1546- pub async fn run_evolved_championship < S : Shape > (
1546+ pub async fn run_evolved_championship (
15471547 & self ,
15481548 problems : Vec < ProblemSpec > ,
1549- evolved_optimizers : HashMap < String , Vec < ( String , Arc < dyn Optimizer < S > > ) > > ,
1549+ evolved_optimizers : HashMap < String , Vec < ( String , Arc < dyn Optimizer > ) > > ,
15501550 ) -> anyhow:: Result < ( ) > {
15511551 info ! ( "Running championship with evolved optimizers" ) ;
15521552 info ! ( "Championship includes {} problems" , problems. len( ) ) ;
@@ -1927,7 +1927,7 @@ impl FamilyRepresentation {
19271927}
19281928
19291929/// Convenience function to run adaptive evolution experiments
1930- pub async fn run_adaptive_benchmark < S : Shape > (
1930+ pub async fn run_adaptive_benchmark (
19311931 report_path_prefix : & str ,
19321932 max_evals : usize ,
19331933 num_runs : usize ,
@@ -1984,7 +1984,7 @@ pub async fn run_adaptive_benchmark<S: Shape>(
19841984 // First, evolve optimizer parameters for each problem
19851985 info ! ( "Starting parameter evolution phase" ) ;
19861986 let evolved_optimizers = runner
1987- . run_adaptive_evolution :: < S > ( problems. clone ( ) , optimizer_types)
1987+ . run_adaptive_evolution ( problems. clone ( ) , optimizer_types)
19881988 . await ?;
19891989 info ! ( "Parameter evolution phase completed" ) ;
19901990
@@ -1999,4 +1999,4 @@ pub async fn run_adaptive_benchmark<S: Shape>(
19991999 info ! ( "Results saved to: {}" , output_dir. display( ) ) ;
20002000
20012001 Ok ( ( ) )
2002- }
2002+ }
0 commit comments