diff options
author | Gergely Nagy <gergely.nagy@arm.com> | 2023-06-22 14:35:21 +0100 |
---|---|---|
committer | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2023-10-11 16:16:11 +0100 |
commit | baaf4de286762c1955c874f78cd802d4703a8ba5 (patch) | |
tree | 3b80f906672f91e7e24723720b2d164d360f3edf /src/mlia/cli/options.py | |
parent | 3cd84481fa25e64c29e57396d4bf32d7a3ca490a (diff) | |
download | mlia-baaf4de286762c1955c874f78cd802d4703a8ba5.tar.gz |
Re-factoring of rewrite management & added metrics
- List available rewrites
- Refactor/rename 'Rewrite' class to 'RewritingOptimizer'
- Introduce a registry for rewrite functions
- Refactor 'Rewriter' to use the registry to look up rewrite functions
- Remove mentions of hardcoded "fully_connected" from CLI help and
error messages, using the registry instead
- Add unit tests
- Enable rewrites for all targets:
Extract optimization (including rewrite specific code) from the
Ethos-U-specific data collector into OptimizingDataCollector.
This is reused in other targets' collectors, such as TOSA
and Cortex-A.
- Add more logging for rewrite
- add display of MAE and NRMSE values for the trained result
- add total model MAE and NRMSE metric
Resolves: MLIA-891, MLIA-899, MLIA-906
Change-Id: Ie798749e1ed60cab14fdb6d9c2271c833960e93f
Signed-off-by: Benjamin Klimczak <benjamin.klimczak@arm.com>
Diffstat (limited to 'src/mlia/cli/options.py')
-rw-r--r-- | src/mlia/cli/options.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mlia/cli/options.py b/src/mlia/cli/options.py index 7b3b373..57f54dd 100644 --- a/src/mlia/cli/options.py +++ b/src/mlia/cli/options.py @@ -14,6 +14,7 @@ from mlia.backend.manager import get_available_backends from mlia.core.common import AdviceCategory from mlia.core.errors import ConfigurationError from mlia.core.typing import OutputFormat +from mlia.nn.rewrite.core.rewrite import RewritingOptimizer from mlia.target.registry import builtin_profile_names from mlia.target.registry import registry as target_registry @@ -111,7 +112,10 @@ def add_multi_optimization_options(parser: argparse.ArgumentParser) -> None: multi_optimization_group.add_argument( "--rewrite-target", type=str, - help="Type of rewrite to apply to the subgraph/layer.", + help=( + "Type of rewrite to apply to the subgraph/layer. " + f"Available rewrites: {RewritingOptimizer.builtin_rewrite_names()}" + ), ) multi_optimization_group.add_argument( @@ -327,9 +331,10 @@ def parse_optimization_parameters( # pylint: disable=too-many-arguments ] if rewrite: - if rewrite_target not in ["remove", "fully_connected"]: + if rewrite_target not in RewritingOptimizer.builtin_rewrite_names(): raise ConfigurationError( - "Currently only remove and fully_connected are supported." + f"Invalid rewrite target: '{rewrite_target}'. " + f"Supported rewrites: {RewritingOptimizer.builtin_rewrite_names()}" ) optimizer_params.append( { |