def moc_emit_ir(ngraph_function: Model, argv: argparse.Namespace): output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() # Apply preprocessing (mean/scale/reverse_channels/convert_layout/etc) apply_preprocessing(ov_function=ngraph_function, argv=argv) # Apply transformations from openvino.tools.mo.back.offline_transformations import apply_user_transformations, apply_moc_transformations apply_user_transformations(ngraph_function, parse_transform(argv.transform)) apply_moc_transformations(ngraph_function) if argv.compress_fp16: from openvino.tools.mo.back.offline_transformations import compress_model compress_model(ngraph_function) orig_model_name = os.path.normpath(os.path.join(output_dir, argv.model_name)) from openvino.offline_transformations_pybind import serialize # pylint: disable=import-error,no-name-in-module serialize(ngraph_function, (orig_model_name + ".xml").encode('utf-8'), (orig_model_name + ".bin").encode('utf-8')) del argv.feManager # add meta information to IR append_ir_info(file=orig_model_name, meta_info=get_meta_info(argv), mean_data=None, input_names=None) print('[ SUCCESS ] Generated IR version {} model.'.format(get_ir_version(argv))) print('[ SUCCESS ] XML file: {}.xml'.format(orig_model_name)) print('[ SUCCESS ] BIN file: {}.bin'.format(orig_model_name)) return 0
def moc_emit_ir(ngraph_function: Model, argv: argparse.Namespace): output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() # Apply preprocessing (mean/scale/reverse_channels/convert_layout/etc) apply_preprocessing(ov_function=ngraph_function, argv=argv) # Apply transformations from openvino.tools.mo.back.offline_transformations import apply_user_transformations, apply_moc_transformations, \ apply_moc_legacy_transformations apply_moc_transformations(ngraph_function) from openvino.offline_transformations import compress_quantize_weights_transformation compress_quantize_weights_transformation(ngraph_function) if argv.framework == "onnx": # set OldApi map in IR to be executed via OV API 1.x and for parity with legacy MO params_with_custom_types = [] if argv.placeholder_data_types is None \ else list(argv.placeholder_data_types.keys()) apply_moc_legacy_transformations(ngraph_function, params_with_custom_types) apply_user_transformations(ngraph_function, parse_transform(argv.transform)) if argv.compress_fp16: from openvino.tools.mo.back.offline_transformations import compress_model compress_model(ngraph_function) orig_model_name = os.path.normpath( os.path.join(output_dir, argv.model_name)) from openvino.runtime import serialize # pylint: disable=import-error,no-name-in-module from openvino.offline_transformations import generate_mapping_file # pylint: disable=import-error,no-name-in-module serialize(ngraph_function, (orig_model_name + ".xml").encode('utf-8'), (orig_model_name + ".bin").encode('utf-8')) del argv.feManager path_to_mapping = orig_model_name + ".mapping" extract_names = argv.framework in ['tf', 'mxnet', 'kaldi'] generate_mapping_file(ngraph_function, path_to_mapping.encode('utf-8'), extract_names) # add meta information to IR append_ir_info(file=orig_model_name, meta_info=get_meta_info(argv), mean_data=None, input_names=None, legacy_path=False) print('[ SUCCESS ] Generated IR version {} model.'.format( get_ir_version(argv))) print('[ SUCCESS ] XML file: {}.xml'.format(orig_model_name)) print('[ SUCCESS ] BIN file: {}.bin'.format(orig_model_name)) return 0
def unified_pipeline(argv: argparse.Namespace): graph = Graph(cmd_params=argv, name=argv.model_name, ir_version=get_ir_version(argv)) class_registration.apply_replacements(graph, [ class_registration.ClassType.LOADER, class_registration.ClassType.FRONT_REPLACER, class_registration.ClassType.MIDDLE_REPLACER, class_registration.ClassType.BACK_REPLACER ]) return graph
def emit_ir(graph: Graph, argv: argparse.Namespace): NormalizeTI().find_and_replace_pattern(graph) for_graph_and_each_sub_graph_recursively( graph, RemoveConstOps().find_and_replace_pattern) for_graph_and_each_sub_graph_recursively( graph, CreateConstNodesReplacement().find_and_replace_pattern) if 'feManager' in argv: del argv.feManager mean_data = deepcopy(graph.graph['mf']) if 'mf' in graph.graph else None input_names = deepcopy( graph.graph['input_names']) if 'input_names' in graph.graph else [] prepare_emit_ir(graph=graph, data_type=graph.graph['cmd_params'].data_type, output_dir=argv.output_dir, output_model_name=argv.model_name, mean_data=mean_data, input_names=input_names, meta_info=get_meta_info(argv), use_temporary_path=True) # This graph cleanup is required to avoid double memory consumption graph.clear() if not (argv.framework == 'tf' and argv.tensorflow_custom_operations_config_update): output_dir = argv.output_dir if argv.output_dir != '.' else os.getcwd() orig_model_name = os.path.normpath( os.path.join(output_dir, argv.model_name)) return_code = "not executed" try: if not argv.legacy_ir_generation: from openvino.tools.mo.back.offline_transformations import apply_offline_transformations apply_offline_transformations(orig_model_name, argv) if "compress_fp16" in argv and argv.compress_fp16: # restore data_type cmd parameter argv.data_type = 'FP16' return_code = 0 except Exception as e: return_code = "failed" log.error(e) message = str( dict({ "platform": platform.system(), "mo_version": get_simplified_mo_version(), "ie_version": get_simplified_ie_version(env=os.environ), "python_version": sys.version, "return_code": return_code })) t = tm.Telemetry() t.send_event('mo', 'offline_transformations_status', message) if return_code != 0: raise Error("offline transformations step has failed.") for suf in [".xml", ".bin", ".mapping"]: # remove existing files path_to_file = orig_model_name + "_tmp" + suf if os.path.exists(path_to_file): os.remove(path_to_file) # add meta information to IR append_ir_info(file=orig_model_name, meta_info=get_meta_info(argv), mean_data=mean_data, input_names=input_names) print('[ SUCCESS ] Generated IR version {} model.'.format( get_ir_version(argv))) print('[ SUCCESS ] XML file: {}.xml'.format(orig_model_name)) print('[ SUCCESS ] BIN file: {}.bin'.format(orig_model_name)) return 0