Nutzen von Machine Learning-Modellen

Abgeschlossen

Nachdem Sie ein Machine Learning-Modell trainiert haben, können Sie es zum Treffen von Vorhersagen nutzen.

ML.NET-Modelle werden serialisiert und in einer Datei gespeichert. Sie können die Modelldatei in eine beliebige .NET-Anwendung laden und über die ML.NET-APIs Vorhersagen treffen.

Mit Model Builder können Sie Ihr Modell ganz einfach in Anwendungen nutzen, indem Sie Codeausschnitte in vorhandenen Anwendungen und Vorlagen in neuen Anwendungen verwenden.

Codeausschnitt

Wenn Sie über eine vorhandene Anwendung verfügen, für die Sie mit Ihrem Modell Vorhersagen treffen möchten, vereinfacht ein Codeausschnitt den Prozess. So verwenden Sie einen Codeausschnitt in Ihrer Anwendung:

  1. Fügen Sie einen Verweis auf die in Ihrem Modell enthaltene Klassenbibliothek aus dem Projekt hinzu, in dem Sie das Modell verwenden werden.
  2. Fügen Sie der Anwendung den Codeausschnitt hinzu.

Der Codeausschnitt erstellt eine Instanz Ihrer Modelleingabe. Anschließend wird die Methode Predict in der CONSUMPTION.CS-Datei aufgerufen, um mithilfe der von Ihnen bereitgestellten Eingabedaten Vorhersagen zu treffen.

Projektvorlagen

Wie der Trainings- und Nutzungscode, der während des Trainingsprozesses automatisch generiert wird, bietet Model Builder die folgenden Vorlagen zum automatischen Erstellen neuer .NET-Anwendungen, um Ihr Modell zu nutzen.

Konsolenanwendung

Die Konsolenanwendungsvorlage ist eine C#-.NET-Anwendung, die Ihr Modell verwendet, um Vorhersagen zu treffen. Er enthält die folgenden Dateien:

  • Program.cs: Der Einstiegspunkt für Ihre Anwendung. Ähnlich wie der Codeausschnitt erstellt diese Datei eine Instanz der Modelleingabe, verwendet die Predict-Methode in der CONSUMPTION.CS-Datei und zeigt das Ergebnis in der Konsole an.
  • <MODEL-NAME>.mbconfig: Die MBCONFIG-Datei für Ihr Modell und generierter Trainings- und Nutzungscode. Diese Dateien werden aus dem Klassenbibliotheksprojekt kopiert, dem Sie ursprünglich das Machine Learning-Projekt hinzugefügt haben.

Web-API

Die Web-API-Vorlage ist ein ASP.NET Core-Projekt, das mit dem ASP.NET-Anwendungsmodell der Minimal-API erstellt wurde, um das Hosting Ihres Modells als Webdienst zu vereinfachen. Web-APIs bieten die Flexibilität, Vorhersagen mit Ihrem Modell über HTTP-Webanforderungen von verschiedenen Clients wie Desktop-, Web- und mobilen Anwendungen treffen zu können.

Die Web-API-Vorlage enthält die folgenden Dateien:

  • Program.cs: Der Einstiegspunkt für Ihre Anwendung. In dieser Datei konfiguriert Ihre Anwendung den PredictionEnginePool-Dienst mithilfe der Abhängigkeitsinjektion, definiert einen einzelnen /predict-Endpunkt und startet Ihre Anwendung, um auf eingehende HTTP-Anforderungen zu lauschen.

    Als Teil der Definition des Endpunkts predict wird auch ein Handler definiert. Der Handler verwendet den PredictionEnginePool-Dienst, um Vorhersagen für eingehende JSON-Anforderungen zu treffen, die Ihre Modelleingabedaten enthalten. Der Handler gibt dann die Ergebnisse dieser Vorhersagen an den Client zurück.

  • <MODEL-NAME>.mbconfig: Die MBCONFIG-Datei für Ihr Modell und generierter Trainings- und Nutzungscode. Diese Dateien werden aus dem Klassenbibliotheksprojekt kopiert, dem Sie ursprünglich das Machine Learning-Projekt hinzugefügt haben.

Wichtig

Das Web-API-Projekt verwendet nicht die Predict-Methode in der CONSUMPTION.CS-Datei. Stattdessen wird PredictionEnginePool mithilfe der Abhängigkeitsinjektion als Dienst registriert. PredictionEngine ist nicht threadsicher. Sie müssen auch überall dort eine Instanz erstellen, wo dies innerhalb Ihrer Anwendung erforderlich ist. Wenn die Anwendung wächst, kann dieser Prozess ggf. nicht mehr verwaltet werden.

Um eine bessere Leistung und Threadsicherheit zu erzielen, verwenden Sie eine Kombination aus Abhängigkeitsinjektion (Dependency Injection, DI) und dem PredictionEnginePool-Dienst, der einen ObjectPool aus PredictionEngine-Objekten für die Verwendung in Ihrer gesamten Anwendung erstellt.

Weitere Informationen zur Abhängigkeitsinjektion finden Sie unter Abhängigkeitsinjektion in ASP.NET Core.

In der nächsten Lerneinheit nutzen Sie das trainierte Modell, um Maschinenausfälle in einer .NET-Konsolenanwendung vorherzusagen.