OpenVINO

假设您直接运行模型

方便的 OpenVINO 工作流程图

跳过模型转换并 直接从TensorFlow、TensorFlow Lite、ONNX 或 PaddlePaddle源格式运行推理。转换仍会执行,但它将自动进行且“在后台”进行。此选项虽然方便,但性能和稳定性较低,优化选项也较少。

这种方法假设您明确将模型转换为 OpenVINO IR,这意味着转换阶段不是最终应用程序的一部分。

OpenVINO 性能工作流程图

  • 将模型显式转换为 OpenVINO IR 。此方法可提供最佳结果,并且是推荐的方法,尤其是对于可用于生产的解决方案。在某些情况下,请考虑以这种格式存储模型,以最大限度地减少首次推理延迟、执行模型优化并节省驱动器空间。显式转换可以通过两种方式完成:

    • Python API 函数openvino.convert_modelopenvino.save_model
    • ovc命令 行工具。

    一旦保存为OpenVINO IR (一组.xml.bin文件),模型就可以以最大性能部署。由于它已经针对 OpenVINO 推理进行了优化,因此可以读取、编译和推理,而不会产生额外的延迟。

IR 转换优势

保存到 IR 以改善首次推理延迟

当首次推理延迟很重要时,最好只转换一次,而不是每次加载框架模型时都转换,这可能需要一些时间,具体取决于模型的大小。使用 将模型保存为 OpenVINO IR,save_model然后根据需要使用 加载read_model。这应该可以缩短模型进行首次推理所需的时间,因为它避免了转换步骤。

在 FP16 中保存到 IR 以节省空间

节省存储空间,如果使用 FP16 则更是如此,因为它可以将尺寸减少约 50%,对于大型模型特别有用,例如 Llama2-7B。

保存到 IR 以避免推理代码中存在大量依赖

对于运行推理的应用程序来说,TensorFlow 和 PyTorch 等框架往往是巨大的依赖项(数 GB)。将模型转换为 OpenVINO IR 可以消除这种依赖性,因为 OpenVINO 无需额外组件即可运行其推理。这样,所需的磁盘空间就会少得多,而加载和编译通常比在源框架中加载模型然后转换和编译它占用的运行时内存更少。

../_images/DEVELOPMENT_FLOW_V3_crunch.svg

一旦使用上述方法优化了模型,就可以使用常规 OpenVINO 推理工作流程进行推理。无需更改推理代码。

../_images/WHAT_TO_USE.svg