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 ".

Windows ML Runtime, Textgenerierungs- und Spracherkennungs-APIs (experimentell)

Für systemeigene C/C++-Szenarien, die explizite Laufzeit-, Pipeline-, Stage- und Tensorsteuerelemente benötigen, finden Sie in der Übersicht über die Windows ML-Runtime-API. Informationen zu Workflows auf höherer Ebene, die aus diesen Grundbausteinen zusammengesetzt sind, finden Sie unter Generieren von Text mit Ihrem eigenen Sprachmodell mithilfe von Windows ML und Erkennen von Sprache mit Ihrem eigenen Whisper-Modell mit Windows ML.

Diese nativen APIs werden im Microsoft.Windows.AI.MachineLearning NuGet-Paket ausgeliefert. Python Anwendungen können die entsprechenden windowsml.runtime und windowsml.tasks Projektionen verwenden.

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