ORT 格式模型运行时优化

目录

背景

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

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

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

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

通常,基本图优化是语义保留的,并生成有效的 ONNX 图。基本优化可以在转换时嵌入到转换后的 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 运行的具有保存的运行时优化的模型

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