Fall back to legacy path if input freezing feature is used (#9668)

This commit is contained in:
Mateusz Bencer authored and GitHub committed 2022-01-21 16:46:59 +03:00
1 parent 8ebe75f81a
commit 82cc7165e7
4 files changed
+52 -3

No files matched your search

+2 -1
View File
@@ -20,7 +20,7 @@ except ImportError:
from openvino.tools.mo.back.SpecialNodesFinalization import RemoveConstOps, CreateConstNodesReplacement, NormalizeTI
from openvino.tools.mo.back.ie_ir_ver_2.emitter import append_ir_info
from openvino.tools.mo.moc_frontend.check_config import legacy_extensions_used, legacy_transformations_config_used, \
new_extensions_used, new_transformations_config_used
new_extensions_used, new_transformations_config_used, input_freezig_used
from openvino.tools.mo.moc_frontend.pipeline import moc_pipeline
from openvino.tools.mo.moc_frontend.serialize import moc_emit_ir
from openvino.tools.mo.graph.graph import Graph
@@ -340,6 +340,7 @@ def check_fallback(argv : argparse.Namespace):
fallback_reasons['extensions'] = legacy_extensions_used
fallback_reasons['transformations_config'] = legacy_transformations_config_used
fallback_reasons['input_freezing'] = input_freezig_used
reasons = [reason for reason, is_applicable in fallback_reasons.items() if is_applicable(argv)]
return reasons
@@ -89,3 +89,8 @@ def legacy_transformations_config_used(argv: argparse.Namespace):
if path != None:
return not is_new_json_config(path)
return False
def input_freezig_used(argv):
return hasattr(argv, 'freeze_placeholder_with_value') and argv.freeze_placeholder_with_value is not None \
and len(argv.freeze_placeholder_with_value) > 0
@@ -404,3 +404,45 @@ class TestMoFallback(unittest.TestCase):
with pytest.raises(Error) as ex: # not called
prepare_ir(args)
assert str(ex) == 'Legacy transformations configuration is not supported for the new frontend'
@generate(*[('in1->[5.0 5.0 7.0 8.0],in2->[1.0 2.0 3.0 4.0]', None, None, 'mo_legacy', 'input_freezing'), #fallback
('in1,in2->[1.0 2.0 3.0 4.0]', None, None, 'mo_legacy', 'input_freezing'), #fallback
('in1->[1.0 2.0 3.0 4.0],in2', True, None, 'onnx_frontend', None),
('in1->[1.0 2.0 3.0 4.0],in2', None, True, 'mo_legacy', None),
])
def test_fallback_if_input_freezing_used(self, input, use_new_fe, use_legacy, conversion_method, fallback_reason):
with patch('openvino.tools.mo.main.get_default_frontends') as default_fe:
default_fe.return_value = get_test_default_frontends()
args = base_args_config(use_legacy, use_new_fe)
args.input_model = "test_model.onnx"
args.input = input
prepare_ir(args)
tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', conversion_method)
if fallback_reason:
tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)
else:
with pytest.raises(AssertionError): # not called
tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)
@generate(*[('in2->[1.0 2.0 3.0 4.0]', None, None, 'mo_legacy', 'input_freezing'), #fallback
('in2->[1.0 2.0 3.0 4.0]', True, None, 'onnx_frontend', None),
('in2->[1.0 2.0 3.0 4.0]', None, True, 'mo_legacy', None),
])
def test_fallback_if_input_freezing_used_in_deprecated_way(self, input_freezing_value, use_new_fe, use_legacy, conversion_method, fallback_reason):
with patch('openvino.tools.mo.main.get_default_frontends') as default_fe:
default_fe.return_value = get_test_default_frontends()
args = base_args_config(use_legacy, use_new_fe)
args.input_model = "test_model.onnx"
args.freeze_placeholder_with_value = input_freezing_value
prepare_ir(args)
tm.Telemetry.send_event.assert_any_call('mo', 'conversion_method', conversion_method)
if fallback_reason:
tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)
else:
with pytest.raises(AssertionError): # not called
tm.Telemetry.send_event.assert_any_call('mo', 'fallback_reason', fallback_reason)