Decidir sobre implantação em tempo real ou em lote
Ao implantar um modelo em um ponto de extremidade para se integrar a um aplicativo, você pode optar por desenvolvê-lo para previsões em tempo real ou em lotes.
O tipo de previsões necessárias depende de como você quer usar as previsões do modelo
Para decidir se você deseja criar uma solução de implantação em tempo real ou em lote, é necessário considerar as seguintes perguntas:
- Com que frequência as previsões devem ser geradas?
- Em quanto tempo os resultados são necessários?
- As previsões devem ser geradas individualmente ou em lotes?
- Quanto poder de computação é necessário para executar o modelo?
Identificar a frequência necessária de pontuação
Um cenário comum é que você está usando um modelo para pontuar novos dados. Antes de obter previsões em tempo real ou em lote, você deve primeiro coletar os novos dados.
Há várias maneiras de gerar ou coletar dados. Também é possível coletar novos dados em intervalos de tempo diferentes.
Por exemplo, você pode coletar dados de temperatura de um dispositivo IoT (Internet das Coisas) a cada minuto. Você pode obter dados transacionais sempre que um cliente compra um produto em sua loja online. Ou você pode extrair dados financeiros de um banco de dados a cada três meses.
Em geral, há dois tipos de casos de uso:
- Você precisa do modelo para pontuar os novos dados assim que forem fornecidos.
- Você pode agendar ou disparar o modelo para pontuar os novos dados coletados ao longo do tempo.
Quer você queira previsões em tempo real ou em lotes, isso não depende necessariamente da frequência da coleta de novos dados. Em vez disso, depende da frequência e da rapidez com que você precisa gerar as previsões.
Se você quiser as previsões do modelo imediatamente quando os novos dados forem coletados, precisará de previsões em tempo real. Se as previsões do modelo forem consumidas apenas em determinados momentos, você precisará de previsões em lote.
Decida o número de previsões
Outra definição importante é se você precisa que as previsões sejam geradas individualmente ou em lotes.
Uma maneira simples de ilustrar a diferença entre previsões individuais e em lotes é imaginar uma tabela. Suponha que você tenha uma tabela de dados do cliente em que cada linha representa um cliente. Para cada cliente, você tem alguns dados demográficos e dados comportamentais, como quantos produtos eles compraram de sua loja online e quando foi a última compra.
Com base nesses dados, você pode prever a rotatividade do cliente: se um cliente comprará novamente na sua loja online ou não.
Depois de treinar o modelo, você pode decidir se deseja gerar previsões:
- Individualmente: o modelo recebe uma única linha de dados e retorna se esse cliente individual comprará novamente ou não.
- Lote: o modelo recebe várias linhas de dados em uma tabela e retorna se cada cliente comprará novamente ou não. Os resultados são agrupados em uma tabela com todas as previsões.
Você também pode gerar previsões individuais ou em lotes ao trabalhar com arquivos. Por exemplo, ao trabalhar com um modelo de pesquisa visual computacional, talvez seja necessário pontuar uma imagem individualmente ou uma coleção de imagens em um lote.
Considere o custo da computação
Além de usar a computação ao treinar um modelo, você também precisa de computação ao implantar um modelo. Dependendo se o modelo será implantado em um ponto de extremidade em tempo real ou em lote, você usará diferentes tipos de computação. Para decidir se deseja implantar seu modelo em um ponto de extremidade em tempo real ou em lote, você deve considerar o custo de cada tipo de computação.
Se você necessitar de previsões em tempo real, precisará de computação sempre disponível e capaz de retornar os resultados (quase) imediatamente. Tecnologias de contêiner como a ACI (Instância de Contêiner do Azure) e o AKS (Serviço de Kubernetes do Azure) são ideais para esses cenários, pois fornecem uma infraestrutura leve para o modelo implantado.
No entanto, quando você implanta um modelo em um ponto de extremidade em tempo real e usa essa tecnologia de contêiner, a computação estará sempre ativada. Depois que um modelo é implantado, você pagará continuamente pela computação, que não pode ser pausada ou parar, pois o modelo deve estar sempre disponível para previsões imediatas.
Como alternativa, se você precisar de previsões em lotes, precisará de computação que possa lidar com uma carga de trabalho grande. O ideal é usar um cluster de computação que possa pontuar os dados em lotes paralelos usando vários nós.
Ao trabalhar com clusters de computação que podem processar dados em lotes paralelos, o cálculo é provisionado pelo espaço de trabalho quando a pontuação do lote é acionada e reduzido para 0 nós quando não há novos dados para processar. Ao permitir que o workspace reduza horizontalmente um cluster de computação ocioso, você pode economizar custos significativos.
Decidir sobre implantação em tempo real ou em lote
Escolher uma estratégia de implantação para seus modelos de machine learning pode ser um desafio, pois diferentes fatores podem influenciar sua decisão.
Se você quiser as previsões do modelo imediatamente assim que os novos dados forem coletados, precisará de previsões em tempo real.
Se você precisar do modelo para pontuar novos dados quando um lote de dados estiver disponível, deverá obter previsões em lotes.
Há cenários em que você imagina que vai precisar de previsões em tempo real quando as previsões em lote poderiam ser mais econômicas. Lembre-se de que você pagará continuamente pela computação com implantações em tempo real, mesmo quando nenhuma nova previsão for gerada.
Se você puder permitir um atraso de 5 a 10 minutos ao precisar de previsões imediatas, poderá optar por implantar seu modelo em um ponto de extremidade em lote. O atraso será causado devido ao tempo necessário para iniciar o cluster de computação depois que o ponto de extremidade for disparado. No entanto, o cluster de computação também será interrompido depois que a previsão for gerada, minimizando os custos e sendo potencialmente uma solução mais econômica.
Por fim, você também precisa considerar a computação necessária para o modelo pontuar os novos dados. Modelos mais simples exigem menos custo e tempo para gerar previsões. Modelos mais complexos podem exigir mais poder de computação e tempo de processamento para gerar as previsões. Portanto, você deve considerar como implantará seu modelo antes de decidir como treinará seu modelo.