Installieren und Bereitstellen von Windows ML

Windows ML unterstützt zwei Bereitstellungsmodi für die Windows ML-Runtime: eigenständig und frameworkabhängig. Wählen Sie basierend auf den Anforderungen für Größe, Aktualisierung und Abhängigkeit Ihrer App aus.

Weitere Informationen zu Windows ML finden Sie unter "Was ist Windows ML".

Schnellstart

Hier ist die kurze Version der Installation von Windows ML in Ihrem Projekt:

Für eigenständige Apps (erhöht die App-Größe um ~41 MB, wird nicht automatisch aktualisiert):

  • Installieren Sie für Apps, die auf Windows 10 Build 18362 oder höher ausgerichtet sind, Microsoft.Windows. AI. MachineLearning
  • Oder installieren Sie Microsoft.WindowsAppSDK.ML für Apps, die Windows 10 Build 17763 oder höher unterstützen.
  • Installieren Sie nicht Microsoft.WindowsAppSDK.Runtime oder das Hauptpaket Microsoft.WindowsAppSDK

Für frameworkabhängige (kleinere App-Größe, automatische Updates) installieren Sie:

Ausführliche Informationen zu den einzelnen Optionen finden Sie in den folgenden Abschnitten.

Anforderungen

Note

Mit .NET 6 können Sie den Microsoft.Windows.AI.MachineLearning-Namespace zum Installieren von Ausführungsanbietern verwenden, aber die Microsoft.ML.OnnxRuntime-APIs sind nicht verfügbar. Führen Sie ein Upgrade auf .NET 8 durch, um auf die vollständige Windows ML-API-Oberfläche zuzugreifen.

Was ist in der Windows ML Runtime?

Die Windows ML Runtime besteht aus diesen Binärdateien:

Binary Beschreibung Ca. Größe
Microsoft.Windows.AI.MachineLearning.dll Windows ML-APIs (ExecutionProviderCatalog usw.) ~1 MB
onnxruntime.dll Die ONNX-Laufzeitumgebung ~20 MB
DirectML.dll DirectML – der enthaltene GPU-Ausführungsanbieter ~20 MB
Gesamt ~41 MB

Anbieterausführungsanbieter (QNN, VitisAI, OpenVINO, NvTensorRtRtx, MIGraphX) sind nicht Teil der Windows ML Runtime. Sie werden separat bezogen – entweder über die ExecutionProviderCatalog zur Laufzeit oder von Ihnen selbst gebündelt. Siehe KI-Modelle beschleunigen.

Auswählen eines Bereitstellungsmodus

Bei Verwendung von Windows ML können Sie zwischen zwei Bereitstellungsmodi für die Windows ML-Runtime wählen: eigenständig und frameworkabhängig.

Eigenständig Framework-abhängig
Unterstützte Sprachen C#, C++/WinRT, C/C++ C#, C++/WinRT, Python
Unterstützte Verpackungstypen Entpackt und verpackt (MSIX) Entpackt und verpackt (MSIX)
Unternehmenseinführung Unterstützt Unterstützt
App-Größe Größer – Windows ML-Runtime-Binärdateien werden mit Ihrer App gebündelt (~41 MB) Kleiner – Windows ML-Runtime-Binärdateien werden systemweit gemeinsam genutzt
Windows ML-Updates Manuell – Sie versenden eine neue Version, wenn Sie wählen. Automatisch – Benutzer erhalten Updates über die Windows App SDK-Wartung
Abhängigkeit von installierter Laufzeit Nein – alle Abhängigkeiten befinden sich im App-Paket. Ja – Windows App SDK-Laufzeit muss vorhanden sein
NuGet-Paket (C#/C++) Microsoft.Windows.AI.MachineLearning oder Microsoft.WindowsAppSDK.ML Microsoft.WindowsAppSDK.ML + Microsoft.WindowsAppSDK.Runtime
Am besten geeignet für Strenge Versionskontrolle Apps, die eine minimale Download-/Installationsgröße erfordern; Apps, die über den Microsoft Store versenden

Eigenständige Installation

Apps können die Windows ML-Runtime-Binärdateien direkt in der App selbst enthalten. Es ist keine externe Laufzeitabhängigkeit erforderlich, ihre App ist jedoch größer. Dies ist die Standardeinstellung, wenn Sie auf Microsoft.Windows.AI.MachineLearning oder Microsoft.WindowsAppSDK.ML verweisen, ohne auf das Hauptpaket Microsoft.WindowsAppSDK oder Microsoft.WindowsAppSDK.Runtime zu verweisen. Wenn Sie die Windows App SDK-Pakete verwenden, finden Sie im Bereitstellungshandbuch für eigenständige Apps ausführliche Informationen.

Installieren oder aktualisieren Sie in Ihrem Projekt die folgenden NuGet-Pakete:

  • Für Apps für Windows 10 Build 18362 oder höher:
  • Oder für Apps, die auf Windows 10 Build 17763 oder höher ausgerichtet sind:
    • Installieren Sie Microsoft.WindowsAppSDK.ML(dies fügt die Windows ML-APIs und Binärdateien hinzu, standardmäßig eigenständig und bietet RegFree WinRT-Unterstützung für 17763).
  • Installieren Sie Microsoft.WindowsAppSDK.Runtime NICHT(dies würde den frameworkabhängigen Modus aktivieren... entfernen, wenn sie zurzeit installiert ist)
  • Installieren Sie nicht das Hauptpaket "Microsoft.WindowsAppSDK NuGet" (dies würde den frameworkabhängigen Modus aktivieren... entfernen, wenn sie zurzeit installiert ist)
  • Sie können andere Windows App SDK-Komponentenpakete wie Microsoft.WindowsAppSDK.AI installieren, solange Sie die Runtime oder das Hauptpaket nicht installieren.

Note

Wenn Sie das Hauptpaket Microsoft.WindowsAppSDK NuGet verwenden müssen, aktualisieren Sie es auf Version 1.8.1 oder höher, welches Windows ML und alle anderen Windows App SDK-APIs enthält, und legen Sie in Ihrer .csproj den Wert von WindowsAppSDKSelfContained auf true fest, um den eigenständigen Modus zu aktivieren.

Minimieren der eigenständigen App-Größe durch Ausschließen von DirectML

Note

Diese Konfiguration wird nicht offiziell unterstützt. Es basiert auf dem internen Dateilayout des Microsoft.Windows. KI. MachineLearning-Paket, das sich in einer zukünftigen Version ändern könnte. Testen Sie sorgfältig nach einem Paketupdate.

Die eigenständige Windows ML-Runtime bündelt drei Binärdateien: die Windows ML-API (Microsoft.Windows.AI.MachineLearning.dll), das ONNX-Runtime-Modul (onnxruntime.dll) und den DirectML-Ausführungsanbieter (DirectML.dll, ~20 MB). Wenn Ihre App nur ONNX-Runtime-APIs direkt aufruft und nie den DirectML-Ausführungsanbieter anfordert, können Sie den eigenständigen Speicherbedarf reduzieren DirectML.dll und ungefähr halbieren.

Führen Sie die eigenständigen Installationsschritte für C# aus, und fügen Sie dann ihrem Postbuildziel .csproj ein, um die nicht verwendete Binärdatei aus dem Ausgabeverzeichnis zu entfernen. Wenn Sie nicht für eine bestimmte RuntimeIdentifierArchitektur erstellen oder veröffentlichen, enthält die Ausgabe auch eine Kopie von DirectML.dll unter runtimes\<rid>\native\ für jede unterstützte Architektur (win-x64, win-arm64, win-arm64ec), und entfernen Sie diese ebenfalls:

<Target Name="RemoveUnusedWindowsMLBinaries" AfterTargets="Build">
  <ItemGroup>
    <_UnusedDirectML Include="$(OutDir)DirectML.dll" Condition="Exists('$(OutDir)DirectML.dll')" />
    <_UnusedDirectML Include="$(OutDir)runtimes\win-*\native\DirectML.dll" />
  </ItemGroup>
  <Delete Files="@(_UnusedDirectML)" />
</Target>

<Target Name="RemoveUnusedWindowsMLBinariesFromPublish" AfterTargets="Publish">
  <ItemGroup>
    <_UnusedDirectMLPublish Include="$(PublishDir)DirectML.dll" Condition="Exists('$(PublishDir)DirectML.dll')" />
    <_UnusedDirectMLPublish Include="$(PublishDir)runtimes\win-*\native\DirectML.dll" />
  </ItemGroup>
  <Delete Files="@(_UnusedDirectMLPublish)" />
</Target>

Frameworkabhängige Installation

Die frameworkabhängige Version der Windows ML-Runtime ist in der Windows App SDK Laufzeit enthalten, die auf dem Computer des Endbenutzers installiert werden muss. Ausführliche Informationen finden Sie unter "Bereitstellung für Windows App SDK frameworkabhängige Apps".

Installieren oder aktualisieren Sie in Ihrem Projekt die folgenden NuGet-Pakete:

Note

Alternativ können Sie das Hauptpaket "Microsoft.WindowsAppSDK NuGet" auf Version 1.8.1 oder höher installieren/aktualisieren, das Windows ML und alle anderen Windows App SDK-APIs enthält und standardmäßig frameworkabhängig ist.

Stellen Sie außerdem in Ihrer .csproj-Datei sicher, dass WindowsAppSDKSelfContained entweder nicht angegeben ist (nicht vorhanden) oder false, damit eine framework-abhängige Bereitstellung verwendet wird.

Sehen Sie sich schließlich die Bereitstellungsarchitektur für frameworkabhängige Apps an, um zu erfahren, wie Sie die Windows App SDK-Laufzeit zusammen mit Ihrer App auf den Geräten Ihres Benutzers bereitstellen.

Nächster Schritt

Siehe auch