diff options
author | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2022-06-27 09:10:49 +0100 |
---|---|---|
committer | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2022-06-27 16:18:55 +0100 |
commit | 0ee201dfa023a9f42e1c8a282e96c231c6769e07 (patch) | |
tree | abd0048d0f1922470e3fe6befcc32f62d38a52f5 /src/mlia/devices/ethosu/advisor.py | |
parent | 7faf2c4763f299ee53b1ed100025ba50021c8313 (diff) | |
download | mlia-0ee201dfa023a9f42e1c8a282e96c231c6769e07.tar.gz |
MLIA-522 No 'perf' in mode 'all' for TFLite files
Fix the issue that no performance information is shown for TFLite files
when the mode 'all_tests' is used.
Change-Id: I8b4df4ab84ba9783b582ad449a34bf6177037e14
Diffstat (limited to 'src/mlia/devices/ethosu/advisor.py')
-rw-r--r-- | src/mlia/devices/ethosu/advisor.py | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/mlia/devices/ethosu/advisor.py b/src/mlia/devices/ethosu/advisor.py index 802826b..e93858f 100644 --- a/src/mlia/devices/ethosu/advisor.py +++ b/src/mlia/devices/ethosu/advisor.py @@ -23,6 +23,7 @@ from mlia.devices.ethosu.data_collection import EthosUOperatorCompatibility from mlia.devices.ethosu.data_collection import EthosUOptimizationPerformance from mlia.devices.ethosu.data_collection import EthosUPerformance from mlia.devices.ethosu.events import EthosUAdvisorStartedEvent +from mlia.nn.tensorflow.utils import is_tflite_model class EthosUInferenceAdvisor(InferenceAdvisor, ParameterResolverMixin): @@ -63,25 +64,30 @@ class EthosUInferenceAdvisor(InferenceAdvisor, ParameterResolverMixin): """Get collectors.""" collectors: List[DataCollector] = [] - if context.any_category_enabled( - AdviceCategory.OPERATORS, - AdviceCategory.ALL, - ): + if AdviceCategory.OPERATORS in context.advice_category: collectors.append(EthosUOperatorCompatibility(model, device)) - if context.category_enabled(AdviceCategory.PERFORMANCE): - collectors.append(EthosUPerformance(model, device, backends)) - - if context.any_category_enabled( - AdviceCategory.OPTIMIZATION, - AdviceCategory.ALL, - ): - optimization_settings = self._get_optimization_settings(context) - collectors.append( - EthosUOptimizationPerformance( - model, device, optimization_settings, backends + # Performance and optimization are mutually exclusive. + # Decide which one to use (taking into account the model format). + if is_tflite_model(model): + # TFLite models do not support optimization (only performance)! + if context.advice_category == AdviceCategory.OPTIMIZATION: + raise Exception( + "Command 'optimization' is not supported for TFLite files." ) - ) + if AdviceCategory.PERFORMANCE in context.advice_category: + collectors.append(EthosUPerformance(model, device, backends)) + else: + # Keras/SavedModel: Prefer optimization + if AdviceCategory.OPTIMIZATION in context.advice_category: + optimization_settings = self._get_optimization_settings(context) + collectors.append( + EthosUOptimizationPerformance( + model, device, optimization_settings, backends + ) + ) + elif AdviceCategory.PERFORMANCE in context.advice_category: + collectors.append(EthosUPerformance(model, device, backends)) return collectors |