Ir para o conteúdo

MLOps

De Wikiversidade

Muitos projetos de software de larga escala adotam práticas modernas de gerenciamento e operação buscando maior eficiência na administração de seus recursos e de seu desenvolvimento. O chamado DevOps engloba muitas dessas práticas e as filosofias que as originaram. A ideia primordial do DevOps é promover integrações que resultam na encurtação dos ciclos de desenvolvimento dos sistemas de software, no aumento da velocidade de implantação destes e na maior confiabilidade na disponibilização de suas versões. Como dito no próprio nome, é a integração entre desenvolvimento (Development) e operações (Operations). Práticas como integração contínua (CI, do inglês Continuous Integration) e entrega contínua (CD, do inglês Continuous Delivery) são componentes do DevOps.

Com a intensificação da presença de ferramentas de Machine Learning no cotidiano e considerando o fato de que esses sistemas são também sistemas de software, uma abordagem do DevOps adaptada para eles surgiu: o MLOps. Em outras palavras, MLOps pode ser definido como a junção de práticas que visam integrar o desenvolvimento e a operação de sistemas de Machine Learning.

A singularidade de sistemas de Machine Learning

[editar | editar código]

Ao contrário de sistemas de software convencionais, sistemas de Machine Learning contém alguns componentes adicionais característicos em sua infraestrutura, que resultam em preocupações adicionais não cobertas plenamente por princípios do DevOps. Um pipeline básico de um sistema de Machine Learning envolve as seguintes etapas:

  1. Extração de dados: Os dados podem ser extraídos de uma ou de diversas fontes.
  2. Análise exploratória de dados: Processo de entendimento dos dados a partir de diversas técnicas, buscando tendências e correlações. Também é uma etapa que indica possíveis práticas para a preparação dos dados.
  3. Preparação dos dados: Processo de tratamento dos dados para a tarefa de Machine Learning requerida. É constituída de outras etapas como limpeza de dados, Feature engineering (extração de características relevantes dos dados para a tarefa desejada), transformação de dados e divisão de dados nos tradicionais conjuntos de treinamento, validação e teste.
  4. Treinamento de modelos: Os dados preparados são utilizados para criar e treinar modelos de Machine Learning por meio de vários algoritmos, buscando os que apresentam o melhor desempenho.
  5. Avaliação de modelos: Os modelos são avaliados utilizando-se os conjuntos de validação e de teste.
  6. Validação de modelos: Processo de se verificar se os modelos estão adequados para implantação.
  7. Exibição de modelos: Os modelos validados são implantados em produção para exibir previsões
  8. Monitoramento de modelos: Verificação do desempenho preditivo dos modelos para se constatar a necessidade de ajustes, como a de um novo treinamento.

Este pipeline demonstra algumas preocupações adicionais exigidas por sistemas de Machine Learning. A integração contínua, além de englobar testes e validação de código, também passa a englobar teste e validação de dados e modelos. A entrega contínua não é apenas de um único serviço, mas de um pipeline completo que lida com dados e os utiliza na construção e implementação de modelos de Machine Learning. Além disso, há a preocupação com a reprodutibilidade dos experimentos de treinamento de modelos e com a segurança dos dados utilizados nesse processo. A nível pessoal, é importante destacar a composição dos grupos que trabalham com sistemas de Machine Learning, muitas vezes formados por cientistas de dados e pesquisadores que podem não ser engenheiros de software. É dentro desse cenário que MLOps encontra seu campo de ação.

Níveis de MLOps

[editar | editar código]

Os níveis de MLOps envolvem não somente o estado de maturação do projeto de sistemas de Machine Learning, mas também o nível de maturação desses projetos. São três os níveis de MLOps, começando pelo nível que não contém automação até o nível que contém a automatização total de pipelines de sistemas de Machine Learning.

Nível 0 de MLOps: processo manual

[editar | editar código]

É o nível básico de maturidade do MLOPs, onde existe a predominância de processos manuais. Possui as seguintes características:

  • Processo manual, orientado por script e interativo: Os passos do pipeline são realizados de forma manual, e a integração entre tais passos também é realizada de forma manual. Geralmente é guiado por scripts prontos armazenados em Notebooks como os do Jupyter Notebook, em que os cientistas de dados analisam os dados e treinam modelos até encontrarem um modelo viável.
  • Desconexão entre ML e operações: Os cientistas de dados que criam os modelos preditivos e os engenheiros que colocam os modelos treinados em produção se encontram em equipes separadas.
  • Iterações de versão não frequentes: Os modelos gerenciados não mudam com frequência e o treinamento dos modelos com novos dados também não ocorre de modo frequente.
  • Inexistência de integração contínua, já que a execução se dá apenas por blocos de código.
  • Inexistência de entrega contínua
  • Implantação apenas do serviço de previsão, geralmente na forma de uma API
  • Fata de monitoramento de desempenho ativo, que não detecta a degradação do modelo preditivo e a necessidade de novo treinamento deste.

Nível 1 de MLOps: automação de pipeline de Machine Learning

[editar | editar código]

Neste nível de MLOps, o objetivo é o treinamento contínuo do modelo e a automatização da pipeline de Machine Learning, de modo a alcançar a entrega contínua do serviço de predição. Possui as seguintes características:

  • Experimentação rápida: Há a orquestração dos passos dos experimentos de Machine Learning e a automatização da transição entre eles.
  • Integração contínua do modelo em produção: O modelo é treinado automaticamente utilizando dados mais recentes.
  • Simetria experimental-operacional: A mesma implementação do pipeline utilizada no ambiente de desenvolvimento dos modelos é também utilizada no ambiente de pré-produção e produção.
  • Código modularizado para componentes e pipelines: Os códigos-fonte dos componentes, anteriormente contidos apenas em notebooks, são modularizados para que esses componentes possam ser reutilizados e compartilhados dentro dos pipelines. Há também a conteinerização dos componentes, permitindo a reprodutibilidade do código entre os ambientes de desenvolvimento e de produção
  • Entrega contínua de modelos: Pelo fato do pipeline já estar completamente montado, há a automatização do processo de criação e de treinamento de novos modelos preditivos, disponibilizando, de forma mais contínua, serviços de predição.

Nível 2 de MLOps: automação de pipeline de CI/CD

[editar | editar código]

Neste nível, somada a automação do pipeline de Machine Learning, há também a criação de um sistema robusto de integração contínua e entrega contínua (CI/CD), que pode permitir a testagem de múltiplos pipelines de Machine Learning. Um pipeline de Machine Learning com CI/CD é formado pelos seguintes estágios:

  1. Desenvolvimento e experimentação: Há a experimentação iterativa de diversos algoritmos de Machine Learning que produzem diversos outros modelos.
  2. Integração contínua do pipeline: Há a criação de código-fonte e a execução de vários testes. Este estágio tem como resultado o fornecimento de componentes de um pipeline.
  3. Entrega contínua do pipeline: Há a junção dos componentes da etapa de integração contínua, resultando em um novo pipeline com a implantação do modelo testado
  4. Acionamento automatizado: Execução automática do pipeline em produção. O modelo resultante deste estágio é enviado a um registro de modelos.
  5. Entrega contínua do modelo: O modelo treinado é exibido como um serviço de previsão.
  6. Monitoramento: Estatísticas do desempenho do modelo são coletadas e, com elas, se pode acionar a execução do pipeline ou de um novo ciclo de experiência.

Referências

[editar | editar código]

MLOps: pipelines de entrega contínua e automação no aprendizado de máquina. Disponível em https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning?hl=pt-br. Este tutorial foi baseado majoritariamente nesse artigo.

O que é MLOps? — Explicação sobre operações de machine learning — AWS. Disponível em https://aws.amazon.com/pt/what-is/mlops/