From 4d3cd2f68526e39d6ae75f68d68f9528b5145ec6 Mon Sep 17 00:00:00 2001 From: Scott McKay Date: Mon, 21 Feb 2022 09:26:19 +1000 Subject: [PATCH] Add helper for optimizing a QDQ format model for usage with ORT. (#10595) * Add initial helper for optimizing a QDQ format model for usage with ORT. If a DQ node has multiple consumers it will end up in multiple QDQ node units. This is complicated to handle as each qdq unit could end up being handled by different execution providers. By duplicating the DQ node we simplify this logic. Generally the duplicate nodes will disappear when the qdq node unit is converted to a single node with a quantized operator. If there are qdq node units that are not able to be converted to use a quantized operator the ORT cleanup (pending) to drop remaining Q->DQ pairs between fp32 nodes can remove any remaining DQ nodes. * Fix pep8 warning Co-authored-by: Guoyu Wang --- .../qdq_with_multi_consumer_dq_nodes.onnx | Bin 0 -> 147218 bytes tools/python/util/qdq_helpers/__init__.py | 0 .../util/qdq_helpers/optimize_qdq_model.py | 34 ++++++ .../util/qdq_helpers/qdq_model_utils.py | 98 ++++++++++++++++++ .../python/util/qdq_helpers/test/__init__.py | 0 .../qdq_helpers/test/test_qdq_model_utils.py | 32 ++++++ 6 files changed, 164 insertions(+) create mode 100644 onnxruntime/test/testdata/qdq_with_multi_consumer_dq_nodes.onnx create mode 100644 tools/python/util/qdq_helpers/__init__.py create mode 100644 tools/python/util/qdq_helpers/optimize_qdq_model.py create mode 100644 tools/python/util/qdq_helpers/qdq_model_utils.py create mode 100644 tools/python/util/qdq_helpers/test/__init__.py create mode 100644 tools/python/util/qdq_helpers/test/test_qdq_model_utils.py diff --git a/onnxruntime/test/testdata/qdq_with_multi_consumer_dq_nodes.onnx b/onnxruntime/test/testdata/qdq_with_multi_consumer_dq_nodes.onnx new file mode 100644 index 0000000000000000000000000000000000000000..644b370f731095d72ee1c4e6054baccbe86ee0d8 GIT binary patch literal 147218 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

fc6ptYns~w9-4=BfmCxvAd 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 1: + if not all(consumer in graph.node for consumer in consumers): + # TODO: If this does ever occur, as long as it's only consumed in one subgraph we could leave that + # value as is (no need to handle recursing into the subgraph) and update the consumers in this + # graph only + raise IndexError("DequantizeLinear node output is consumed by a subgraph. " + "This is not currently supported.") + + nodes_to_update.append(node) + + if validate_updates: + if nodes_to_update: + # internal error. we somehow missed an update in the first pass when validate_upates was false + raise ValueError('Graph still has DequantizeLinear nodes with multiple consumers.') + + return + + if nodes_to_update: + dup_idx = 0 + new_graph = onnx.GraphProto() + graph_outputs = set([output.name for output in graph.output]) + for node in graph.node: + new_graph.node.append(node) + if node in nodes_to_update: + is_graph_output = node.output[0] in graph_outputs + # create duplicate DQ nodes as needed so that there is one consumer per node. + # this allows us to cleanly create a QDQ node group with no DQ nodes shared with other QDQ node groups. + # if the node produces a graph output we need a duplicate DQ node for every consumer node. + # if not, we can leave the first consumer as is and create duplicate nodes for the other consumers. + start_idx = 0 if is_graph_output else 1 + consumers = list(node_to_consumers[node])[start_idx:] + + for idx, consumer in enumerate(consumers): + # create duplicate DQ node + duplicate = onnx.NodeProto() + duplicate.CopyFrom(node) + # update node name for debugging. use the global dup idx for node duplication + duplicate.name += f'/qdq_utils_dup_{dup_idx}' + + # update output. use the local idx for value duplication + orig_output = node.output[0] + new_output = f'{orig_output}/qdq_utils_dup_{idx}' + duplicate.output[0] = new_output + + # update input on the consumer node. + for input_idx, input_name in enumerate(consumer.input): + if input_name == orig_output: + consumer.input[input_idx] = new_output + + new_graph.node.append(duplicate) + dup_idx += 1 + + # replace nodes + del graph.node[:] + graph.node.extend(new_graph.node) + updated_graphs.append(graph) + + +def fix_dq_nodes_with_multiple_consumers(model): + ''' + Update a model if any DequantizeLinear nodes have multiple consumers. + The QDQ node unit processing is overly complicated if this is the case, as the DQ node would be in multiple units, + and the units may end up in different partitions at runtime. + :param model: QDQ model to update + ''' + node_to_producers, node_to_consumers = get_producer_consumer_maps(model.graph) + + updated_graphs = [] # list of GraphProto instances that were updated_graphs + iterate_graph_per_graph_func(model.graph, _duplicate_dq_nodes_with_multiple_consumers, + node_to_consumers=node_to_consumers, validate_updates=False, + updated_graphs=updated_graphs) + + if updated_graphs: + updated_graphs = [] + node_to_producers, node_to_consumers = get_producer_consumer_maps(model.graph) + iterate_graph_per_graph_func(model.graph, _duplicate_dq_nodes_with_multiple_consumers, + node_to_consumers=node_to_consumers, validate_updates=True, + updated_graphs=updated_graphs) + + # validate with check and by running shape inference. + onnx.checker.check_model(model) + _ = onnx.shape_inference.infer_shapes(model) diff --git a/tools/python/util/qdq_helpers/test/__init__.py b/tools/python/util/qdq_helpers/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/python/util/qdq_helpers/test/test_qdq_model_utils.py b/tools/python/util/qdq_helpers/test/test_qdq_model_utils.py new file mode 100644 index 0000000000..26e2c74707 --- /dev/null +++ b/tools/python/util/qdq_helpers/test/test_qdq_model_utils.py @@ -0,0 +1,32 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +import onnx +import pathlib +import unittest + +from ..qdq_model_utils import fix_dq_nodes_with_multiple_consumers + +script_dir = pathlib.Path(__file__).parent +ort_root = script_dir.parents[4] + +# example usage from /tools/python +# python -m unittest util/qdq_helpers/test/test_qdq_model_utils.py +# NOTE: at least on Windows you must use that as the working directory for all the imports to be happy + + +class TestQDQUtils(unittest.TestCase): + def test_fix_DQ_with_multiple_consumers(self): + ''' + ''' + model_path = ort_root / 'onnxruntime' / 'test' / 'testdata' / 'qdq_with_multi_consumer_dq_nodes.onnx' + model = onnx.load(str(model_path)) + + orig_dq_nodes = [n for n in model.graph.node if n.op_type == 'DequantizeLinear'] + fix_dq_nodes_with_multiple_consumers(model) + new_dq_nodes = [n for n in model.graph.node if n.op_type == 'DequantizeLinear'] + + # there are 3 DQ nodes with 2 consumers (an earlier Conv and later Add) + # additionally the last one also provides a graph output + # based on that there should be 3 new DQ nodes for the internal consumers and 1 new one for the graph output + self.assertEqual(len(orig_dq_nodes) + 4, len(new_dq_nodes))