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 运行的带有保存的运行时优化的模型
模型可用性检查器将为特定模型提供指导。