Erste Schritte mit ONNX Runtime für Windows

Das ONNX Runtime NuGet-Paket bietet die Möglichkeit, die vollständige WinML-API zu nutzen. Dies ermöglicht Szenarien wie die direkte Übergabe eines Windows.Media.VideoFrame von Ihrer verbundenen Kamera an die Runtime für Echtzeit-Inferenz.

Die WinML-API ist eine WinRT-API, die ab Build 1809 (RS5) im Namespace Windows.AI.MachineLearning im Windows-Betriebssystem enthalten ist. Sie enthält eine Version der ONNX Runtime.

Neben der Verwendung der integrierten Version von WinML kann WinML auch als redistribuierbares Anwendungspaket installiert werden (siehe Direct ML Windows für technische Details).

Inhalt

Windows OS-Integration

ONNX Runtime ist in Windows 10 Versionen >= 1809 und allen Versionen von Windows 11 verfügbar. Sie ist in Windows.AI.MachineLearning.dll integriert und wird über die WinRT-API (kurz WinML) bereitgestellt. Sie enthält den CPU-Ausführungsanbieter und den DirectML-Ausführungsanbieter für die GPU-Unterstützung.

Das High-Level-Design sieht wie folgt aus

ONNX + WinML layered architecture

API-Auswahl

Sie können entweder die WinRT-API oder die C-API verwenden.

  WinRT C API
Typsystem Integration mit Windows RT-Typen Plattformunabhängige Typen
Sprachunterstützung Sprachunterstützung über WinRT-Projektionen Sprachunterstützung über projektspezifische Projektionen
Tensorisierung Akzeptiert VideoFrames und konvertiert sie in Tensoren (Unterstützung für CPU und GPU) Akzeptiert Tensoren

Verwendung der NuGet-WinRT-API mit anderen C-API-Distributionen

Das WinRT-API-NuGet-Paket wird mit einer bestimmten Version von ONNX Runtime verteilt, aber Apps können ihre eigene Version von ONNX Runtime einbinden (entweder eine veröffentlichte Version oder einen benutzerdefinierten Build). Möglicherweise möchten Sie dies tun, um nicht standardmäßige Ausführungsanbieter zu verwenden. Um Ihre eigene Version von ONNX Runtime zu verwenden, ersetzen Sie onnxruntime.dll durch Ihre gewünschte Version.

Zurück nach oben

Unterstützte Versionen

Windows 8.1+

Zurück nach oben

Builds

Artefakt Beschreibung Unterstützte Plattformen
Microsoft.AI.MachineLearning WinRT - CPU, GPU (DirectML) Windows 8.1+

API-Referenz

Windows.AI.MachineLearning

Beispiele

Jeder Code, der bereits für die Windows.AI.MachineLearning-API geschrieben wurde, kann leicht geändert werden, um gegen das Microsoft.ML.OnnxRuntime-Paket ausgeführt zu werden. Alle Typen, auf die ursprünglich von Inhouse-Kunden über den Windows-Namespace verwiesen wurde, müssen aktualisiert werden, um nun den Microsoft-Namespace zu verwenden.

Soll ich die integrierte vs. die NuGet-Version von WinML verwenden?

Zum Vergleich siehe Windows Machine Learning: Integrierte vs. NuGet WinML-Lösungen.

Um zu erkennen, ob eine bestimmte Windows-Betriebssystemversion über die WinML-APIs verfügt, verwenden Sie die Methode IsApiContractPresent. Diese kann von UWP- oder nativen Apps aufgerufen werden.

Wenn das Betriebssystem die benötigte Runtime nicht enthält, können Sie stattdessen auf die redist-Binärdateien umsteigen.

Release API-Vertragsversion
Windows OS 1809 1
Windows OS 1903 2
Windows OS 1909 2
ORT Release 1.2 3
ORT Release 1.3 3
ORT Release 1.4 3

Weitere Informationen zu Opsets und ONNX-Versionsdetails in Windows-Betriebssystemdistributionen finden Sie hier.

Zurück nach oben