Korzystanie z modeli uczenia maszynowego
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:
- Dodaj odwołanie do biblioteki klas zawierającej model z projektu, w którym będzie używany model.
- 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żywaPredictionEnginePool
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.