Entenda o que é deploy de modelos em Machine Learning

Entender o que é deploy é fundamental para finalizar projetos e resolver problemas do negócio.

Foto de Mikhail Nilov no Pexels

Todo processo de Data Science envolve uma análise dos dados em busca de insights. Isso pode ser feito de forma mais simples, com uma análise exploratória que aplica conceitos estatísticos a fim de compreender a base de dados, ou com uma modelagem com machine learning. 

Caso parta para a modelagem, a pessoa cientista de dados provavelmente precisará passar esse modelo para a produção, a partir do deploy.

Deploy é o processo de finalização de um projeto, em que se gera um código para exportar a aplicação para ser usada por outras pessoas no dia a dia. No exemplo de um modelo de ML em um projeto de Data Science, é importante decidir como as pessoas usarão aquele modelo para realizar predições ou para identificar padrões e circunstâncias.

Por isso, quem estuda essa área precisa dominar o que é deploy e saber como otimizá-lo. Quando dominar, existe até mesmo uma área específica esperando por você: a de Engenharia de Machine Learning. 

Acompanhe os tópicos abaixo para entender mais sobre o tema.

O que é deploy de modelos de Machine Learning?

O deploy é a etapa de preparação de um modelo para ser usado no dia a dia, ou seja, adaptação a uma aplicação maior para que usuários façam uso do algoritmo.

Um modelo de machine learning geralmente é gerado na máquina de quem programa ou, nos casos mais recentes, em notebooks (ambientes que permitem desenvolvimento mais simples, com todas as bibliotecas carregadas) na nuvem.

Contudo, o modelo não deve parar lá mesmo. Afinal, se ele existe, foi criado para um propósito e só cumprirá esse propósito quando passar por uma última fase.

Por isso, temos a ideia de deployment, ou implantação: é a conexão entre o que foi criado no ambiente de desenvolvimento e uma aplicação real para usuários comuns. É o processo final em projetos de Engenharia de Software, por exemplo, que gera de fato o produto a ser comercializado. Envolve interfaces e design, com aplicação de conceitos de front-end.

No cenário da Ciência de Dados, o deploy é o que permite que a área de fato solucione os problemas do negócio. 

Digamos que seja preciso desenvolver um algoritmo para predizer possíveis fraudes em transações eletrônicas. Quando ocorre a implantação, profissionais preparam todo o código desenvolvido para que novas operações sejam passadas para ele e ele consiga realizar essa predição.

Se tratando de machine learning, existe uma preocupação extra com o deployment: diferente de produtos de outra natureza, uma aplicação com ML perde qualidade muito rápido, pois passa pelo que chamamos de degradação, à medida que os dados e a realidade mudam.

A degradação é a perda de precisão do algoritmo. Se ele acertava com uma probabilidade de 75%, passa a ter apenas 55%, por exemplo. Desse modo, já não ajuda tanto quanto ajudava.

Imagine o caso de uma fraude. As análises e modelagens foram feitas provavelmente com uma base histórica que apresentava um número limitado de características relevantes para determinar tipos específicos de fraude. Contudo, o que acontece quando novas fraudes começarem a ocorrer, com novas características? O deploy é o que cuida justamente dessa questão.

Diferentes estratégias de deploy

Existem diferentes abordagens de implantação para diferentes fins de distribuição de um modelo.

Primeiro, existe o caso de análises offline, feitas no próprio código do desenvolvedor. Serve para verificações pontuais com o modelo, com uma única resposta que deverá ser enviada ao solicitante. Um exemplo disso é uma análise ligada a um evento pontual. Nesse tipo, a noção de deploy é praticamente inexistente.

Existe também a necessidade de fazer deploy para análises em batch. Isto é, um conjunto de dados que é enviado em frequência regular para análises do modelo. Por exemplo: análises semanais.

Outro tipo é a análise em tempo real. Pode ser a situação de uma API (código de comunicação entre dois sistemas) para análise via web. Por exemplo, um cliente preenche um formulário na web e envia dados necessários para uma análise que determina o quanto ele deve ganhar de empréstimo. Nesse exemplo, o modelo é conectado a uma API que é implantada no código do site em questão.

Outro tipo é o deploy para streaming, que envolve uma certa complexidade maior, pois lida com mais dados chegando a todo tempo. Essas análises requerem, inclusive, uma estrutura de fila para hierarquizar as requisições.

Passos do processo de deploy de modelos

Vamos pensar em um exemplo simples de deploy via API para web em um problema típico de classificação - separar em duas categorias, como sim ou não. Então, os passos seriam:

  • Exportar o modelo: primeiro, é necessário exportar o modelo para uma versão salva com o treinamento que possa ser importada em outro ambiente;

  • Importar o modelo: em um ambiente de criação da estrutura de deploy, a pessoa programadora deve importar o modelo treinado;

  • Criar a API: nesse instante, cria-se um código para buscar os dados digitados nos formulários da interface web e transmiti-los para as variáveis usadas para a predição;

  • Testar a API: então, faz-se um teste com o que foi criado para verificar as predições.

Ferramentas usadas para deploy

Algumas ferramentas importantes para deploy são: 

  • Flask, um framework para Python que facilita a criação de APIs para a web; 

  • Pickle, que converte o modelo criado em um tipo de dado que pode ser salvo e depois facilmente carregado na memória; 

  • ou Docker, uma ferramenta mais robusta para deploy especializado.

Avançando no conceito: deploy automatizado e MLOps

Ok, você já entendeu como o deploy ocorre em um contexto de projeto envolvendo ML e os passos principais. Vamos avançar no assunto. Falaremos agora sobre o que é deploy automatizado e sobre MLOps.

O deploy automatizado é uma estratégia para implantar um algoritmo de forma simples e padronizada. Assim, tudo pode ser feito a partir de comandos fáceis, sendo que a implantação pode ser facilmente revertida também. Para isso, há um controle de versões que ajuda bastante.

Ou seja, é uma ferramenta típica para cenários em que você precisa realizar a implantação e atualizar o seu sistema continuamente. Tem a ver, inclusive, com a ideia de integração contínua, que ajuda na manutenção frequente a partir da concentração dos códigos em um único repositório, e de automação.

Isso é muito importante para o caso que mencionamos antes: em que é preciso fazer deploy continuamente, a fim de melhorar sempre o seu modelo para atender a novas complexidades da vida real. Para esse cenário, o ideal é desenvolver um pipeline de treinamento e de deploy automatizado, que prepara o sistema para ganhar novas características e melhorar seus resultados.

Assim, é possível garantir que o modelo seja melhorado toda vez que ocorre o natural fenômeno da degradação.

Daí, chegamos então ao MLOps, uma tendência de Data Science. Se você já ouviu ou leu sobre o DevOps, provavelmente já imagina que ambos estão conectados. Com razão. O MLOps visa conectar a pessoa cientista de dados com os desenvolvedores para facilitar mudanças no modelo e no aplicativo final de forma ágil, com a flexibilidade suficiente para atender às questões do dia a dia.

Assim, facilita os testes, o monitoramento do sistema e o lançamento de novas versões. Imagine novamente uma situação de modelo de prevenção de fraudes em compras. Tudo pode ser feito com rapidez e precisão para evitar crimes e problemas financeiros.

….

Como vimos, entender o que é deploy é fundamental para saber como o processo de Data Science de fato acaba. Assim, você consegue saber mais sobre a etapa que coloca os algoritmos para resolver problemas reais, bem como entender a complexidade que envolve essa parte. Como foi mencionado, existe uma carreira inteira que lida com isso: a engenharia de machine learning.

Gostou do conteúdo? Que tal saber mais sobre as carreiras existentes na área de dados? Confira!