1919from model_analyzer .config .generate .search_dimension import SearchDimension
2020from model_analyzer .config .generate .search_dimensions import SearchDimensions
2121from unittest .mock import MagicMock , patch
22+ from model_analyzer .config .generate .run_config_generator_factory import RunConfigGeneratorFactory
2223
2324
2425class GeneratorExperimentFactory :
2526
27+ command_config = None
28+
2629 @staticmethod
27- def create_generator (generator_name , config_command ):
30+ def create_generator (config_command ):
2831 """
2932 Create and return a RunConfig generator of the requested name
3033
@@ -39,45 +42,53 @@ def create_generator(generator_name, config_command):
3942 The config for model analyzer algorithm experiment
4043 """
4144
42- if generator_name == "BruteRunConfigGenerator" :
43- generator = BruteRunConfigGenerator (config_command , MagicMock (),
44- config_command .profile_models ,
45- MagicMock ())
46- p = patch (
47- 'model_analyzer.config.generate.brute_run_config_generator.BruteRunConfigGenerator.determine_triton_server_env'
48- )
49- p .start ()
50-
51- return generator
52- elif generator_name == "QuickRunConfigGenerator" :
53- dimensions = SearchDimensions ()
45+ GeneratorExperimentFactory .config_command = config_command
5446
55- #yapf: disable
56- for i , _ in enumerate (config_command .profile_models ):
57- if config_command .exponential_inst_count :
58- dimensions .add_dimensions (i , [
59- SearchDimension (f"max_batch_size" , SearchDimension .DIMENSION_TYPE_EXPONENTIAL ),
60- SearchDimension (f"instance_count" , SearchDimension .DIMENSION_TYPE_EXPONENTIAL )
61- ])
62- else :
63- dimensions .add_dimensions (i , [
64- SearchDimension (f"max_batch_size" , SearchDimension .DIMENSION_TYPE_EXPONENTIAL ),
65- SearchDimension (f"instance_count" , SearchDimension .DIMENSION_TYPE_LINEAR )
66- ])
47+ p1 = patch (
48+ 'model_analyzer.config.generate.run_config_generator_factory.RunConfigGeneratorFactory._get_batching_supported_dimensions' ,
49+ GeneratorExperimentFactory .get_batching_supported_dimensions )
50+ p2 = patch (
51+ 'model_analyzer.config.generate.run_config_generator_factory.RunConfigGeneratorFactory._get_batching_not_supported_dimensions' ,
52+ GeneratorExperimentFactory .get_batching_not_supported_dimensions )
53+ p1 .start ()
54+ p2 .start ()
55+ mvn = ModelVariantNameManager ()
56+ generator = RunConfigGeneratorFactory .create_run_config_generator (
57+ config_command , MagicMock (), config_command .profile_models ,
58+ MagicMock (), MagicMock (), mvn )
59+ return generator
6760
68- #yapf: enable
61+ @staticmethod
62+ def get_batching_supported_dimensions ():
63+ mbs_min = GeneratorExperimentFactory .config_command .min_mbs_index
64+ ret = [
65+ SearchDimension (f"max_batch_size" ,
66+ SearchDimension .DIMENSION_TYPE_EXPONENTIAL , mbs_min )
67+ ]
68+ if GeneratorExperimentFactory .config_command .exponential_inst_count :
69+ ret .append (
70+ SearchDimension (f"instance_count" ,
71+ SearchDimension .DIMENSION_TYPE_EXPONENTIAL ))
72+ else :
73+ ret .append (
74+ SearchDimension (f"instance_count" ,
75+ SearchDimension .DIMENSION_TYPE_LINEAR ))
76+ return ret
6977
70- search_config = SearchConfig (
71- dimensions = dimensions ,
72- radius = config_command .radius ,
73- step_magnitude = config_command .magnitude ,
74- min_initialized = config_command .min_initialized )
78+ @staticmethod
79+ def get_batching_not_supported_dimensions ():
80+ mbs_min = GeneratorExperimentFactory .config_command .min_mbs_index
7581
76- mvn = ModelVariantNameManager ()
77- generator = QuickRunConfigGenerator (search_config , config_command ,
78- MagicMock (),
79- config_command .profile_models ,
80- MagicMock (), mvn )
81- return generator
82+ ret = [
83+ SearchDimension (f"concurrency" ,
84+ SearchDimension .DIMENSION_TYPE_EXPONENTIAL , mbs_min )
85+ ]
86+ if GeneratorExperimentFactory .config_command .exponential_inst_count :
87+ ret .append (
88+ SearchDimension (f"instance_count" ,
89+ SearchDimension .DIMENSION_TYPE_EXPONENTIAL ))
8290 else :
83- raise Exception (f"Unknown generator { generator_name } " )
91+ ret .append (
92+ SearchDimension (f"instance_count" ,
93+ SearchDimension .DIMENSION_TYPE_LINEAR ))
94+ return ret
0 commit comments