Laufzeitoptimierung des ORT-Modellformats
Inhalt
- Hintergrund
- Arten von Laufzeitoptimierungen
- Auswahl, ob Laufzeitoptimierungen verwendet werden sollen
Hintergrund
Der vollständige ONNX Runtime-Build unterstützt Graph-Optimierungen zur Laufzeit für ONNX-Modelle.
Das ORT-Modellformat wurde für die Verwendung mit ONNX Runtime Minimal-Builds für Umgebungen entwickelt, in denen eine kleinere Binärgröße wichtig ist. Um die Binärgröße zu reduzieren, werden einige oder alle Graph-Optimierungscodes aus einem Minimal-Build ausgeschlossen. Daher teilen ONNX-Modelle und ORT-Modellformate nicht denselben Graph-Optimierungsprozess.
In ONNX Runtime 1.11 und höher gibt es eine eingeschränkte Unterstützung für Graph-Optimierungen zur Laufzeit für ORT-Modellformate. Dies gilt nur für erweiterte Minimal-Builds oder vollständige Builds.
In ONNX Runtime 1.10 und früher gibt es keine Unterstützung für Graph-Optimierungen zur Laufzeit für ORT-Modellformate. Alle Graph-Optimierungen müssen zum Zeitpunkt der Modellkonvertierung durchgeführt werden. Anleitungen zur Verwendung älterer ORT-Versionen finden Sie auf dieser Seite.
Grundsätzlich sind grundlegende Graph-Optimierungen semantisch konservativ und führen zu einem gültigen ONNX-Graphen. Die grundlegenden Optimierungen können und sollten im Allgemeinen zum Zeitpunkt der Konvertierung in das konvertierte ORT-Modellformat eingebacken werden – dies ist das Standardverhalten des Konvertierungsskripts. Tatsächlich wird jede Laufzeitoptimierungsunterstützung für ORT-Modellformate keinerlei grundlegende Optimierungen beinhalten.
Arten von Laufzeitoptimierungen
Diese gelten nur für erweiterte Minimal-Builds oder vollständige Builds.
Gespeicherte Laufzeitoptimierungen
Einige Graph-Optimierer unterstützen zusätzliche Modi zum Speichern und Laden von Informationen über potenzielle Graph-Optimierungen aus dem ORT-Modellformat. Diese potenziellen Optimierungen werden als gespeicherte Laufzeitoptimierungen bezeichnet.
Gespeicherte Laufzeitoptimierungen werden nur zur Laufzeit angewendet, wenn sie noch anwendbar sind. Beispielsweise ist eine CPU Execution Provider (EP)-spezifische Optimierung für einige Knoten nur dann anwendbar, wenn diese Knoten zur Laufzeit dem CPU EP zugewiesen sind.
Beim Konvertieren von ONNX in das ORT-Format werden die potenziellen Optimierungen identifiziert (1) und ihre Auswirkungen werden zusammen mit dem Graphen (ohne angewendete Optimierungen) im ORT-Modellformat gespeichert. Später, beim Laden des ORT-Modellformats mit gespeicherten Laufzeitoptimierungen, werden die Auswirkungen potenzieller Optimierungen angewendet (2), wenn die potenziellen Optimierungen noch anwendbar sind.
In einem erweiterten Minimal-Build ist nur ausreichend Implementierung enthalten, um (2) zu unterstützen, wodurch die Binärgröße reduziert wird.
Graph-Optimierer
Einige Graph-Optimierer sind auch in einem erweiterten Minimal-Build vollständig aktiviert und können direkt auf ein ORT-Modellformat angewendet werden. Ein Beispiel ist der NHWC-Transformer.
Auswahl, ob Laufzeitoptimierungen verwendet werden sollen
Die Verwendung von Laufzeitoptimierungen ist optional. Im Allgemeinen besteht die Wahl zwischen der Verwendung eines ORT-Modellformats mit gespeicherten Laufzeitoptimierungen und der Verwendung eines vollständig optimierten ORT-Modellformats.
Ein vollständig optimiertes Modell verfügt über den vollständigen Satz von ONNX Runtime-Optimierungen (auf erweiterter Ebene oder höher), ist aber zur Modellkonvertierungszeit für die Konfiguration vollständig optimiert.
Ein Modell mit gespeicherten Laufzeitoptimierungen verfügt über weniger verfügbare Optimierungen, aber mehr Flexibilität zur Laufzeit. Beispielsweise kann ein kompilierender EP wie der NNAPI EP zur Laufzeit den Satz der von ihm zu verarbeitenden Knoten beanspruchen, und die verbleibenden Knoten können mit gespeicherten Laufzeitoptimierungen weiter optimiert werden.
Sie können die Leistung von
- Ein vollständig optimiertes Modell, das nur mit aktiviertem CPU EP ausgeführt wird
- Ein Modell mit gespeicherten Laufzeitoptimierungen, das mit zusätzlichen aktivierten EPs ausgeführt wird
Der Model Usability Checker bietet Anleitungen für ein bestimmtes Modell.