Ir para o conteúdo
Ir para insights Blog

Monitorização de modelos: maximize o desempenho dos seus modelos

Monitorização de modelos: maximize o desempenho dos seus modelos
Escrito por
Data Science Lab
Publicado em
28 de outubro de 2024

O machine learning (ML) não termina com o desenvolvimento de um modelo—na verdade, isso é apenas o início. Muitas organizações concentram-se sobretudo na construção do modelo, mas esquecem-se de que o verdadeiro trabalho começa quando este entra em produção. Um modelo só tem valor se continuar a ter um bom desempenho, o que exige manutenção e monitorização contínuas. 

O MLOps, uma combinação de machine learning e operações, gere todo o ciclo de vida de um modelo, no qual a monitorização desempenha um papel crucial. Como garantir que um modelo se mantém fiável a longo prazo? Como evitar que fique desatualizado ou faça previsões imprecisas? Este artigo aborda a importância da monitorização, as suas vantagens e os erros mais comuns, e apresenta dicas práticas para a implementar em Python, para que os seus modelos continuem a funcionar sem problemas, mesmo quando as circunstâncias mudam. 

O que é a monitorização? 

A monitorização é essencial para garantir que os modelos de machine learning continuam a ter um desempenho fiável em produção. Com várias técnicas e ferramentas, pode acompanhar continuamente o desempenho do seu modelo, detetar alterações nos dados e assegurar a precisão das previsões. Mas o que implica isto, concretamente? 

 
Os quatro principais pilares da monitorização de ML são: 

  • Monitorização do desempenho do modelo 
    Monitorizar o desempenho do seu modelo implica medir métricas essenciais como accuracy, precision, recall, F1-score e R-squared. Ao acompanhar estas métricas, pode agir rapidamente se o desempenho do modelo começar a diminuir. 
  • Deteção de data drift 
    Os modelos podem ficar desatualizados quando os dados de entrada mudam ao longo do tempo. A deteção de data drift ajuda a identificar alterações na distribuição dos dados, para que possa intervir antes de o desempenho do modelo se deteriorar significativamente. 
  • Monitorização operacional 
    Além do desempenho do modelo, é importante acompanhar o seu funcionamento operacional. Isto inclui métricas operacionais como latência, disponibilidade e mensagens de erro. Estes dados permitem avaliar a robustez do software que suporta o seu modelo. 
  • Deteção de ataques adversariais 
    Por vezes, os atacantes tentam deliberadamente induzir os modelos em erro com dados manipulados. A monitorização permite detetar cedo sinais de que dados de entrada invulgares estão a ser usados para manipular o seu modelo, como imagens que continuam a ser reconhecíveis para as pessoas, mas que levam o modelo a cometer erros. 

A monitorização não só ajuda a manter os modelos fiáveis, como também permite agir de imediato quando surgem anomalias ou problemas. 


A importância de escolher as métricas certas

Uma boa solução de monitorização não resolve automaticamente todos os problemas. Tal como em cada etapa do ciclo de MLOps, é importante ponderar as opções. À semelhança do que acontece no desenvolvimento do seu modelo, também na monitorização é necessário escolher as métricas certas. Estas métricas devem adequar-se ao seu caso específico, para que possa agir de forma direcionada e garantir que o modelo continua a contribuir da melhor forma possível para os objetivos. 

Isto aplica-se não só ao desempenho do seu modelo, mas também à monitorização do data drift. Antes de analisarmos mais detalhadamente os métodos de deteção de drift, uma breve distinção: data drift refere-se a alterações na distribuição dos dados de entrada. Concept drift, por sua vez, diz respeito a alterações na relação entre as variáveis de entrada e de saída. Ambos os tipos de drift acarretam riscos, e uma boa monitorização permite detetá-los e resolvê-los. No entanto, é crucial identificar a causa do drift para poder implementar uma solução direcionada e manter o seu modelo robusto. 

Como escolher as métricas certas para a deteção de drift? 

Na deteção de drift, importa escolher o teste estatístico adequado ao seu conjunto de dados e ao problema em causa. Isto exige um conhecimento aprofundado dos seus dados e uma escolha ponderada. Eis algumas questões importantes a considerar: 

  • Que tipo de dados utiliza? 
    Os dados são categóricos ou numéricos? Para dados numéricos, testes como o teste KS ou o MMD podem ser mais adequados, enquanto os testes do qui-quadrado e de Cramer’s V são mais adequados para dados categóricos. 
  • Qual é a dimensão do seu conjunto de dados? 
    A sensibilidade de alguns testes pode variar consoante a dimensão do conjunto de dados. 
  • O seu conjunto de dados segue uma distribuição normal? 
    Isto pode influenciar a escolha de determinados testes. 
  • Pretende focar-se em data drift ou concept drift? 
    Pretende monitorizar as alterações nos dados de entrada ou na relação entre os dados de entrada e os resultados? 
  • Pretende fazer deteção de drift online ou offline? 
    Trabalha com dados em batch ou dados em streaming? Precisa de reagir às alterações em tempo real? 
  • Pretende fazer deteção de drift univariada ou multivariada? 
    Foca-se em cada variável separadamente (univariada) ou pretende comparar várias variáveis em simultâneo (multivariada)? 
  • Que teste escolhe para detetar drift univariado? 
    Utiliza um teste diferente para cada variável ou escolhe um único teste para todas as variáveis? 
  • Que conjunto de dados utiliza para a deteção de drift? 
    Utiliza o conjunto de dados de treino como referência ou escolhe outro conjunto de dados, não processado, relativo ao mesmo período? 

A escolha do método certo para a deteção de drift depende, portanto, em grande medida do objetivo e das características do seu conjunto de dados. A monitorização não é uma solução 'plug-and-play'. Exige uma ponderação cuidadosa para encontrar a abordagem mais adequada. 

O que fazer após detetar drift? 

Quando é detetado drift, o passo seguinte depende do tipo de drift e da sua causa. É sempre aconselhável avaliar regularmente o modelo e voltar a treiná-lo. Com uma boa plataforma de experiment tracking, pode tomar uma decisão fundamentada sobre colocar ou não o novo modelo em produção. 

Se voltar a treinar o modelo não produzir o resultado pretendido, poderá ser necessária uma análise mais aprofundada. Isto pode implicar rever a feature engineering ou a escolha do algoritmo. Este trabalho manual pode ser demorado, mas por vezes é inevitável para melhorar o modelo. 

Automatizar a monitorização e a deteção de drift 

Embora por vezes sejam necessários passos manuais, grande parte da monitorização dos dados e dos modelos pode ser automatizada. Pode agendar verificações para detetar drift, registar automaticamente os resultados e configurar mecanismos que, por exemplo, iniciem uma tarefa de novo treino assim que seja detetado drift. Mas tenha cuidado com o excesso de automatização: o que acontece se um novo modelo for colocado automaticamente em produção sem verificações suficientes? Pode ser necessária uma aprovação manual para evitar riscos. 

Registo operacional 

Além da monitorização de drift, é importante registar os aspetos operacionais. Isto significa acompanhar a utilização do seu modelo, incluindo mensagens de erro, dados de latência e dados dos utilizadores. O registo operacional ajuda a identificar erros no ambiente de produção e fornece informação valiosa para uma manutenção eficiente. 

Como começar a monitorizar

Agora que sabe em que consiste a deteção de drift, talvez se pergunte: como posso aplicá-la na prática? É uma pergunta pertinente. Embora a deteção de drift faça sentido em teoria, a prática pode ser mais exigente. Sobretudo quando é necessária a deteção de drift em tempo real (online). Neste caso, os dados são processados assim que chegam, enquanto na deteção de drift offline são analisados em lotes. 

Muitos casos de uso exigem a deteção de drift online, porque o processamento em lotes nem sempre é suficientemente rápido ou viável. Isto exige não só os testes certos, mas também uma infraestrutura suficientemente robusta para processar dados em tempo real. É por isso que, muitas vezes, a deteção de drift só é implementada quando um projeto ou uma equipa atinge um nível mais elevado de maturidade em MLOps. 

Soluções cloud para a deteção de drift 

Os fornecedores de serviços cloud estão a responder à necessidade de deteção de drift e de registo operacional. Por exemplo, a Azure disponibiliza uma solução Data Drift integrada na sua plataforma Azure Machine Learning, que facilita bastante a monitorização de data drift. As soluções cloud são especialmente úteis para o registo operacional. 

O Amazon CloudWatch (AWS) fornece informação detalhada sobre o desempenho operacional dos seus modelos de ML, como mensagens de erro e dados de latência. 

O Azure Monitor oferece funcionalidades semelhantes, incluindo Log Analytics e Application Insights, que permitem centralizar os logs e configurar alertas para eventos importantes no seu código em produção. 

Ferramentas open-source para deteção de drift

Além destas soluções cloud, também existem ferramentas open-source eficazes. Para detetar drift em Python, pode usar três pacotes PIP populares: 

  • Evidently AI 
    Esta ferramenta fácil de usar centra-se especificamente em dados tabulares e suporta vários métodos de deteção de drift. 
  • Alibi-detect 
    Uma opção flexível e bem documentada que suporta dados tabulares, imagens e texto. O Alibi-detect inclui ainda um componente de deteção de ataques adversariais, que ajuda a melhorar a segurança dos seus modelos. 
  • NannyML 
    Tal como o Evidently, esta ferramenta é sobretudo adequada para dados tabulares e é fácil de integrar. É ligeiramente mais fácil de usar, mas tem um suporte limitado para outros tipos de dados. 
     

Embora as três ferramentas sejam úteis, cada uma tem as suas vantagens e desvantagens. O Evidently e o NannyML são mais fáceis de usar, enquanto o Alibi-detect oferece mais funcionalidades, mas é mais complexo. Combinar várias ferramentas pode muitas vezes ser a melhor forma de criar um sistema robusto de monitorização de drift. 

A nossa solução na Data Science Lab

Na DSL, optámos por combinar algumas destas ferramentas open-source para podermos oferecer uma solução de monitorização de drift de aplicação geral e fácil de usar. Ao aproveitar os pontos fortes de cada pacote, conseguimos monitorizar facilmente dados tabulares e detetar formas mais complexas de drift em imagens ou texto. Esta abordagem oferece flexibilidade e escalabilidade para diferentes casos de uso. 

Quais são as vantagens e desvantagens da monitorização?

Como referido anteriormente, um modelo de ML, tal como o software em que funciona, tem de ser mantido como se fosse um sistema "vivo". Os modelos têm de se adaptar regularmente ao seu ambiente para continuarem a ter um bom desempenho. No entanto, esta manutenção traz vantagens e desafios. 

Vantagens da monitorização 

  1. Melhor desempenho do modelo 
    A monitorização contínua do modelo permite detetar precocemente desvios no desempenho. Assim, pode fazer ajustes rapidamente para que o modelo continue a funcionar ao seu melhor nível. 
  1. Maior fiabilidade 
    A monitorização ajuda a garantir a integridade do modelo. Isto aumenta a confiança nas decisões tomadas pelo modelo, algo essencial para organizações que dependem de soluções de IA. 
  1. Resposta mais rápida às mudanças 
    Graças à monitorização, as organizações podem reagir de forma proativa a mudanças nos dados ou no comportamento do modelo. Em vez de resolver problemas depois de surgirem, pode tomar medidas antecipadamente, tornando as operações mais eficientes. 
     

Desafios e obstáculos 

  1. Aplicação na prática 
    Embora a monitorização pareça simples em teoria, pode ser difícil na prática. Exige uma infraestrutura robusta para o processamento de dados em tempo real e uma seleção cuidadosa dos testes de monitorização. Implementar uma solução de monitorização eficaz pode ser especialmente desafiante para organizações que não dispõem dos conhecimentos especializados ou dos recursos necessários. 
  1. Volume de dados 
    Acompanhar demasiadas métricas pode ser difícil de gerir. Sem uma estratégia clara, pode ser complicado obter informações relevantes a partir da grande quantidade de dados, o que torna o processo de monitorização desnecessariamente complexo. 
  1. Sensibilidade excessiva a pequenas alterações 
    Quando uma solução de monitorização é demasiado sensível, pode levar a reações excessivas a pequenas alterações nos dados. Isto pode consumir tempo e recursos desnecessariamente, porque se iniciam com frequência novos ciclos de treino, investigações ou melhorias sem que haja uma necessidade real. 

Conclusão

A monitorização é uma parte essencial da implementação e manutenção bem-sucedidas de um ciclo de MLOps maduro. Ao prestar atenção às métricas certas, à deteção de drift e à automatização, as organizações podem otimizar o desempenho dos seus modelos e garantir que continuam fiáveis, mesmo num ambiente em rápida mudança. Ferramentas como Evidently AI, Alibi Detect, NannyML, bem como as opções de monitorização da Azure e da AWS, podem ser muito úteis para esse efeito. 

No entanto, também existem desafios na prática. As organizações precisam de atingir um determinado nível de maturidade e dispor de uma infraestrutura robusta para utilizar a monitorização de forma eficaz. Mas os benefícios, como a melhoria do desempenho, o aumento da fiabilidade e uma resposta rápida, são claros e convincentes. Estar ciente das possíveis dificuldades é crucial para uma implementação bem-sucedida. 

Pronto para o próximo passo?

Quer saber mais sobre como a sua organização pode beneficiar de uma monitorização eficaz dos modelos e da deteção de drift? Contacte-nos. Teremos todo o gosto em ajudar a elevar a sua infraestrutura de MLOps a um novo patamar e a tirar o máximo partido das suas soluções de IA. É isso que o MLOps permite. 

Blog

Também poderá ter interesse nisto,

Subscreva a nossa newsletter.

Quer ser a primeira pessoa a saber quando publicamos um novo artigo no blogue?

Introduza um endereço de e-mail válido.