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 執行的具有儲存的執行時最佳化的模型

模型可用性檢查器將為特定模型提供指導。