From 37959522a805a5e23c930ed79aac84920c3cb208 Mon Sep 17 00:00:00 2001 From: Dmitrii Agibov Date: Fri, 18 Nov 2022 16:34:03 +0000 Subject: Move backends functionality into separate modules - Move backend management/executor code into module backend_core - Create separate module for each backend in "backend" module - Move each backend into corresponding module - Split Vela wrapper into several submodules Change-Id: If01b6774aab6501951212541cc5d7f5aa7c97e95 --- src/mlia/devices/ethosu/config.py | 4 ++-- src/mlia/devices/ethosu/data_analysis.py | 2 +- src/mlia/devices/ethosu/data_collection.py | 4 ++-- src/mlia/devices/ethosu/handlers.py | 2 +- src/mlia/devices/ethosu/operators.py | 4 ++-- src/mlia/devices/ethosu/performance.py | 25 +++++++++++++++---------- src/mlia/devices/ethosu/reporters.py | 4 ++-- 7 files changed, 25 insertions(+), 20 deletions(-) (limited to 'src/mlia/devices/ethosu') diff --git a/src/mlia/devices/ethosu/config.py b/src/mlia/devices/ethosu/config.py index e44dcdc..f2e867e 100644 --- a/src/mlia/devices/ethosu/config.py +++ b/src/mlia/devices/ethosu/config.py @@ -6,9 +6,9 @@ from __future__ import annotations import logging from typing import Any +from mlia.backend.vela.compiler import resolve_compiler_config +from mlia.backend.vela.compiler import VelaCompilerOptions from mlia.devices.config import IPConfiguration -from mlia.tools.vela_wrapper import resolve_compiler_config -from mlia.tools.vela_wrapper import VelaCompilerOptions from mlia.utils.filesystem import get_profile from mlia.utils.filesystem import get_vela_config diff --git a/src/mlia/devices/ethosu/data_analysis.py b/src/mlia/devices/ethosu/data_analysis.py index 70b6f65..db89a5f 100644 --- a/src/mlia/devices/ethosu/data_analysis.py +++ b/src/mlia/devices/ethosu/data_analysis.py @@ -6,12 +6,12 @@ from __future__ import annotations from dataclasses import dataclass from functools import singledispatchmethod +from mlia.backend.vela.compat import Operators from mlia.core.common import DataItem from mlia.core.data_analysis import Fact from mlia.core.data_analysis import FactExtractor from mlia.devices.ethosu.performance import OptimizationPerformanceMetrics from mlia.nn.tensorflow.optimizations.select import OptimizationSettings -from mlia.tools.vela_wrapper import Operators @dataclass diff --git a/src/mlia/devices/ethosu/data_collection.py b/src/mlia/devices/ethosu/data_collection.py index c8d5293..d68eadb 100644 --- a/src/mlia/devices/ethosu/data_collection.py +++ b/src/mlia/devices/ethosu/data_collection.py @@ -6,6 +6,8 @@ from __future__ import annotations import logging from pathlib import Path +from mlia.backend.vela.compat import Operators +from mlia.backend.vela.compat import supported_operators from mlia.core.context import Context from mlia.core.data_collection import ContextAwareDataCollector from mlia.core.errors import FunctionalityNotSupportedError @@ -20,8 +22,6 @@ from mlia.nn.tensorflow.config import KerasModel from mlia.nn.tensorflow.optimizations.select import get_optimizer from mlia.nn.tensorflow.optimizations.select import OptimizationSettings from mlia.nn.tensorflow.utils import save_keras_model -from mlia.tools.vela_wrapper import Operators -from mlia.tools.vela_wrapper import supported_operators from mlia.utils.logging import log_action from mlia.utils.types import is_list_of diff --git a/src/mlia/devices/ethosu/handlers.py b/src/mlia/devices/ethosu/handlers.py index 48f9a2e..f010bdb 100644 --- a/src/mlia/devices/ethosu/handlers.py +++ b/src/mlia/devices/ethosu/handlers.py @@ -5,6 +5,7 @@ from __future__ import annotations import logging +from mlia.backend.vela.compat import Operators from mlia.core.events import CollectedDataEvent from mlia.core.handlers import WorkflowEventsHandler from mlia.core.typing import PathOrFileLike @@ -13,7 +14,6 @@ from mlia.devices.ethosu.events import EthosUAdvisorStartedEvent from mlia.devices.ethosu.performance import OptimizationPerformanceMetrics from mlia.devices.ethosu.performance import PerformanceMetrics from mlia.devices.ethosu.reporters import ethos_u_formatters -from mlia.tools.vela_wrapper import Operators logger = logging.getLogger(__name__) diff --git a/src/mlia/devices/ethosu/operators.py b/src/mlia/devices/ethosu/operators.py index 1a4ce8d..97c2b17 100644 --- a/src/mlia/devices/ethosu/operators.py +++ b/src/mlia/devices/ethosu/operators.py @@ -3,7 +3,7 @@ """Operators module.""" import logging -from mlia.tools import vela_wrapper +from mlia.backend.vela.compat import generate_supported_operators_report logger = logging.getLogger(__name__) @@ -11,4 +11,4 @@ logger = logging.getLogger(__name__) def report() -> None: """Generate supported operators report.""" - vela_wrapper.generate_supported_operators_report() + generate_supported_operators_report() diff --git a/src/mlia/devices/ethosu/performance.py b/src/mlia/devices/ethosu/performance.py index 431dd89..8051d6e 100644 --- a/src/mlia/devices/ethosu/performance.py +++ b/src/mlia/devices/ethosu/performance.py @@ -9,8 +9,13 @@ from enum import Enum from pathlib import Path from typing import Union -import mlia.backend.manager as backend_manager -import mlia.tools.vela_wrapper as vela +import mlia.backend.vela.compiler as vela_comp +import mlia.backend.vela.performance as vela_perf +from mlia.backend.corstone.performance import DeviceInfo +from mlia.backend.corstone.performance import estimate_performance +from mlia.backend.corstone.performance import ModelInfo +from mlia.backend.install import is_supported +from mlia.backend.install import supported_backends from mlia.core.context import Context from mlia.core.performance import PerformanceEstimator from mlia.devices.ethosu.config import EthosUConfiguration @@ -133,7 +138,7 @@ class VelaPerformanceEstimator( else model ) - vela_perf_metrics = vela.estimate_performance( + vela_perf_metrics = vela_perf.estimate_performance( model_path, self.device.compiler_options ) @@ -177,17 +182,17 @@ class CorstonePerformanceEstimator( f"{model_path.stem}_vela.tflite" ) - vela.optimize_model( + vela_comp.optimize_model( model_path, self.device.compiler_options, optimized_model_path ) - model_info = backend_manager.ModelInfo(model_path=optimized_model_path) - device_info = backend_manager.DeviceInfo( + model_info = ModelInfo(model_path=optimized_model_path) + device_info = DeviceInfo( device_type=self.device.target, # type: ignore mac=self.device.mac, ) - corstone_perf_metrics = backend_manager.estimate_performance( + corstone_perf_metrics = estimate_performance( model_info, device_info, self.backend ) @@ -218,10 +223,10 @@ class EthosUPerformanceEstimator( if backends is None: backends = ["Vela"] # Only Vela is always available as default for backend in backends: - if backend != "Vela" and not backend_manager.is_supported(backend): + if backend != "Vela" and not is_supported(backend): raise ValueError( f"Unsupported backend '{backend}'. " - f"Only 'Vela' and {backend_manager.supported_backends()} " + f"Only 'Vela' and {supported_backends()} " "are supported." ) self.backends = set(backends) @@ -241,7 +246,7 @@ class EthosUPerformanceEstimator( if backend == "Vela": vela_estimator = VelaPerformanceEstimator(self.context, self.device) memory_usage = vela_estimator.estimate(tflite_model) - elif backend in backend_manager.supported_backends(): + elif backend in supported_backends(): corstone_estimator = CorstonePerformanceEstimator( self.context, self.device, backend ) diff --git a/src/mlia/devices/ethosu/reporters.py b/src/mlia/devices/ethosu/reporters.py index f0fcb39..7ecaab1 100644 --- a/src/mlia/devices/ethosu/reporters.py +++ b/src/mlia/devices/ethosu/reporters.py @@ -7,6 +7,8 @@ from collections import defaultdict from typing import Any from typing import Callable +from mlia.backend.vela.compat import Operator +from mlia.backend.vela.compat import Operators from mlia.core.advice_generation import Advice from mlia.core.reporters import report_advice from mlia.core.reporting import BytesCell @@ -23,8 +25,6 @@ from mlia.core.reporting import SingleRow from mlia.core.reporting import Table from mlia.devices.ethosu.config import EthosUConfiguration from mlia.devices.ethosu.performance import PerformanceMetrics -from mlia.tools.vela_wrapper import Operator -from mlia.tools.vela_wrapper import Operators from mlia.utils.console import style_improvement from mlia.utils.types import is_list_of -- cgit v1.2.1