Korzystanie z modeli uczenia maszynowego

Ukończone

Po wytrenowania modelu uczenia maszynowego nadszedł czas, aby móc tworzyć przewidywania.

ML.NET modele są serializowane i zapisywane w pliku. Plik modelu można załadować do dowolnej aplikacji platformy .NET i użyć jej do przewidywania za pomocą interfejsów API ML.NET.

Narzędzie Model Builder ułatwia korzystanie z modelu w istniejących aplikacjach przy użyciu fragmentów kodu i w nowych aplikacjach przy użyciu szablonów.

Fragment kodu

Jeśli masz istniejącą aplikację, w której chcesz używać modelu do przewidywania, fragment kodu upraszcza proces. Aby użyć fragmentu kodu w aplikacji:

  1. Dodaj odwołanie do biblioteki klas zawierającej model z projektu, w którym będzie używany model.
  2. Dodaj fragment kodu do aplikacji.

Fragment kodu tworzy wystąpienie danych wejściowych modelu. Następnie wywołuje metodę Predict w pliku .consumption.cs w celu przewidywania przy użyciu podanych danych wejściowych.

Szablony projektu

Podobnie jak kod trenowania i użycia, który jest generowany automatycznie podczas procesu trenowania, narzędzie Model Builder udostępnia następujące szablony do automatycznego generowania nowych aplikacji platformy .NET do korzystania z modelu.

Aplikacja konsolowa

Szablon aplikacji konsolowej to aplikacja .NET w języku C#, która używa modelu do przewidywania. Zawiera on następujące pliki:

  • Program.cs: punkt wejścia aplikacji. Podobnie jak w fragmencie kodu, ten plik tworzy wystąpienie danych wejściowych modelu, używa Predict metody w pliku .consumption.cs i wyświetla wynik w konsoli.
  • <MODEL-NAME.mbconfig>: plik .mbconfig dla modelu i wygenerowany kod trenowania i użycia. Te pliki są kopiowane z projektu biblioteki klas, w którym pierwotnie dodano projekt uczenia maszynowego.

Internetowy interfejs API

Szablon internetowego interfejsu API to projekt ASP.NET Core utworzony za pośrednictwem modelu aplikacji interfejsu API ASP.NET Minimalny w celu uproszczenia hostowania modelu jako usługi internetowej. Internetowe interfejsy API zapewniają elastyczność tworzenia przewidywań za pomocą modelu za pośrednictwem żądań internetowych HTTP od różnych klientów, takich jak aplikacje klasyczne, internetowe i mobilne.

Szablon internetowego interfejsu API zawiera następujące pliki:

  • Program.cs: punkt wejścia aplikacji. W tym pliku aplikacja konfiguruje usługę PredictionEnginePool przy użyciu wstrzykiwania zależności, definiuje pojedynczy /predict punkt końcowy i uruchamia aplikację do nasłuchiwania przychodzących żądań HTTP.

    W ramach definicji punktu końcowego predict definiowana jest również procedura obsługi. Procedura obsługi używa PredictionEnginePool usługi do przewidywania przychodzących żądań JSON zawierających dane wejściowe modelu. Procedura obsługi zwraca następnie wyniki tych przewidywań z powrotem do klienta.

  • <MODEL-NAME.mbconfig>: plik .mbconfig dla modelu i wygenerowany kod trenowania i użycia. Te pliki są kopiowane z projektu biblioteki klas, w którym pierwotnie dodano projekt uczenia maszynowego.

Ważne

Projekt internetowego interfejsu Predict API nie używa metody w pliku .consumption.cs. Zamiast tego rejestruje PredictionEnginePool się jako usługa przy użyciu wstrzykiwania zależności. PredictionEngine nie jest bezpieczny wątkowo. Należy również utworzyć wystąpienie wszędzie tam, gdzie jest potrzebne w aplikacji. W miarę rozwoju aplikacji ten proces może stać się niezarządzany.

W celu zwiększenia wydajności i bezpieczeństwa wątków należy użyć kombinacji wstrzykiwania zależności i PredictionEnginePool usługi, która tworzy ObjectPool PredictionEngine obiekty do użytku w całej aplikacji.

Aby dowiedzieć się więcej na temat wstrzykiwania zależności, zobacz Wstrzykiwanie zależności w ASP.NET Core.

W następnej lekcji użyjesz modelu, który został przeszkolony w celu przewidywania awarii maszyny w aplikacji konsolowej platformy .NET.