Consumir modelos de machine learning

Concluído

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:

  1. Adicione uma referência à biblioteca de classes que contém o modelo do projeto onde você usará o modelo.
  2. 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ço PredictionEnginePool 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.