Escolar Documentos
Profissional Documentos
Cultura Documentos
Open in app
Save
Disclaimer
Esse post é uma tradução e localização e foi originalmente escrito por Chris Samiullah, que me
autorizou traduzi-lo para Português. É possível ler o post original aqui, além de conhecer outros
trabalhos do autor.
This post is a translation and localization and was originally written by Chris Samiullah, who
authorized me to translate it into Portuguese. You can read the original post here, as well as
l b h k b h h
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 1/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Como saber modelos estão realmente se comportando como você espera? E se na próxima
semana/mês/ano o comportamento do cliente mudar e os dados de treinamento ficarem
desatualizados? Em muitos aspectos, a jornada está apenas começando e esses são desafios
complexos, além de serem agravados pelo fato de que o monitoramento do aprendizado de
máquina é um campo em rápida evolução em termos de ferramentas e técnicas. Como se isso
não bastasse, o monitoramento é um esforço verdadeiramente interdisciplinar, mas o termo
“monitoramento” pode significar coisas diferentes em ciência de dados, engenharia, DevOps
e nas áreas de negócio.
Dada essa combinação difícil de complexidade e ambigüidade, não é surpresa que muitos
cientistas de dados e engenheiros de aprendizado de máquina (ML) não tenham certeza
sobre como conduzir a etapa de monitoramento.
Este guia abrangente tem como objetivo, no mínimo, alertá-lo qual a origem da
complexidade no monitoramento de modelos de aprendizado de máquina em produção, por
que isso é importante e, além disso, fornecer um ponto de partida prático para implementar
suas próprias soluções de monitoramento de ML. Caso o leitor esteja interessado em uma
abordagem mais pratica, tutoriais e projetos, é possivel verificar tudo isso em nosso curso
online dedicado ao tópico: Testing & Monitoring Machine Learning Model Deployments.
Esta postagem não é destinada a iniciantes, mas não se preocupe. Você deve ser capaz de
acompanhar se estiver preparado para seguir os vários links.
Conteúdo
1. O ciclo de vida em uma solução de ML.
7. Monitoramento operacional.
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 2/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Fonte: martinfowler.com
Este diagrama descreve seis fases distintas no ciclo de vida de um modelo de ML:
4. Testes: Garantir que o código de produção se comporte da maneira que esperamos e que
seus resultados correspondam aos que vimos durante a fase de avaliação e
experimentação do modelo. Os artefatos típicos são casos de teste.
5. Implantação: Colocar o modelo em produção, onde ele pode começar a agregar valor
atendendo às previsões. Artefatos típicos são APIs para acessar o modelo.
6. Monitoramento e Observação: A fase final, em que garantimos que nosso modelo está
fazendo o que esperamos na produção. O foco desse artigo.
Se você não tem certeza sobre o que envolve a fase de implantação, existe uma postagem
sobre esse tópico aqui.
Cenários de monitoramento
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 4/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Fonte: https://christophergs.com/
Digamos que temos um modelo em produção e uma variável se torna indisponível, então
precisamos implementar novamente esse modelo sem esse recurso, ou alternativamente,
desenvolvemos uma super feature que acredita-se ser incrivelmente preditiva e queremos
reimplantar nosso modelo, mas agora tomando esse nova feature como uma entrada
adicional.
Open in app
Fonte: https://christophergs.com/
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 6/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
o te ttps //c stop e gs co /
Open in app
Código (e configuração)
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 7/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
O Desafio da responsabilidade
Open in app
Cientistas de dados: Uma vez que já ficou claro que o foco desse artigo é o monitoramento
de pós-produção e não avaliação de pré-implantação (que é onde olhamos as distribuições de
forma prévia, além de métricas similares no ambiente de pesquisa), o foco aqui é em testes
estatísticos do modelo em suas entradas e saídas (mais sobre as especificações na seção 6).
1. Toda a equipe precisa trabalhar em conjunto no monitoramento e falar a língua uns dos
outros para que a solução como um todo seja eficaz.
Toda essa complexidade agrupa uma série de complexidades caso as equipes pensem no
monitoramento do modelo de forma isolada após a etapa de implantação.
Uma feature não está disponível em produção: Isso geralmente significa que
precisamos remover essa feature, alterá-la por outra semelhante que existe na produção
ou recriar essa feature combinando outros recursos existentes no ambiente produção.
mundo real vêm de uma fonte diferente. Isso pode significar que as variáveis podem não
Open in app
ser geradas de forma idêntica, então, embora o pipeline retorne a mesma previsão para
os mesmos dados de entrada (o que significa que nossos testes diferenciais passam),
diferentes fontes de dados podem levar a diferentes valores utilizando as mesmas
features, o que resultará em diferentes previsões.
Dependências de dados: Nossos modelos podem ingerir variáveis que são criadas ou
armazenadas por outros sistemas (internos ou externos). Esses sistemas podem mudar a
maneira como seus dados são gerados, e infelizmente, é bem comum que tais mudanças
não sejas comunicadas com clareza. O efeito indireto é que as variáveis que são
produzidas hoje não são equivalentes às que eram produzidas há alguns anos. A
implementação do código de uma feature muda, produzindo resultados ligeiramente
diferentes, ou a definição da própria feature pode mudar. Por exemplo, um sistema
externo pode ajustar a idade para votar de 18 para 16. Se a idade para votar for uma
feature com alto poder preditivo no modelo, isso mudará suas previsões.
Modelo Obsoleto
Mudanças no ambiente: Se usarmos dados históricos para treinar os modelos,
precisamos antecipar que a população e seu comportamento podem não ser os mesmos
nos tempos atuais. Por exemplo, se treinarmos nossos modelos financeiros usando dados
da época da recessão, esse modelo pode se tornar ineficaz para prever a inadimplência
em momentos em que a economia está saudável.
Os pontos listados acima são recorrentes na etapa de monitoramento, o que talvez explique
por que essa etapa é tão frequentemente negligenciada.
1. The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction
(2017) Breck et al. (Google)
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 11/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
2. Software Engineering for Machine Learning: A Case Study (2019) Amershi et al.
(Microsoft)
O artigo da Microsoft tem uma visão mais ampla, examinando as práticas recomendadas em
torno da integração de recursos de IA ao software. O documento apresenta os resultados de
uma pesquisa com cerca de 500 engenheiros, cientistas de dados e pesquisadores da
Microsoft que estão envolvidos na criação e implantação de sistemas de ML e fornece insights
sobre os desafios identificados.
Monitoramento 2: O estado dos dados deve ser o mesmo no treinameto assim como na
predição.
sistema de ML. ”
Open in app
Monitor 7: Omodelo não apresentou uma regressão na qualidade da predição dos dados
inferidos.
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 13/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Observe também que o valor dos testes e do monitoramento fica cada vez mais aparente com
a mudança. A maioria dos Sistemas de ML muda o tempo todo — as empresas crescem, as
preferências do cliente mudam e novas leis passam a vigorar.
A figura acima detalha toda a gama de técnicas de mitigação de risco pré e pós-produção que
você tem à sua disposição.
Q d f l it t t f d té i d
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa
ó d ã N 14/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Quando falamos em monitoramento, estamos focados nas técnicas de pós-produção. Nosso
objetivo é identificar mudanças no comportamento do nosso sistema de ML que conflitam
Open in app
Em termos gerais, podemos categorizar as maneiras pelas quais nosso sistema de ML pode
dar errado em dois grupos:
Como veremos nas próximas seções, para soluções eficazes, essas duas áreas precisam estar
alinhadas, mas, à medida que estamos ganhando familiaridade, é útil primeiro considerá-las
individualmente.
Considere o caso de um modelo de detecção de fraudes: sua precisão de previsão só pode ser
confirmada em novos casos reais se ocorrer uma investigação aprofundada ou se algumas outras
verificações forem realizadas (como uma verificação cruzando dados de clientes com
fraudadores conhecidos).
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 15/30
06/05/2022 20:38
f Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Desafios semelhantes se aplicam em muitas outras áreas onde não recebe-se feedback
imediato (por exemplo, previsão no risco de doenças, previsão no risco de crédito, valores futuros
de propriedade, previsão do mercado de ações). Dadas essas restrições, se faz lógico monitorar
os valores de algum tipo de proxy para modelar a precisão na produção, especificamente um
proxy pode ser:
Versões do modelo.
b) As frequências de cada valor dentro do conjunto de dados estão alinhadas com o que
já vimos no passado.
Por exemplo, para um dado de entrada do modelo que faz menção ao “estado civil”,
verificaríamos se as entradas se enquadram nos valores esperados mostrados nesta imagem:
Fonte: https://christophergs.com/
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 16/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Fonte: https://christophergs.com/
Versões do modelo
Esta é uma área básica a ser monitorada que ainda é frequentemente negligenciada — o
intuito aqui é ter certeza de que é possível rastrear facilmente qual a versão do modelo
implantada está gerando erros de configuração.
Técnicas avançadas
Também podemos implementar testes estatísticos completos para comparar a distribuição
das features. Qual teste? Isso depende das características das features. Se as features forem
normalmente distribuídas, poderíamos fazer um Teste t ou ANOVA, se não forem, talvez
testes não paramétricos como Kruskall Wallis ou o Kolmogorov Smirnov sejam mais
adequados. Aqui, queremos comparar variável por variável se a distribuição da features nos
dados de treinamento é semelhante a distribuição dessa mesma features na produção.
ao longo do tempo e fazer testes manuais ad-hoc para aplicar verificações mais avançadas.
Agora vamos nos aprofundar nas opções de automação.
7. Monitoramento Operacional
O monitoramento no campo da engenharia de software é uma área muito mais bem
estabelecida e faz parte do Site Reliability Engineering (SRE) — ou em tradução literal,
Confiabilidade do Sistema. Um ótimo livro de referência (gratuito) para este é o Manual SRE
do Google. As questões operacionais em torno do nosso Sistema de ML consistem nas
seguintes áreas:
Todos os eventos também têm contexto. Por exemplo, uma solicitação HTTP terá o endereço
IP de onde vem e vai, a URL solicitada, os cookies configurados e o usuário que fez a
solicitação Os eventos que envolvem funções têm a pilha de chamadas das funções acima
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 18/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
solicitação. Os eventos que envolvem funções têm a pilha de chamadas das funções acima
deles e tudo o que acionou essa parte da pilha, como uma solicitação HTTP. Ter todo o in app
Open
contexto para todos os eventos seria ótimo para depurar e entender o desempenho de seus
sistemas em termos técnicos e comerciais, mas essa quantidade de dados não é tão prática de
se processar e armazenar.
1. Métricas.
2. Histórico.
3. Traços Distribuídos
Com alguns membros extras ocasionais, dependendo de quem você pergunta, como (4)
Criação de perfil (5) Alerta/Visualização (embora isso geralmente seja incorporado em
métricas/logs)
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 19/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Fonte: https://christophergs.com/
A observação é um conjunto muito mais amplo, que ainda assim engloba as atividades de
monitoramento e testes, fornecendo informações sobre modos de falha imprevisíveis que
não puderam ser monitorados ou testados.
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 20/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Fonte: https://christophergs.com/
As métricas permitem que você colete informações sobre eventos de todo o processo, mas
geralmente não mais do que um ou dois campos de contexto.
Possuem escopo definido de um unico sistema (ou seja, apenas um serviço em uma
coleção de microsserviços)
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 22/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Fonte: https://christophergs.com/
Implementação prática
Uma das stacks de código aberto mais populares para monitorar métricas é a combinação de
Prometheus e Grafana.
Para evitar que esta postagem se transforme em um livro, não vou entrar em uma explicação
detalhada dessas tecnologias. O melhor lugar para aprender mais é o livro e os cursos de
treinamento de Brian Brazil. Um resumo rápido da documentação:
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 23/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Podemos criar dashboards com Prometheus & Grafana para rastrear as métricas estatísticas
mais comuns de um modelo.
é d d hb d é í l l f
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa d l 24/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Através desses dashboards é possível criar alertas que notificam por meio de e-mail/SMS ou
Open
até mesmo Slack, quando as previsões do modelo saem dos intervalos esperados ao in app
longo de
um período de tempo específico (ou seja, comportamentos anômalos), adaptando a
abordagem descrita aqui para ML. Isso, então, levaria a uma investigação completa, como
por exemplo:
Os registros são muito fáceis de gerar, pois são apenas uma string, um blob de JSON ou
pares de valores-chave digitados.
processados por uma ferramenta como Logstash, Fluentd, Scribe ou Heka antes de serem
Open in app
Por exemplo: Se estivéssemos trabalhando com um aplicativo de NLP com entrada de texto,
poderíamos ter que nos apoiar mais fortemente no monitoramento de log, pois a cardinalidade
da linguagem é extremamente alta.
Fonte: https://christophergs.com/
comum.
Open in app
Implementação prática
Kibana é uma plataforma de análise e visualização de código aberto que faz parte da Stack
ELK. Normalmente, o Kibana é utilizado para pesquisar, visualizar e interagir com os logs
armazenados nos índices do Elasticsearch. Você pode facilmente realizar análises avançadas
de dados e visualizar seus registros em uma variedade de gráficos, tabelas e mapas. Esta é
uma das stacks de código aberto mais comuns para a construção de sistemas de
monitoramento para logs.
Fonte: https://christophergs.com/
No Kibana, você pode configurar dashboards para rastrear e exibir os valores de entrada do
modelo de ML, bem como alertas automatizados quando os valores exibem comportamentos
inesperados. Esse dashboard pode ter a seguinte aparencia:
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 27/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
Open in app
Fonte: https://christophergs.com/
Esta é apenas uma opção para um sistema de logs; também há opções mais gerenciaveis,
como logz.io e Splunk.
Open in app
A esta altura no próximo ano, esse contexto provavelmente estará muito diferente …
Conclusão
Finalmente, espero que esse material tenha sido útil e faça sentido pra você. É valido
mencionar que ao longo do artigo muitos links foram disponibilizados e possuem um
conteúdo extremante rico, além disso na seção de referências é possível encontrar mais
alguns links uteis que foram utilizados para elaboração desse artigo que pode te ajudar a
ampliar seus conhecimentos no tema assim como me ajudaram.
Lembrando que qualquer feedback, seja positivo ou negativo é so entrar em contato através
do meu twiter, linkedin ou nos comentário aqui em baixo. Obrigado :)
Referências
https://christophergs.com/machine%20learning/2020/03/14/how-to-monitor-
machine-learning-models/
https://dl.acm.org/doi/10.5555/2969442.2969519
https://developers.google.com/machine-learning/guides/rules-of-ml
https://aws.amazon.com/pt/blogs/aws/amazon-sagemaker-model-monitor-fully-
managed-automatic-monitoring-for-your-machine-learning-models/
https://churrops.io/2017/10/09/o-que-e-sre-site-reliability-engineering/
https://medium.com/r/?url=https%3A%2F%2Fpapers.nips.cc%2Fpaper%2F5656-
hidden-technical-debt-in-machine-learning-
systems.pdhttp%3A%2Fmartin.zinkevich.org%2Frules_of_ml%2Frules_of_ml
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 29/30
06/05/2022 20:38 Monitorando Modelos de Aprendizado de Máquina em Produção | by Toni Esteves | Medium
https://estevestoni.medium.com/monitorando-modelos-de-aprendizado-de-máquina-em-produção-9d4f83a3dbfa 30/30