diff options
author | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2023-07-12 15:18:26 +0100 |
---|---|---|
committer | Benjamin Klimczak <benjamin.klimczak@arm.com> | 2023-10-11 16:16:32 +0100 |
commit | ecc4264b93d4a89fa2cb40518b225d8371b7ffad (patch) | |
tree | 47244d2d67ab6c50bfc15eab768252359eae0df6 /src/mlia/nn/rewrite/core/graph_edit/cut.py | |
parent | baaf4de286762c1955c874f78cd802d4703a8ba5 (diff) | |
download | mlia-ecc4264b93d4a89fa2cb40518b225d8371b7ffad.tar.gz |
Enable rewrites for quantized input models
If the input model for rewriting is quantized:
- Record de-quantized TFRecords
- enable writing de-quantized calibration data for the training
- re-generate augmented training data, if needed
- Use quantization-aware training (QAT) to train the replacement models
- Check if replacement model is quantized:
If source model is quantized, we make sure rewrite's output model
is quantized too. Right now, only int8 is supported so raising
an error if any other datatype is present in the output.
Resolves: MLIA-907, MLIA-908, MLIA-927
Signed-off-by: Benjamin Klimczak <benjamin.klimczak@arm.com>
Change-Id: Icb4070a9e6f1fdb5ce36120d73823986e89ac955
Diffstat (limited to 'src/mlia/nn/rewrite/core/graph_edit/cut.py')
-rw-r--r-- | src/mlia/nn/rewrite/core/graph_edit/cut.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mlia/nn/rewrite/core/graph_edit/cut.py b/src/mlia/nn/rewrite/core/graph_edit/cut.py index 13a5268..53d5389 100644 --- a/src/mlia/nn/rewrite/core/graph_edit/cut.py +++ b/src/mlia/nn/rewrite/core/graph_edit/cut.py @@ -1,9 +1,11 @@ # SPDX-FileCopyrightText: Copyright 2023, Arm Limited and/or its affiliates. # SPDX-License-Identifier: Apache-2.0 """Cut module.""" +from __future__ import annotations + import os from collections import defaultdict -from typing import Optional +from pathlib import Path import tensorflow as tf from tensorflow.lite.python.schema_py_generated import ModelT @@ -25,8 +27,8 @@ def tensors_by_name(subgraph: SubGraphT, names: list) -> list: def cut_subgraph( subgraph: SubGraphT, - input_tensor_names: Optional[list], - output_tensor_names: Optional[list], + input_tensor_names: list | None, + output_tensor_names: list | None, ) -> None: """Change the global inputs and outputs of a graph to the provided named tensors.""" if input_tensor_names is not None: @@ -131,11 +133,11 @@ def filter_relabel(src_subgraph: SubGraphT, relabel_filter: set) -> tuple: def cut_model( - model_file: str, - input_names: Optional[list], - output_names: Optional[list], + model_file: str | Path, + input_names: list | None, + output_names: list | None, subgraph_index: int, - output_file: str, + output_file: str | Path, ) -> None: """Cut subgraphs and simplify a given model.""" model = load_fb(model_file) |