A manutenção de modelos de machine learning é crucial para garantir sua precisão e utilidade ao longo do tempo. Neste artigo, vamos explorar boas práticas para planejar a manutenção de modelos de machine learning, incluindo cenários que exigem atualização, monitoramento da qualidade e desempenho do modelo, versionamento com Git e a implementação de CI/CD. Ao seguir essas práticas, as equipes de machine learning podem garantir a robustez e a precisão dos modelos, entregando consistentemente valor de negócio com machine learning.
Cenários que exigem atualização de modelos
Existem alguns cenários comuns que podem exigir que um modelo de machine learning seja atualizado ou retreinado:
- Manutenção não programada por degradação do desempenho
- Manutenção não programada por alertas
- Manutenção programada para incluir novas funcionalidades
- Manutenção não programada para corrigir bugs
Monitorando a qualidade e desempenho do modelo
Antes de falarmos sobre como atualizar e versionar modelos, é importante entender como monitorar sua qualidade e desempenho ao longo do tempo.
- Monitorar métricas de desempenho e qualidade do modelo
- Configurar alertas automatizados para disparar quando o desempenho ou a qualidade das previsões do modelo cruzam certos limiares inaceitáveis
- Manter um bom planejamento e processos bem definidos para atualizar, testar e recolocar modelos em produção com o mínimo de interrupção possível
Monitoramento contínuo do modelo de machine learning
O monitoramento contínuo de um modelo de machine learning é essencial para garantir sua eficácia e relevância ao longo do tempo. Métricas importantes devem ser monitoradas, incluindo acurácia, precisão e recall na base de validação, desempenho em dados recentes e em tempo real, taxa de erros ou rejeições, desvios em relação a métricas de baseline, drift de dados entre o conjunto de treino e aplicação, e métricas de negócio e satisfação dos usuários. Amostragens regulares dos dados de entrada e saída do modelo devem ser avaliadas para detectar deteriorações. Dashboards e relatórios devem compilar essas métricas e gerar alertas quando cruzarem certos limiares, facilitando a detecção de quando o modelo precisa ser atualizado.
- Acurácia, precisão e recall na base de validação
- Desempenho em dados recentes e em tempo real
- Taxa de erros ou rejeições
- Desvios em relação a métricas de baseline
- Drift de dados entre o conjunto de treino e aplicação
- Métricas de negócio e satisfação dos usuários
- Amostragens regulares dos dados de entrada e saída do modelo
- Utilização de dashboards e relatórios para compilar métricas e gerar alertas
Versionamento de modelos com Git
O Git é uma ferramenta essencial para versionar e gerenciar diferentes versões dos artefatos de um projeto de machine learning. Boas práticas para versionamento com Git incluem manter um repositório Git para cada projeto de ML, salvar dados de treino externamente e somente referenciá-los no Git, separar dados brutos de feature engineering, separar notebooks de preparação de dados do código de produção, codificar modelos, ETLs e orquestração em módulos Python, testar rigorosamente cada função e módulo, utilizar branches separadas para desenvolvimento e produção, e automatizar builds, testes e deploy com CI/CD.
- Manter um repositório Git para cada projeto de ML
- Salvar dados de treino externamente e referenciá-los no Git
- Separar dados brutos de feature engineering
- Separar notebooks de preparação de dados do código de produção
- Codificar modelos, ETLs e orquestração em módulos Python
- Testar rigorosamente cada função e módulo
- Utilizar branches separadas para desenvolvimento e produção
- Automatizar builds, testes e deploy com CI/CD
Estrutura de repositórios
Cada projeto de machine learning deve ter seu próprio repositório Git, normalmente com uma estrutura de diretórios que inclui pastas para dados, logs, notebooks, código fonte, testes, README e requirements. É importante manter referências para os dados externos utilizados, armazenar registros de eventos, métricas e outros metadados, conter análises exploratórias e experimentos nos notebooks, e incluir o código de produção, incluindo módulos Python com funções para ETL, treinamento, avaliação e serving do modelo, além de unit tests e testes integrados.
- Manter um repositório Git para cada projeto de machine learning
- Estruturar diretórios para dados, logs, notebooks, código fonte, testes, README e requirements
- Armazenar referências para dados externos utilizados
- Incluir análises exploratórias e experimentos nos notebooks
- Inserir o código de produção, módulos Python e testes integrados
- Documentar e permitir a reprodução do ambiente virtual do projeto
Branches e mesclagem
Features para mesclagem na principal. Além disso, branches específicas de hotfix podem ser utilizadas para correções rápidas na versão de produção sem passar pelo ciclo completo de CI/CD. Dessa forma, fica muito mais fácil colaborar com uma equipe no mesmo projeto e ter um histórico limpo de alterações em cada versão.
- Utilização de branches específicas para hotfixes
- Facilidade de colaboração em equipe
- Histórico limpo de alterações em cada versão
Commits descritivos
Cada commit no Git deve conter uma mensagem curta e descritiva explicando as alterações realizadas. Isso gera um histórico muito útil no futuro para entender o que foi alterado e por quê. Mensagens como “atualização do modelo” ou “ajustes no pré-processamento” não são suficientes. É melhor especificar qual modelo ou parte do ETL foi ajustada e o objetivo da alteração.
- Importância de mensagens descritivas em commits no Git
- Utilidade do histórico para compreender alterações futuras
- Exemplos de mensagens descritivas inadequadas
CI/CD para modelos de Machine Learning
CI/CD (integração e deploy contínuos) são práticas para automatizar o ciclo de vida do software com qualidade. Mas como aplicar CI/CD em projetos de machine learning? A ideia básica é que sempre que um novo commit com alterações é submetido ao branch principal, uma bateria de testes automatizados é executada. Se esses testes passarem, o commit é mesclado ao branch principal e uma nova versão do modelo é construída, testada e deployada para produção. Isso aumenta muito a velocidade do time em iterar e melhorar os modelos, além de adicionar qualidade ao que é deployado.
- Explicação sobre CI/CD e sua aplicação em projetos de machine learning
- Processo de testes automatizados após submissão de novos commits
- Benefícios em termos de velocidade e qualidade na iteração e melhoria de modelos
Testes típicos em pipeline de CI/CD
Alguns dos testes típicos nesse pipeline: Lint, Unit tests, Data tests e Model tests. Se algum desses testes falhar, o commit é rejeitado com um aviso para o desenvolvedor, que deve ajustar seu código antes de tentar novamente. Além disso, é possível configurar notificações no Slack ou e-mail para alertar times quando algum teste falhar ou quando uma nova versão for deployada com sucesso.
- Tipos de testes comuns em pipeline de CI/CD
- Procedimento em caso de falha nos testes
- Configuração de notificações para alertar times sobre falhas ou deploy bem-sucedido
Ferramentas populares para CI/CD em machine learning
Ferramentas populares para CI/CD em machine learning incluem GitHub Actions, CircleCI e Jenkins. Elas permitem definir pipelines completos de integração e deploy contínuos via código.
- Exemplos de ferramentas populares para CI/CD em machine learning
- Capacidade de definir pipelines completos via código
Torne-se um cientista de dados aprendendo tudo na prática!
Conheça a nossa Formação em Dados e elabore modelos estatísticos, criar algoritmos, solucionar problemas e ampliar estratégia de negócios, desenvolvendo habilidades como:
- Python Fundamentals
- Machine Learning
- SQL for Data Science
- Visualização de dados
- Metodologias Ágeis
- Big Data
- Estatística
- Manipulação e limpeza de dados
Conclusão
Manter modelos de machine learning precisos e robustos ao longo do tempo requer monitoramento, boas práticas de versionamento e automação. É importante detectar quando o desempenho dos modelos se degrada e atualizá-los rapidamente. Ferramentas como Git ajudam times a gerenciar diferentes versões e alterações. Já CI/CD adiciona qualidade e velocidade no processo de deploy de novas versões. Seguindo as boas práticas apresentadas neste artigo, fica muito mais fácil e seguro fazer experimentos e melhorias incrementais nos modelos ao longo do tempo. E assim entregar consistentemente valor de negócio com machine learning.