编译工具

编译工具是一个 C++ 应用,使您能够编译模型以在特定设备上进行推理,并将编译后的表示导出到二进制文件。使用编译工具,您可以在未连接物理设备的机器上使用支持的 OpenVINO™ 运行时设备编译模型,然后将生成的文件传输到目标推理设备可用的任何机器上。请参阅功能支持表了解哪些设备支持导入/导出功能。

该工具使用相应的 OpenVINO™ 运行时插件为以下目标设备编译网络:

  • 英特尔® 神经电脑棒 2(MYRIAD 插件)

该工具以可执行文件的形式提供,可在 Linux* 和 Windows* 上运行。该工具位于 <INSTALLROOT>/tools/compile_tool 目录中。

编译工具的工作流程

  1. 首先,应用读取命令行参数,将模型加载到 OpenVINO™ 运行时设备。

  2. 然后,应用使用已编译的模型导出一个 Blob,并将其写入输出文件。

此外,编译工具还支持以下功能:

  • 嵌入布局和精度转换(请参阅优化预处理)。要使用高级预处理功能编译模型,请参阅用例 - 将预处理步骤集成并保存到 IR 中,其中显示了如何在已编译的 Blob 中进行所有预处理。

  • 默认情况下为 OpenVINO™ 运行时 API 2.0 编译 Blob,或者为带有显式选项 -ov_api_1_0 的推理引擎 API 编译 Blob

  • 接受用于自定义编译流程的设备特定选项

运行编译工具

使用 -h 选项运行应用会产生以下使用消息:

./compile_tool -h
OpenVINO Runtime version ......... 2022.1.0
Build ........... custom_changed_compile_tool_183a1adfcd7a001974fe1c5cfa21ec859b70ca2c

compile_tool [OPTIONS]

 Common options:
    -h                                       Optional. Print the usage message.
    -m                           <value>     Required. Path to the XML model.
    -d                           <value>     Required. Specify a target device for which executable network will be compiled.
                                             Use "-d HETERO:<comma-separated_devices_list>" format to specify HETERO plugin.
                                             Use "-d MULTI:<comma-separated_devices_list>" format to specify MULTI plugin.
                                             The application looks for a suitable plugin for the specified device.
    -o                           <value>     Optional. Path to the output file. Default value: "<model_xml_file>.blob".
    -c                           <value>     Optional. Path to the configuration file.
    -ip                          <value>     Optional. Specifies precision for all input layers of the network.
    -op                          <value>     Optional. Specifies precision for all output layers of the network.
    -iop                        "<value>"    Optional. Specifies precision for input and output layers by name.
                                             Example: -iop "input:FP16, output:FP16".
                                             Notice that quotes are required.
                                             Overwrites precision from ip and op options for specified layers.
    -il                          <value>     Optional. Specifies layout for all input layers of the network.
    -ol                          <value>     Optional. Specifies layout for all output layers of the network.
    -iol                        "<value>"    Optional. Specifies layout for input and output layers by name.
                                             Example: -iol "input:NCHW, output:NHWC".
                                             Notice that quotes are required.
                                             Overwrites layout from il and ol options for specified layers.
    -iml                         <value>     Optional. Specifies model layout for all input layers of the network.
    -oml                         <value>     Optional. Specifies model layout for all output layers of the network.
    -ioml                       "<value>"    Optional. Specifies model layout for input and output tensors by name.
                                             Example: -ionl "input:NCHW, output:NHWC".
                                             Notice that quotes are required.
                                             Overwrites layout from il and ol options for specified layers.
    -ov_api_1_0                              Optional. Compile model to legacy format for usage in Inference Engine API,
                                             by default compiles to OV 2.0 API

 MYRIAD-specific options:
    -VPU_NUMBER_OF_SHAVES        <value>     Optional. Specifies number of shaves.
                                             Should be set with "VPU_NUMBER_OF_CMX_SLICES".
                                             Overwrites value from config.

    -VPU_NUMBER_OF_CMX_SLICES    <value>     Optional. Specifies number of CMX slices.
                                             Should be set with "VPU_NUMBER_OF_SHAVES".
                                             Overwrites value from config.
    -VPU_TILING_CMX_LIMIT_KB     <value>     Optional. Specifies CMX limit for data tiling.
                                             Value should be equal or greater than -1.
                                             Overwrites value from config.

使用空选项列表运行应用会产生一个错误消息。

例如,要从经过训练的网络编译用于在英特尔® 神经电脑棒 2 上推理的 Blob,请运行以下命令:

./compile_tool -m <path_to_model>/model_name.xml -d MYRIAD

将已编译 Blob 文件导入应用

要从生成的文件中将带有网络的 Blob 导入应用中,请使用 ov::Core::import_model 方法:

ov::Core ie;
std::ifstream file{"model_name.blob"};
ov::CompiledModel compiled_model = ie.import_model(file, "MYRIAD");