From 2e19b14e4e8b146f91e7ab63968866e092bbdf01 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <42477615+tracysh@users.noreply.github.com> Date: Wed, 15 May 2019 20:54:21 -0700 Subject: [PATCH] Fuse elementwise add/multiply into convolution (#1028) * fix elementwise fusions * update comments * test case --- onnxruntime/core/optimizer/conv_add_fusion.cc | 25 ++++++++++++----- onnxruntime/core/optimizer/conv_mul_fusion.cc | 26 ++++++++++++------ .../test/optimizer/graph_transform_test.cc | 20 ++++++++++++++ .../fusion/fuse-conv-add-mul-3d-2.onnx | Bin 0 -> 50429 bytes 4 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 onnxruntime/test/testdata/transform/fusion/fuse-conv-add-mul-3d-2.onnx diff --git a/onnxruntime/core/optimizer/conv_add_fusion.cc b/onnxruntime/core/optimizer/conv_add_fusion.cc index 5ce8083cb1..7d5578d385 100644 --- a/onnxruntime/core/optimizer/conv_add_fusion.cc +++ b/onnxruntime/core/optimizer/conv_add_fusion.cc @@ -23,15 +23,26 @@ Status ConvAddFusion::Apply(Graph& graph, Node& node, RewriteRuleEffect& modifie // Currently, fusion is only supported for float or double data type. if (!Initializer::IsSupportedDataType(add_B_tensor_proto) || - conv_W_tensor_proto->dims_size() < 4 || - add_B_tensor_proto->dims_size() != conv_W_tensor_proto->dims_size() - 1 || - conv_W_tensor_proto->dims(0) != add_B_tensor_proto->dims(0)) { + conv_W_tensor_proto->dims_size() < 4) { return Status::OK(); } - // The dimensions of add_B should be equal to 1 except first dimension. - for (int i = 1; i < add_B_tensor_proto->dims_size(); i++) { - if (add_B_tensor_proto->dims(i) != 1) { + int axis; + if (add_B_tensor_proto->dims_size() == conv_W_tensor_proto->dims_size()) { + // Test for broadcast add such as 1xCx1x1 for a 2D convolution. + axis = 1; + } else if (add_B_tensor_proto->dims_size() == conv_W_tensor_proto->dims_size() - 1) { + // Test for broadcast add such as Cx1x1 for a 2D convolution. + axis = 0; + } else { + return Status::OK(); + } + if (add_B_tensor_proto->dims(axis) != conv_W_tensor_proto->dims(0)) { + return Status::OK(); + } + // The dimensions of add_B should be equal to 1 except axis dimension. + for (int i = 0; i < add_B_tensor_proto->dims_size(); i++) { + if (i != axis && add_B_tensor_proto->dims(i) != 1) { return Status::OK(); } } @@ -43,7 +54,7 @@ Status ConvAddFusion::Apply(Graph& graph, Node& node, RewriteRuleEffect& modifie if (!Initializer::IsSupportedDataType(conv_B_tensor_proto) || conv_B_tensor_proto->data_type() != add_B_tensor_proto->data_type() || conv_B_tensor_proto->dims_size() != 1 || - conv_B_tensor_proto->dims(0) != add_B_tensor_proto->dims(0)) { + conv_B_tensor_proto->dims(0) != conv_W_tensor_proto->dims(0)) { return Status::OK(); } diff --git a/onnxruntime/core/optimizer/conv_mul_fusion.cc b/onnxruntime/core/optimizer/conv_mul_fusion.cc index 7d6379cc66..de6d096ba6 100644 --- a/onnxruntime/core/optimizer/conv_mul_fusion.cc +++ b/onnxruntime/core/optimizer/conv_mul_fusion.cc @@ -24,17 +24,27 @@ Status ConvMulFusion::Apply(Graph& graph, Node& node, RewriteRuleEffect& rule_ef if (!Initializer::IsSupportedDataType(conv_W_tensor_proto) || !Initializer::IsSupportedDataType(mul_B_tensor_proto) || conv_W_tensor_proto->data_type() != mul_B_tensor_proto->data_type() || - conv_W_tensor_proto->dims_size() < 4 || - !(mul_B_tensor_proto->dims_size() == 0 || - (mul_B_tensor_proto->dims_size() == conv_W_tensor_proto->dims_size() - 1 && - conv_W_tensor_proto->dims(0) == mul_B_tensor_proto->dims(0)))) { + conv_W_tensor_proto->dims_size() < 4) { return Status::OK(); } - // The dimensions of mul_B should be equal to 1 except first dimension. if (mul_B_tensor_proto->dims_size() != 0) { - for (int i = 1; i < mul_B_tensor_proto->dims_size(); i++) { - if (mul_B_tensor_proto->dims(i) != 1) { + int axis; + if (mul_B_tensor_proto->dims_size() == conv_W_tensor_proto->dims_size()) { + // Test for broadcast multiply such as 1xCx1x1 for a 2D convolution. + axis = 1; + } else if (mul_B_tensor_proto->dims_size() == conv_W_tensor_proto->dims_size() - 1) { + // Test for broadcast multiply such as Cx1x1 for a 2D convolution. + axis = 0; + } else { + return Status::OK(); + } + if (mul_B_tensor_proto->dims(axis) != conv_W_tensor_proto->dims(0)) { + return Status::OK(); + } + // The dimensions of mul_B should be equal to 1 except axis dimension. + for (int i = 0; i < mul_B_tensor_proto->dims_size(); i++) { + if (i != axis && mul_B_tensor_proto->dims(i) != 1) { return Status::OK(); } } @@ -54,7 +64,7 @@ Status ConvMulFusion::Apply(Graph& graph, Node& node, RewriteRuleEffect& rule_ef if (!Initializer::IsSupportedDataType(conv_B_tensor_proto) || conv_B_tensor_proto->data_type() != mul_B_tensor_proto->data_type() || conv_B_tensor_proto->dims_size() != 1 || - (mul_B_tensor_proto->dims_size() != 0 && conv_B_tensor_proto->dims(0) != mul_B_tensor_proto->dims(0))) { + conv_B_tensor_proto->dims(0) != conv_W_tensor_proto->dims(0)) { return Status::OK(); } conv_B = std::make_unique(conv_B_tensor_proto); diff --git a/onnxruntime/test/optimizer/graph_transform_test.cc b/onnxruntime/test/optimizer/graph_transform_test.cc index 580c1f16c8..73f0418b8d 100644 --- a/onnxruntime/test/optimizer/graph_transform_test.cc +++ b/onnxruntime/test/optimizer/graph_transform_test.cc @@ -266,6 +266,26 @@ TEST(GraphTransformationTests, FuseConvAddMul3D) { ASSERT_TRUE(op_to_count["Mul"] == 0); } +TEST(GraphTransformationTests, FuseConvAddMul3D_2) { + string model_uri = MODEL_FOLDER + "fusion/fuse-conv-add-mul-3d-2.onnx"; + + std::shared_ptr p_model; + ASSERT_TRUE(Model::Load(model_uri, p_model).IsOK()); + Graph& graph = p_model->MainGraph(); + + onnxruntime::GraphTransformerManager graph_transformation_mgr{5}; + auto rule_transformer_L2 = std::make_unique("RuleTransformerL2"); + rule_transformer_L2->Register(std::make_unique()); + rule_transformer_L2->Register(std::make_unique()); + graph_transformation_mgr.Register(std::move(rule_transformer_L2), TransformerLevel::Level2); + + ASSERT_TRUE(graph_transformation_mgr.ApplyTransformers(graph, TransformerLevel::Level2).IsOK()); + + std::map op_to_count = CountOpsInGraph(graph); + ASSERT_TRUE(op_to_count["Add"] == 0); + ASSERT_TRUE(op_to_count["Mul"] == 0); +} + TEST(GraphTransformationTests, MatMulAddFusion_two_input) { string model_uri = MODEL_FOLDER + "matmul_add_fusion/2Input/model.onnx"; diff --git a/onnxruntime/test/testdata/transform/fusion/fuse-conv-add-mul-3d-2.onnx b/onnxruntime/test/testdata/transform/fusion/fuse-conv-add-mul-3d-2.onnx new file mode 100644 index 0000000000000000000000000000000000000000..3fe7832c88454a254b702c5db543316d0070e7dd GIT binary patch literal 50429 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
  • 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 TSNi`vS5z`CZoZAMyu|+p#Xcfc literal 0 HcmV?d00001