Consumir modelos de machine learning
Depois de treinar um modelo de machine learning, é hora de consumi-lo para que você possa fazer previsões.
Os modelos ML.NET 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 Model Builder facilita o consumo de seu modelo em aplicativos existentes usando snippets de código e em aplicativos novos usando modelos.
Snippet de código
Se você tiver um aplicativo no qual quer usar seu modelo para fazer previsões, o snippet de código simplificará o processo. Para usar o snippet de código no seu aplicativo:
- Adicione uma referência à biblioteca de classes que contém o modelo do projeto onde você usará o modelo.
- Adicione o snippet de código ao seu aplicativo.
O snippet de código cria uma instância da sua entrada de modelo. Depois ele chama o método Predict
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 de consumo gerado automaticamente durante o processo de treinamento, o Model Builder fornece os seguintes modelos para gerar automaticamente novos aplicativos .NET para consumir seu modelo.
Aplicativo de console
O modelo de aplicativo de console é um aplicativo .NET C# que usa o seu modelo para fazer previsões. Ele contém os seguintes arquivos:
- Program.cs: o ponto de entrada do seu aplicativo. Semelhante ao snippet de código, esse arquivo cria uma instância da entrada do modelo, usa o método
Predict
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 gerados. Esses arquivos são copiados do projeto de biblioteca de classes onde você originalmente adicionou o projeto de machine learning.
API Web
O modelo de API Web é um projeto do ASP.NET Core criado usando o modelo de aplicativo de API mínima do ASP.NET para simplificar a hospedagem do seu modelo como um serviço Web. As APIs da Web fornecem a flexibilidade de fazer previsões com o modelo sobre solicitações da Web HTTP de vários clientes, como aplicativos móveis, Web e de desktop.
O modelo de API Web contém os seguintes arquivos:
Program.cs: o ponto de entrada do seu aplicativo. Nesse arquivo, seu aplicativo configura o serviço
PredictionEnginePool
usando injeção de dependência, define um único ponto de extremidade/predict
e inicia seu aplicativo para escutar solicitações HTTP de entrada.Como parte da definição do ponto de extremidade
predict
, também é definido um manipulador. O manipulador usa o serviçoPredictionEnginePool
para fazer previsões em solicitações JSON de entrada que contêm os dados de entrada do modelo. Em seguida, o manipulador devolve os resultados dessas previsões para o cliente.<MODEL-NAME>.mbconfig: o arquivo .mbconfig para seu modelo e código de treinamento e consumo gerados. Esses arquivos são copiados do projeto de biblioteca de classes onde você originalmente adicionou o projeto de machine learning.
Importante
O projeto de API Web não usa o método Predict
no arquivo .consumption.cs. Em vez disso, ele registra um PredictionEnginePool
como um serviço usando injeção de dependência. PredictionEngine
não é thread-safe. Você também precisa criar uma instância dele em qualquer lugar que ele seja necessário dentro do seu aplicativo. À medida que seu aplicativo cresce, esse processo pode se tornar não gerenciável.
Para melhorar o desempenho e o acesso thread-safe, use uma combinação de injeção de dependência e o serviço PredictionEnginePool
, que cria um ObjectPool
dos objetos PredictionEngine
para uso em todo o aplicativo.
Para saber mais sobre injeção de dependência, confira Injeção de dependência no ASP.NET Core.
Na próxima unidade, você consumirá o modelo treinado para prever falhas de computadores em um aplicativo de console .NET.