ORT 格式模型运行时优化

目录

背景

完整的 ONNX Runtime 构建版本支持在运行时对 ONNX 模型进行图优化

ORT 格式模型旨在与 ONNX Runtime 最小构建版本 一起使用,用于二进制文件大小较小的环境。为了减小二进制文件大小,最小构建版本中排除了一些或全部图优化器代码。因此,ONNX 模型和 ORT 格式模型不共享相同的图优化过程。

在 ONNX Runtime 1.11 及更高版本中,对 ORT 格式模型在运行时的图优化提供有限的支持。这仅适用于扩展的最小构建版本或完整构建版本。

在 ONNX Runtime 1.10 及更早版本中,不支持对 ORT 格式模型在运行时进行图优化。任何图优化都必须在模型转换时完成。有关使用旧版本 ORT 的指南,请参阅此页面

通常,基本图优化是语义保留的,并生成有效的 ONNX 图。基本优化可以并且通常应该在转换时烘焙到转换后的 ORT 格式模型中 - 这是转换脚本的默认行为。事实上,任何对 ORT 格式模型的运行时优化支持都不包括基本优化。

运行时优化类型

这些仅适用于扩展的最小构建版本或完整构建版本。

已保存的运行时优化

一些图优化器支持额外的模式,以将有关潜在图优化的信息保存和加载到 ORT 格式模型以及从 ORT 格式模型加载信息。这些潜在的优化称为已保存的运行时优化。

仅当已保存的运行时优化仍然适用时,才会在运行时应用它们。例如,如果某些节点的 CPU 执行提供程序 (EP) 特定优化在运行时将这些节点分配给 CPU EP,则该优化才适用。

从 ONNX 转换为 ORT 格式时,会识别潜在的优化 (1),并且其效果与图一起保存在 ORT 格式模型中(不应用这些优化)。稍后,当加载具有已保存的运行时优化的 ORT 格式模型时,如果潜在的优化仍然适用,则会应用潜在优化的效果 (2)。

在扩展的最小构建版本中,仅包含支持 (2) 的足够实现,从而减小了二进制文件大小。

图优化器

一些图优化器在扩展的最小构建版本中也完全启用,可以直接应用于 ORT 格式模型。NHWC 转换器就是一个例子。

选择是否使用运行时优化

运行时优化的使用是可选的。通常,选择是在使用具有已保存的运行时优化的 ORT 格式模型和使用完全优化的 ORT 格式模型之间进行选择。

完全优化的模型将具有全套 ONNX Runtime 优化(在扩展级别或更高级别)可用,但将针对模型转换时的配置进行完全优化。

具有已保存的运行时优化的模型可用的优化较少,但在运行时具有更大的灵活性。例如,在运行时,像 NNAPI EP 这样的编译 EP 可以声明它可以处理的节点集,并且可以使用已保存的运行时优化进一步优化其余节点。

您可以比较以下情况的性能:

  • 仅启用 CPU EP 运行的完全优化模型
  • 启用其他 EP 运行的具有已保存的运行时优化的模型

模型可用性检查器将为特定模型提供指导。