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
- Unterstützte Versionen
- Builds
- API-Referenz
- Beispiele
- Soll ich die integrierte vs. die NuGet-Version von WinML verwenden?
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

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.
Unterstützte Versionen
Windows 8.1+
Builds
| Artefakt | Beschreibung | Unterstützte Plattformen |
|---|---|---|
| Microsoft.AI.MachineLearning | WinRT - CPU, GPU (DirectML) | Windows 8.1+ |
API-Referenz
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.