O Aprendizado de Máquina (ML – Machine Learning) está sendo adotado por empresas em quase todos os setores. Muitas empresas estão buscando plataformas de infraestrutura de ML para impulsionar seu movimento de adoção da Inteligência Artificial em seus negócios. Compreender as várias plataformas e ofertas pode ser um desafio. O espaço da infraestrutura de ML é lotado, confuso e complexo. Existem várias plataformas e ferramentas abrangendo uma variedade de funções em todo o fluxo de trabalho de construção de modelo.

Para compreender o ecossistema, segmentamos amplamente o fluxo de trabalho do aprendizado de máquina em três estágios – preparação de dados, construção de modelo e produção (deploy). Entender quais são as metas e desafios de cada estágio do fluxo de trabalho pode ajudar a tomar uma decisão informada sobre quais plataformas de infraestrutura de ML são mais adequadas para as necessidades da sua empresa ou cliente.

ml

(referências ao final do post)

Cada um desses estágios do fluxo de trabalho em Machine Learning (preparação de dados, construção de modelo e produção) tem várias funções verticais. Algumas plataformas abrangem funções em todo o fluxo de trabalho de ML, enquanto outras plataformas se concentram em funções únicas. Vamos mergulhar nesse universo. Boa leitura.

O Que é Produção (ou fazer o Deploy do Modelo)?

Lançar um modelo em produção pode ser como cruzar a linha de chegada depois de uma maratona. Na maioria dos ambientes do mundo real, pode levar muito tempo para preparar os dados, treinar o modelo e, finalmente, concluir o processo. Depois, há o árduo processo de colocar o modelo em produção, que pode envolver pipelines de implantação complexos e infraestruturas de serviço. O estágio final de colocar um modelo em produção envolve verificar se o modelo está pronto para produção, empacotar o modelo para implantação, implantar o modelo em um ambiente de serviço e monitorar o modelo e os dados em produção.

O ambiente de produção é, de longe, a parte mais importante e, surpreendentemente, menos discutida do Ciclo de Vida do Modelo. É aqui que o modelo atinge o negócio. É onde as decisões que o modelo toma realmente melhoram os resultados ou causam problemas para os clientes. Ambientes de treinamento do modelo, onde os Cientistas de Dados passam a maior parte de seu tempo, consistem em apenas uma amostra do que o modelo verá no mundo real. Finalizado o trabalho de treinamento do modelo, o Engenheiro de Machine Learning leva o modelo para produção.

Pesquisa para Produção

Um desafio único na operacionalização do Aprendizado de Máquina é a mudança de um ambiente de pesquisa para um verdadeiro ambiente de engenharia de produção. Um Jupyter Notebook, o local mais comum de desenvolvimento de modelos, é aparentemente um ambiente de pesquisa. Em um ambiente de desenvolvimento de software bem controlado, um engenheiro tem controle de versão, análise de cobertura de teste, teste de integração, testes executados em check-ins de código, revisões de código e reprodutibilidade. Embora existam muitas soluções tentando trazer partes do fluxo de trabalho da engenharia de software para os Jupyter Notebooks, esses notebooks são, antes de mais nada, um ambiente de pesquisa projetado para experimentação rápida e flexível. Isso, juntamente com o fato de que nem todos os Cientistas de Dados são engenheiros de software por formação, mas têm experiências que abrangem muitos campos, como engenharia química, físicos e estatísticos – você tem um dos principais problemas em colocar modelos de ML em produção:

O principal desafio em colocar modelos de ML em produção é levar um modelo de um ambiente de pesquisa para um ambiente de engenharia de software e, ao mesmo tempo, entregar os resultados da pesquisa.

Na sequência deste artigo destacaremos as principais áreas necessárias para levar a pesquisa à produção com consistência, reprodutibilidade e observabilidade que esperamos da engenharia de software.

Validação do Modelo

Nota: A validação do modelo NÃO deve ser confundida com o conjunto de dados de validação.

Os modelos são construídos e avaliados usando vários conjuntos de dados. O conjunto de dados de treinamento é usado para ajustar os parâmetros do modelo. O conjunto de dados de validação é usado para avaliar o modelo durante o ajuste de hiperparâmetros. O conjunto de teste é usado para avaliar o desempenho imparcial do modelo final, apresentando um conjunto de dados que não foi usado para ajustar hiperparâmetros ou usado de qualquer forma no treinamento.

E o que é validação do modelo?

Você é um Cientista de Dados e construiu um modelo de bom desempenho em seu conjunto de teste que atende às suas metas de negócios. Agora, como você valida se seu modelo funcionará em um ambiente de produção?

A validação do modelo é crítica para entregar modelos que funcionam na produção. Os modelos não são códigos lineares. Eles são construídos a partir de dados históricos de treinamento e implantados em sistemas complexos que dependem de dados de entrada em tempo real. O objetivo da validação de modelo é testar as suposições do modelo e demonstrar como um modelo provavelmente funcionará em um grande conjunto de ambientes diferentes. Esses resultados de validação de modelo devem ser salvos e referenciados para comparar o desempenho do modelo quando implantado em ambientes de produção.

Os modelos podem ser implantados em ambientes de produção de várias maneiras diferentes, há vários lugares onde a tradução da pesquisa para a produção pode introduzir erros. Em alguns casos, a migração de um modelo da pesquisa para a produção pode envolver literalmente a tradução de um Jupyter Notebook baseado em Python para o código de produção em Java. Embora abordemos em detalhes o armazenamento, implantação e atendimento de modelos na próxima seção, é importante observar que algumas abordagens de operacionalização apresentam risco adicional de que os resultados da pesquisa não correspondam aos resultados da produção. Plataformas como Algorithmia, SageMaker, Databricks e Anyscale estão construindo plataformas que estão tentando permitir que o código de pesquisa seja movido diretamente para a produção sem reescrever o código.

No ciclo de vida de desenvolvimento de software, o teste de unidade, o teste de integração, o benchmarking, as verificações de construção etc. ajudam a garantir que o software seja considerado com diferentes entradas e validado antes da implantação na produção. No Ciclo de Vida de Desenvolvimento do Modelo, a validação do modelo é um conjunto de testes comuns e reproduzíveis que são executados antes do modelo entrar em produção.

Estado Atual de Validação do Modelo no Mercado

Em casos de uso/setores menos regulamentados ou em organizações de Ciência de Dados menos maduras, o processo de validação do modelo envolve apenas o Cientista de Dados que construiu o modelo. O Cientista de Dados pode enviar uma revisão de código para seu modelo construído em um Jupyter Notebook para a equipe mais ampla. Um Engenheiro de Machine Learning da equipe pode detectar qualquer problema de modelagem. Além disso, o teste de modelo pode consistir em um conjunto muito simples de testes de retenção que fazem parte do processo de desenvolvimento do modelo.

Equipes de aprendizado de máquina mais maduras criaram uma grande variedade de testes que são executados na verificação do código e antes da implantação do modelo. Esses testes podem incluir verificações de recursos, verificações de qualidade de dados, desempenho do modelo por fatia, testes de estresse do modelo e backtesting. No caso de backtesting, o modelo pronto para produção é alimentado com dados de produção históricos anteriores, idealmente testando o modelo em um grande conjunto de pontos de dados não vistos.

Em setores regulamentados, como fintech e bancos, o processo de validação pode ser muito complicado e pode ser ainda mais longo do que o processo real de construção do modelo. Existem equipes separadas para gerenciamento de risco de modelo com foco em avaliar o risco do modelo e seus resultados. A validação do modelo é uma equipe separada cujo trabalho é quebrar o modelo. É uma função de auditoria interna projetada para enfatizar e encontrar situações em que o modelo pode não funcionar. Um paralelo com o mundo da engenharia de software seria a equipe de QA e o processo de revisão de código.

Verificações de Validação do Modelo

Independentemente do setor, há certas verificações a serem feitas antes de implantar o modelo na produção. Essas verificações incluem (mas não estão limitadas a):

  • Testes de avaliação de modelo (precisão, RMSE, etc …), tanto no geral como por fatia.
  • Verificações de distribuição de previsão para comparar a saída do modelo com as versões anteriores.
  • Verificações de distribuição de recursos para comparar recursos altamente importantes com testes anteriores.
  • Análise de importância de recursos para comparar mudanças em recursos que estão sendo usados para decisões.
  • Análise de sensibilidade para ruído de entrada aleatório e extremo.
  • Teste de estresse do modelo.
  • Viés e Discriminação.
  • Erro de rotulagem e verificações de qualidade de recursos.
  • Verificações de vazamento de dados (inclui viagem no tempo).
  • Verificações de ajuste excessivo e insuficiente.
  • Backtesting em dados históricos para comparar e avaliar o desempenho.
  • Testes de pipeline de recursos que garantem que não haja quebra de recurso entre pesquisa e produção.

 

As ferramentas de infraestrutura de ML que são focadas na validação de modelo fornecem a capacidade de realizar essas verificações ou analisar dados das verificações – de maneira repetível e reproduzível. Eles permitem que uma organização reduza o tempo para operacionalizar seus modelos e entregar modelos com a mesma confiança com que entregam software.

Exemplo de plataformas de infraestrutura de ML que permitem a validação do modelo: Arize AI, SAS (finanças), outras startups.

Conformidade do Modelo e Auditoria

Nos setores mais regulamentados, pode haver um estágio adicional de conformidade e auditoria em que os modelos são revisados por auditores internos ou mesmo por auditores externos. Ferramentas de infraestrutura de ML que são focadas em conformidade e equipes de auditoria geralmente se concentram em manter um inventário de modelo, aprovação de modelo e documentação em torno do modelo. Eles trabalham com governança de modelo para impor políticas sobre quem tem acesso a quais modelos, por qual nível de validação um modelo deve passar e alinhar incentivos em toda a organização.

Exemplo de infraestrutura de ML: soluções de validação de modelo SAS.

Entrega Contínua

Em organizações configuradas para entrega contínua e integração contínua, um subconjunto das verificações de validação acima é executado quando:

  • Código é verificado – Integração Contínua
  • Um novo modelo está pronto para produção – Entrega contínua

Os testes de integração contínua podem ser executados conforme o código é verificado e normalmente são estruturados mais como testes de unidade. Um conjunto maior de testes de validação que são mais amplos e podem incluir backtesting são normalmente executados quando o modelo está pronto para produção. A validação de entrega contínua de um modelo se torna ainda mais importante, pois as equipes estão tentando continuamente retreinar ou auto-retreinar com base nas métricas de desvio do modelo.

Diversas ferramentas, como o ML Flow, permitem o fluxo de trabalho de gerenciamento de modelo que se integra com testes de CI / CD e artefatos. Essas ferramentas se integram ao Github para permitir puxar / armazenar o modelo correto e armazenar resultados iniciados por ações do GitHub.

Exemplo de plataformas de infraestrutura de ML que permitem entrega contínua: Databricks, ML Flow, CML.

Conclusão

Há tantos tópicos discutidos e extremamente importantes sobre a operacionalização da IA ​​que iremos nos aprofundar em outros posts! O tema é abordado em detalhes na Formação Engenheiro de Machine Learning aqui na DSA. 

Referências:

ML Infrastructure Tools for Production

Formação Engenheiro de Machine Learning