Nesta terceira e última parte da série sobre MLOps vamos compreender conceitos de versionamento, validação e monitoramento do modelo. Se está chegando agora, comece pela Parte 1 acessando aqui.

Versionamento do Modelo e dos Dados

Para ter reprodutibilidade, o rastreamento de versão consistente é essencial. Em um mundo de software tradicional, a versão do código é suficiente, porque todo comportamento é definido por ele. Em Machine Learning, também precisamos rastrear as versões do modelo, junto com os dados usados para treiná-lo e algumas meta-informações, como hiperparâmetros de treinamento.

Modelos e metadados podem ser rastreados em um sistema de controle de versão padrão como o Git, mas os dados geralmente são muito grandes e mutáveis para serem eficientes e práticos. Também é importante evitar amarrar o ciclo de vida do modelo ao ciclo de vida do código, uma vez que o treinamento do modelo geralmente acontece em uma programação diferente. Também é necessário criar versões de dados e vincular cada modelo treinado às versões exatas de código, dados e hiperparâmetros que foram usados. A solução ideal seria uma ferramenta desenvolvida para um propósito específico, mas até agora não há um consenso claro no mercado e muitos esquemas são usados, a maioria com base em convenções de armazenamento de arquivos / objetos e bancos de dados de metadados.

Validação do Modelo

Outra prática padrão de DevOps é a automação de teste, geralmente na forma de testes de unidade e testes de integração. A aprovação nesses testes é um pré-requisito para a implantação de uma nova versão. Ter testes automatizados abrangentes pode dar grande confiança a uma equipe, acelerando drasticamente o ritmo das implantações de produção.

Os modelos de Machine Learning são mais difíceis de testar, porque nenhum modelo fornece resultados 100% corretos. Isso significa que os testes de validação de modelo precisam ser necessariamente de natureza estatística, em vez de ter um status binário de aprovação / reprovação. Para decidir se um modelo é bom o suficiente para implantação, é necessário decidir sobre as métricas corretas a serem rastreadas e o limite de seus valores aceitáveis, empiricamente e frequentemente em comparação com modelos ou benchmarks anteriores.

Também não é suficiente rastrear uma única métrica para todo o conjunto de validação. Assim como bons testes de unidade devem testar vários casos, a validação do modelo precisa ser feita individualmente para segmentos relevantes dos dados, conhecidos como fatias. Por exemplo, se o gênero puder ser uma característica relevante de um modelo, direta ou indiretamente, rastreando métricas separadas para homens, mulheres e outros gêneros. Caso contrário, o modelo pode ter problemas de enviesamento ou desempenho inferior em segmentos importantes.

Se você conseguir validar os modelos de maneira automatizada e confiável, junto com o restante do pipeline de Machine Learning, poderá até mesmo fechar o loop e implementar o treinamento de modelo online, se fizer sentido para o caso de uso.

Validação dos Dados

Um bom pipeline de dados geralmente começa validando os dados de entrada. As validações comuns incluem formato e tamanho do arquivo, tipos de coluna, valores nulos ou vazios e valores inválidos. Tudo isso é necessário para o treinamento e a previsão de Machine Learning, caso contrário, você pode acabar com um modelo que se comporta mal e coçando a cabeça procurando o motivo. A validação de dados é análoga ao teste de unidade na engenharia de software.

Além das validações básicas que qualquer pipeline de dados realiza, os pipelines de Machine Learning também devem validar propriedades estatísticas de nível superior da entrada. Por exemplo, se a média ou o desvio padrão de um recurso mudar consideravelmente de um conjunto de dados de treinamento para outro, provavelmente afetará o modelo treinado e suas previsões. Isso pode ser um reflexo da mudança real nos dados ou pode ser uma anomalia causada pela forma como os dados são processados, por isso é importante verificar e descartar erros sistêmicos como causas que podem contaminar o modelo e corrigi-los, se necessário

Monitoramento

O monitoramento dos sistemas de produção é essencial para mantê-los funcionando bem. Para sistemas de Machine Learning, o monitoramento se torna ainda mais importante, porque seu desempenho depende não apenas de fatores sobre os quais temos algum controle, como infraestrutura e nosso próprio software, mas também de dados, sobre os quais temos muito menos controle. Portanto, além de monitorar métricas padrão como latência, tráfego, erros e saturação, também precisamos monitorar o desempenho de previsão do modelo.

Um desafio óbvio com o monitoramento do desempenho do modelo é que geralmente não temos um rótulo verificado para comparar as previsões do nosso modelo, uma vez que o modelo funciona com novos dados. Em alguns casos, podemos ter alguma forma indireta de avaliar a eficácia do modelo, por exemplo, medindo a taxa de cliques para um modelo de recomendação. Em outros casos, teremos que confiar em comparações entre períodos de tempo, por exemplo, calculando uma porcentagem de classificações positivas por hora e alertando se ela se desviar mais do que alguns pontos percentuais da média para aquele período de tempo.

Assim como ao validar o modelo, também é importante monitorar as métricas em fatias, e não apenas globalmente, para ser capaz de detectar problemas que afetam segmentos específicos.

Conclusão

À medida que Machine Learning amadurece da pesquisa às soluções de negócios aplicadas, também precisamos melhorar a maturidade dos processos de operação. Felizmente, podemos estender muitas práticas de disciplinas anteriores a Machine Learning, exatamente o objetivo do MLOps.

Esta é uma disciplina totalmente nova e estimulante, com ferramentas e práticas que provavelmente continuarão evoluindo muito rapidamente.

Certamente, há muitas oportunidades no desenvolvimento e aplicação de técnicas de produção em Machine Learning. Estamos apenas no começo.

Equipe DSA

Referências:

Formação Engenheiro de Machine Learning

ML Ops: Machine Learning as an Engineering Discipline

MLOps Best Practices on Google Cloud