Ejemplo n.º 1
0
def add_meta_data(net: Element, meta_info: dict, legacy_path: bool):
    if meta_info == {}:
        log.warning(
            '`meta_info` is not provided, IR will not contain appropriate section.'
        )
    else:
        meta = SubElement(net, 'meta_data')
        SubElement(meta, 'MO_version').set('value', get_version())

        try:
            from openvino.runtime import get_version as get_rt_version  # pylint: disable=import-error,no-name-in-module

            SubElement(meta, 'Runtime_version').set('value', get_rt_version())
        except Exception as e:
            SubElement(meta, 'Runtime_version').set('value', 'Not found')

        SubElement(meta, 'legacy_path').set('value', str(legacy_path))

        parameters = SubElement(meta, 'cli_parameters')
        if 'inputs_list' in meta_info:
            del meta_info['inputs_list']
        [
            SubElement(parameters, str(key)).set('value', str(meta_info[key]))
            for key in sorted(meta_info.keys())
            if key not in ('unset', 'quantization_parameters')
        ]
        if 'unset' in meta_info:
            SubElement(parameters,
                       'unset').set('unset_cli_parameters',
                                    ', '.join(sorted(meta_info['unset'])))
Ejemplo n.º 2
0
def add_meta_data(net: Element, meta_info: dict):
    if meta_info == {}:
        log.warning('`meta_info` is not provided, IR will not contain appropriate section.')
    else:
        meta = SubElement(net, 'meta_data')
        SubElement(meta, 'MO_version').set('value', get_version())
        parameters = SubElement(meta, 'cli_parameters')
        if 'inputs_list' in meta_info:
            del meta_info['inputs_list']
        [SubElement(parameters, str(key)).set('value', str(meta_info[key])) for key in sorted(meta_info.keys()) if
         key not in ('unset', 'quantization_parameters')]
        if 'unset' in meta_info:
            SubElement(parameters, 'unset').set('unset_cli_parameters', ', '.join(sorted(meta_info['unset'])))
Ejemplo n.º 3
0
def import_core_modules(silent: bool, path_to_module: str):
    """
        This function checks that OpenVINO Python API is available
        and necessary python modules exists. So the next list of imports
        must contain all IE/NG Python API imports that are used inside MO.

    :param silent: enables or disables logs printing to stdout
    :param path_to_module: path where python API modules were found
    :return: True if all imports were successful and False otherwise
    """
    try:
        from openvino.offline_transformations import apply_moc_transformations, apply_moc_legacy_transformations,\
            apply_low_latency_transformation  # pylint: disable=import-error,no-name-in-module
        from openvino.offline_transformations import apply_make_stateful_transformation, generate_mapping_file  # pylint: disable=import-error,no-name-in-module
        from openvino.offline_transformations import generate_mapping_file, apply_make_stateful_transformation, serialize  # pylint: disable=import-error,no-name-in-module

        from openvino.runtime import Model, get_version  # pylint: disable=import-error,no-name-in-module
        from openvino.runtime.op import Parameter  # pylint: disable=import-error,no-name-in-module
        from openvino.runtime import PartialShape, Dimension  # pylint: disable=import-error,no-name-in-module
        from openvino.frontend import FrontEndManager, FrontEnd  # pylint: disable=no-name-in-module,import-error

        import openvino.frontend  # pylint: disable=import-error,no-name-in-module

        if silent:
            return True

        ie_version = str(get_version())
        mo_version = str(v.get_version())  # pylint: disable=no-member,no-name-in-module

        print("{}: \t{}".format("OpenVINO runtime found in",
                                os.path.dirname(openvino.__file__)))
        print("{}: \t{}".format("OpenVINO runtime version", ie_version))
        print("{}: \t{}".format("Model Optimizer version", mo_version))

        versions_mismatch = False

        mo_hash = v.extract_hash_from_version(mo_version)
        ie_hash = v.extract_hash_from_version(ie_version)

        if mo_hash is not None and ie_hash is not None:
            min_length = min(len(mo_hash), len(ie_hash))
            mo_hash = mo_hash[:min_length]
            ie_hash = ie_hash[:min_length]

        if mo_hash != ie_hash or mo_hash is None or ie_hash is None:
            versions_mismatch = True
            extracted_mo_release_version = v.extract_release_version(
                mo_version)
            mo_is_custom = extracted_mo_release_version == (None, None)

            print(
                "[ WARNING ] Model Optimizer and OpenVINO runtime versions do no match."
            )
            print(
                "[ WARNING ] Consider building the OpenVINO Python API from sources or reinstall OpenVINO "
                "(TM) toolkit using",
                end=" ")
            if mo_is_custom:
                print(
                    "\"pip install openvino\" (may be incompatible with the current Model Optimizer version)"
                )
            else:
                print("\"pip install openvino=={}.{}\"".format(
                    *extracted_mo_release_version))

        simplified_mo_version = v.get_simplified_mo_version()
        message = str(
            dict({
                "platform": platform.system(),
                "mo_version": simplified_mo_version,
                "ie_version": v.get_simplified_ie_version(version=ie_version),
                "versions_mismatch": versions_mismatch,
            }))
        send_telemetry(simplified_mo_version, message, 'ie_version_check')

        return True
    except Exception as e:
        # Do not print a warning if module wasn't found or silent mode is on
        if "No module named 'openvino" not in str(e):
            print("[ WARNING ] Failed to import OpenVINO Python API in: {}".
                  format(path_to_module))
            print("[ WARNING ] {}".format(e))

            # Send telemetry message about warning
            simplified_mo_version = v.get_simplified_mo_version()
            message = str(
                dict({
                    "platform": platform.system(),
                    "mo_version": simplified_mo_version,
                    "ie_version": v.get_simplified_ie_version(env=os.environ),
                    "python_version": sys.version,
                    "error_type": classify_error_type(e),
                }))
            send_telemetry(simplified_mo_version, message, 'ie_import_failed')

        return False
Ejemplo n.º 4
0
 def test_release_version_extractor_neg(self, mock_open, mock_isfile):
     mock_isfile.return_value = True
     mock_open.return_value.__enter__ = mock_open
     self.assertEqual(extract_release_version(get_version()), (None, None))
Ejemplo n.º 5
0
 def test_custom_release_version_extractor(self, mock_open, mock_isfile):
     mock_isfile.return_value = True
     mock_open.return_value.__enter__ = mock_open
     self.assertEqual(extract_release_version(get_version()), ('2021', '1'))
Ejemplo n.º 6
0
 def test_get_version(self, mock_open, mock_isfile):
     mock_isfile.return_value = True
     mock_open.return_value.__enter__ = mock_open
     self.assertEqual(get_version(), '2021.1.0-1028-55e4d5673a8')