Windows ML-APIs

Konzeptionelle Anleitungen finden Sie unter Ausführen von ONNX-Modellen mit Windows ML.For conceptual guidance, see Run ONNX models with Windows ML).

Sie können sich die APIs im Microsoft.WindowsAppSDK.ML NuGet-Paket als Obermenge dieser beiden Gruppen vorstellen:

Das Microsoft.WindowsAppSDK.ML NuGet-Paket

Die Microsoft Windows ML-Runtime stellt APIs für maschinelles Lernen und KI-Vorgänge in Windows-Anwendungen bereit. Das Microsoft.WindowsAppSDK.ML NuGet-Paket stellt die Windows ML-Runtime-Dateien .winmd für die Verwendung in C#- und C++-Projekten bereit.

Die pywinrt Python-Wheels

Die Microsoft Windows ML-Runtime nutzt das Pywinrt-Projekt , um Python-Zugriff auf dieselben Windows ML-APIs bereitzustellen. Der Paketname ist winui3-Microsoft.Windows.AI.MachineLearning. Für die Verwendung des Windows App SDK in Python sind zusätzliche Pakete erforderlich. Ausführliche Informationen finden Sie im Thema "Ausführen von ONNX-Modellen mit Windows ML ".

Windows ML-APIs

Api-Referenzdokumentation und Codebeispiele finden Sie im Namespace "Microsoft.Windows.AI.MachineLearning ".

Implementierungshinweise

Die Windows ML-Runtime ist in das Windows App SDK integriert und basiert auf den Bereitstellungs- und Bootstrappingmechanismen:

  • Ermittelt automatisch Ausführungsanbieter, die mit aktueller Hardware kompatibel sind.
  • Verwaltet die Paketlebensdauer und -updates
  • Behandelt die Paketregistrierung und -aktivierung
  • Unterstützt verschiedene Versionen von Ausführungsanbietern

Frameworkabhängige Bereitstellung

Windows ML wird als frameworkabhängige Komponente bereitgestellt. Dies bedeutet, dass Ihre App eine der folgenden Aktionen ausführen muss:

  • Verweisen Sie auf das Hauptpaket des Windows App SDK NuGet, indem Sie einen Verweis auf Microsoft.WindowsAppSDK (empfohlen) hinzufügen.
  • Oder verweisen Sie auf beide Microsoft.WindowsAppSDK.ML und Microsoft.WindowsAppSDK.Runtime

Weitere Informationen zum Bereitstellen von Windows App SDK-Anwendungen finden Sie in der Dokumentation zum Verpacken und Bereitstellen von Windows-Apps .

Verwenden der ONNX-Runtime mit Windows ML

Verwenden Sie für C++-Anwendungen nach dem Registrieren von Ausführungsanbietern die ONNX-Runtime-C-API direkt, um Sitzungen zu erstellen und die Ableitung auszuführen.

Verwenden Sie für C#-Anwendungen die ONNX-Runtime direkt für die Ableitung mithilfe des Microsoft.ML.OnnxRuntime Namespaces.

Verwenden Sie für Python-Anwendungen das ONNX-Runtime-Rad onnxruntime-windowsml für die Ableitung.

Python-Notizen

Initialisieren des Windows App SDK

Alle Windows ML-Aufrufe sollten erfolgen, nachdem das Windows App SDK initialisiert wurde. Dies kann mit dem folgenden Code erfolgen:

from winui3.microsoft.windows.applicationmodel.dynamicdependency.bootstrap import (
    InitializeOptions,
    initialize
)
with initialize(options = InitializeOptions.ON_NO_MATCH_SHOW_UI):
    # Your Windows ML code here

Die Registrierung erfolgt außerhalb von Windows ML

Die ONNX-Laufzeit ist so konzipiert, dass die Python- und nativen Umgebungen getrennt sind. Und systemeigene Registrierungsaufrufe im selben Prozess funktionieren für die Python-Umgebung nicht. Daher sollte die Registrierung von Ausführungsanbietern direkt mit der Python-API erfolgen.

Entfernen Sie die eingebettete vcruntime von pywinrt

Das pywinrt-Projekt enthält eine msvcp140.dll im winrt-runtime-Paket. Dies kann mit anderen Paketen in Konflikt geraten. Entfernen Sie diese DLL, um dieses Problem zu vermeiden und installieren Sie die fehlenden vcruntime-Bibliotheken mit der vc redistributable

Siehe auch