Consuma modelos de aprendizado de máquina
Depois de treinar um modelo de aprendizado de máquina, é hora de consumi-lo para que você possa fazer previsões.
ML.NET modelos são serializados e salvos em um arquivo. Você pode carregar o arquivo de modelo em qualquer aplicativo .NET e usá-lo para fazer previsões por meio de APIs ML.NET.
O Construtor de Modelos facilita o consumo do modelo em aplicativos existentes usando trechos de código e em novos aplicativos usando modelos.
Trechos de código
Se você tiver um aplicativo existente onde deseja usar seu modelo para fazer previsões, um trecho de código simplifica o processo. Para usar um trecho de código em seu aplicativo:
- Adicione uma referência à biblioteca de classes que contém seu modelo do projeto onde você usará o modelo.
- Adicione o trecho de código ao seu aplicativo.
O trecho de código cria uma instância da entrada do modelo. Em seguida, ele chama o Predict
método no arquivo .consumption.cs para fazer previsões usando os dados de entrada que você forneceu.
Modelos de projeto
Como o código de treinamento e consumo gerado automaticamente durante o processo de treinamento, o Construtor de Modelos fornece os seguintes modelos para gerar automaticamente novos aplicativos .NET para consumir seu modelo.
Aplicação de consola
O modelo de aplicativo de console é um aplicativo C# .NET que usa seu modelo para fazer previsões. Ele contém os seguintes arquivos:
- Program.cs: O ponto de entrada do seu aplicativo. Semelhante ao trecho de código, esse arquivo cria uma instância da entrada do modelo, usa o
Predict
método no arquivo .consumption.cs e exibe o resultado no console. - <MODEL-NAME.mbconfig>: O arquivo .mbconfig para seu modelo e código de treinamento e consumo gerado. Esses arquivos são copiados do projeto de biblioteca de classes onde você adicionou originalmente o projeto de aprendizado de máquina.
API da Web
O modelo de API da Web é um projeto ASP.NET Core criado por meio do modelo de aplicativo de API ASP.NET Minimal para simplificar a hospedagem de seu modelo como um serviço Web. As APIs da Web oferecem a flexibilidade de fazer previsões com seu modelo sobre solicitações da Web HTTP de vários clientes, como desktop, Web e aplicativos móveis.
O modelo de API da Web contém os seguintes arquivos:
Program.cs: O ponto de entrada do seu aplicativo. Nesse arquivo, seu aplicativo configura o serviço usando injeção
PredictionEnginePool
de dependência, define um único/predict
ponto de extremidade e inicia seu aplicativo para escutar solicitações HTTP de entrada.Como parte da definição de ponto final
predict
, um manipulador também é definido. O manipulador usa oPredictionEnginePool
serviço para fazer previsões sobre solicitações JSON de entrada que contêm os dados de entrada do modelo. Em seguida, o manipulador retorna os resultados dessas previsões de volta ao cliente.<MODEL-NAME.mbconfig>: O arquivo .mbconfig para seu modelo e código de treinamento e consumo gerado. Esses arquivos são copiados do projeto de biblioteca de classes onde você adicionou originalmente o projeto de aprendizado de máquina.
Importante
O projeto de API da Web não usa o Predict
método no arquivo .consumption.cs . Em vez disso, ele se registra PredictionEnginePool
como um serviço usando a injeção de dependência. PredictionEngine
não é thread-safe. Você também precisa criar uma instância dele em todos os lugares em que for necessário dentro do seu aplicativo. À medida que seu aplicativo cresce, esse processo pode se tornar incontrolável.
Para melhorar o desempenho e a segurança de threads, use uma combinação de injeção de dependência e o serviço, que cria um ObjectPool
de PredictionEngine
objetos para uso em todo o PredictionEnginePool
aplicativo.
Para saber mais sobre a injeção de dependência, consulte Injeção de dependência no ASP.NET Core.
Na próxima unidade, você consumirá o modelo treinado para prever falhas de máquina em um aplicativo de console .NET.