Capítulo 99 – Machine Learning – Guia Definitivo – Parte 9
Nos 10 capítulos finais (de 91 a 100) deste livro online vamos trazer um grande resumo sobre Machine Learning. O objetivo é fornecer uma visão clara do que é e como Machine Learning está sendo usado no dia a dia, um pouco de matemática, as principais regras e princípios. Queremos ainda que esses capítulos finais possam servir de material de referência para os alunos que estão buscando as certificações oferecidas pela DSA no Bootcamp de Certificação.
Serão 10 partes no total com um guia completo sobre Machine Learning. Aproveite a leitura para compreender de forma definitiva o que é uma das tecnologias mais incríveis do nosso tempo.
Neste capítulo vamos continuar abordando algumas regras que iniciamos no capítulo anterior e que raramente você verá sendo explicadas nos cursos em geral por aí, pelo simples fato que muitos que ensinam Machine Learning nunca colocaram um modelo em produção. Vamos agora responder à seguinte pergunta: Quais são as estratégias ideais para o deploy de modelos de Machine Learning?
Boa leitura!
Regra 36: Deploy do Modelo Como Web Service
A maneira mais simples de implantar um modelo de aprendizado de máquina é criar um web service para entregar as previsões do modelo. Um web service é um sistema de software que suporta interação máquina a máquina interoperável em uma rede.
Para criar um web service de aprendizado de máquina, você precisa de pelo menos três etapas:
– O primeiro passo é criar um modelo de aprendizado de máquina, treiná-lo e validar seu desempenho, normalmente tarefa de um Cientista de Dados.
– Na segunda etapa, precisamos persistir o modelo, ou seja, gravar o modelo em um arquivo no disco. O ambiente em que implantamos o web service geralmente é diferente de onde treinamos o modelo. Assim, essa separação ajuda as empresas a otimizar seus orçamentos e esforços. Aplicamos a serialização para persistir o modelo em disco e isso pode ser feito através de diferentes bibliotecas em Linguagens Python, R, Scala, C++ ou Java.
– Finalmente, na terceira etapa, podemos servir o modelo usando um framework web ou serviço na nuvem. O modelo é hospedado em um ambiente diferente, geralmente em um servidor na nuvem. A partir do framework web implementamos o web service que será responsável por receber os novos dados, passá-los ao pipeline de processamento e ao modelo, receber a resposta com a previsão e entregar de volta ao chamador.
Implementar um web service é normalmente tarefa de um Engenheiro de Machine Learning e temos diversas ferramentas para esse propósito.
Regra 37: Deploy do Modelo Para Previsões em Batch
Podemos fazer o deploy de modo que os modelos de Machine Learning forneçam previsões em tempo real (usando web service, por exemplo). Nesse caso chamamos de modelos online. Mas em diversas situações é preferível ter as previsões em batch (lote) e nesse caso chamamos de modelos offline.
Os modelos offline podem ser otimizados para lidar com um alto volume de instâncias e executar modelos mais complexos. Uma outra vantagem desse tipo de deploy é que normalmente podemos usar um único tipo de hardware sem preocupação com escalabilidade.
A previsão em lote pode ser tão simples quanto chamar a função de previsão com um conjunto de dados de variáveis de entrada. Isso pode ser feito via linha de comando, no Jupyter Notebook, no RStudio ou com script automatizado.
Às vezes, você terá que agendar o treinamento ou a previsão no método de processamento em lote. Existem várias maneiras de fazer isso. Uma alternativa é usar o Airflow ou o Prefect para automatizar a tarefa.
No entanto, a construção do modelo pode exigir vários estágios na estrutura de processamento em lote. Você precisa decidir quais recursos são necessários e como deve construir o modelo para cada estágio. O ideal é treinar o modelo em um sistema de computação de alto desempenho com uma estrutura de processamento em lote apropriada.
Normalmente, você particiona os dados de treinamento em segmentos que são processados sequencialmente, um após o outro. Você pode fazer isso dividindo o conjunto de dados usando um esquema de amostragem (por exemplo, amostragem balanceada, amostragem estratificada) ou por meio de algum algoritmo (por exemplo, map-reduce).
As partições podem ser distribuídas para várias máquinas, mas todas devem carregar o mesmo conjunto de recursos. O dimensionamento de recursos é recomendado. Se você usou pré-treinamento não supervisionado (por exemplo, codificadores automáticos) para Transfer Learning, deverá desfazer cada partição.
Após a execução de todos os estágios, você pode fazer previsões em novos dados com o modelo resultante iterando sequencialmente nas partições.
Regra 38: Deploy do Modelo em Dispositivos de Borda (Edge) Como Modelos Incorporados
A computação em dispositivos de borda (Edge Computing), como dispositivos móveis e IoT, tornou-se muito popular nos últimos anos. Os benefícios de implantar um modelo de aprendizado de máquina em dispositivos de borda incluem, mas não estão limitados a:
Latência reduzida, pois o dispositivo provavelmente estará mais próximo do usuário do que um servidor distante.
Reduz o consumo de largura de banda de dados à medida que enviamos os resultados processados de volta para a nuvem, em vez de dados brutos que geralmente são maiores e, eventualmente, consomem mais largura de banda.
Mas dispositivos de borda, como dispositivos móveis e IoT, têm poder de computação e capacidade de armazenamento limitados devido à natureza de seu hardware. Não podemos simplesmente implantar modelos de aprendizado de máquina diretamente nesses dispositivos da mesma forma que faríamos em um servidor, especialmente se nosso modelo for grande ou exigir computação extensiva para executar inferência neles.
Em vez disso, devemos simplificar o modelo usando técnicas como quantização e agregação, mantendo a precisão. Esses modelos simplificados podem ser implantados com eficiência em dispositivos de borda com computação, memória e armazenamento limitados.
Podemos usar a biblioteca TensorFlow Lite para simplificar nosso modelo TensorFlow. O TensorFlow Lite é uma biblioteca de software de código aberto para dispositivos móveis e incorporados que tenta fazer o que o nome diz: executar modelos do TensorFlow em plataformas móveis e incorporadas.
Regra 39: Monitoramento do Modelo em Produção
O estágio de monitoramento do ciclo de vida da Ciência de Dados começa após a implantação bem-sucedida de um modelo.
O monitoramento garante que o modelo esteja funcionando corretamente e que suas previsões sejam eficazes. Claro, não é apenas o modelo que precisa ser monitorado, principalmente durante as primeiras execuções. A equipe de implantação precisa garantir que o software e os recursos de suporte estejam funcionando conforme necessário e que os usuários finais tenham sido suficientemente treinados. Aqui normalmente temos Engenheiros DataOps e Engenheiros de Dados atuando.
Vários problemas podem surgir após a implantação: os recursos podem não ser adequados, o feed de dados pode não estar conectado corretamente ou os usuários podem não estar usando os aplicativos de forma adequada.
Depois que sua equipe determinar que o modelo e seus recursos de suporte estão funcionando corretamente, o monitoramento ainda precisa continuar, mas a maior parte disso pode ser automatizada até que surja um problema.
A melhor maneira de monitorar um modelo é avaliar rotineiramente seu desempenho em seu ambiente implantado. Este deve ser um processo automatizado, usando ferramentas que rastrearão as métricas para alertá-lo automaticamente caso haja alterações em sua precisão, precisão ou pontuação F.
Cada modelo implantado tem o potencial de se degradar ao longo do tempo devido a problemas como:
– Variação nos dados. Muitas vezes, os dados fornecidos ao modelo na implantação não são limpos da mesma maneira que os dados de treinamento e teste, resultando em alterações na implantação do modelo.
– Alterações na integridade dos dados. Ao longo de semanas, meses ou anos, as alterações nos dados que estão sendo alimentados no modelo podem afetar negativamente o desempenho do modelo, como alterações nos formatos, campos renomeados ou novas categorias.
– Desvio de dados. Mudanças na demografia ou mudanças no mercado podem causar desvios ao longo do tempo, tornando os dados de treinamento menos relevantes para a situação atual e os resultados do modelo, portanto, menos precisos. Por isso o modelo deve ser re-treinado periodicamente.
– Mudança de conceito. Mudanças nas expectativas dos usuários finais sobre o que constitui uma previsão correta podem mudar ao longo do tempo, tornando as previsões do modelo menos relevantes.
Usando uma plataforma de Ciência de Dados corporativa, você pode monitorar automaticamente cada um desses problemas, usando uma variedade de ferramentas de monitoramento, e fazer com que a equipe de Ciência de Dados seja alertada assim que a variação for detectada no modelo.
Regra 40: Planejar e Projetar Protocolos Robustos de Monitoramento, Auditoria e Reciclagem
Antes de implantar e usar um modelo preditivo, você precisa entender se ele está realmente entregando o tipo de resultado que você estava procurando. Você deve verificar se esses resultados são precisos e também se os dados que você está carregando no modelo manterão esses modelos consistentes e relevantes ao longo do tempo. Além disso, dados muito antigos usados no treinamento podem criar desvios no modelo, levando a resultados imprecisos.
Isso implica que você deve criar processos de treinamento e pipelines que atraiam novos dados, monitorem suas fontes de dados internas e informem quais recursos ainda estão fornecendo informações importantes.
Você nunca deve ficar complacente em relação a isso, ou os modelos podem estar influenciando as decisões de negócio em direções inúteis. É essencial manter os processos em posição para monitorar os resultados, garantindo que você não esteja apenas configurando cada vez mais tipos de dados errados em seu modelo preditivo.
Você também deve realizar testes AB para descobrir o desempenho desses modelos em diferentes versões.
O próximo capítulo é o de número 100, o último deste livro. E você não pode deixar de conferir o que preparamos!
Referências:
Machine Learning com Python e R