MLOps: A chave para o sucesso na implantação de Machine Learning

MLOps: A chave para o sucesso na implantação de Machine Learning

Um projeto de Machine Learning (ML) de sucesso depende de implantação profissional. Muitas organizações ainda não estão preparadas para fazer implantação de modelos de ML por falta de profissionais especializados. Elas investem em profissionais como Cientista de Dados e, recentemente, também em Engenheiros de Dados. Estes profissionais tem tarefas específicas dentro de uma organização orientada a dados. O Cientista de Dados está focado em elaborar hipóteses e testá-las, criar modelos de predição, fazer análise estatística etc. O Engenheiro de Dados está focado em processar, armazenar e servir dados para cientistas e analistas de dados.

Mesmo o Engenheiro de Dados apoiando o Cientista de Dados em tarefas complexas da pipeline de dados e implantação de ML, uma lacuna permanece aberta. E esta lacuna é justamente quando tem que se implantar o modelo de ML que seja sustentável, “automatizável”, versionável, testável e colaborativo. E o sucesso do projeto está fortemente ligado a este desafio, pois ele trata do monitoramento do desempenho do modelo e também na automação da pipeline de ML. O site Deeplearning.ai evidencia por meio de pesquisas que “apenas 22% das empresas que usam ML implantaram um modelo com sucesso” [1]. E qual é motivo deste fenômeno ocorrer? E o que precisamos fazer para evitar o fracasso de um projeto de ML? A chave para essas perguntas está em como realizar operações em ML, isto é, no cerne de engenharia especializada em ML, MLOps.

MLOps (Operações de Machine Learning) é um conjunto de práticas para colaboração e comunicação entre cientistas de dados e profissionais de operações. A aplicação dessas práticas aumenta a qualidade, simplifica o processo de gerenciamento e automatiza a implantação de modelos de ML e Deep Learning (DL) em ambientes de produção em larga escala. MLOps surgiu inspirado na área de DevOps, mas com especificidades das áreas de Engenharia de Dados e Machine Learning. MLOps é um conceito semelhante ao DevOps, mas a execução é diferente. Os sistemas de ML são de natureza experimental e têm mais componentes que são significativamente mais complexos de construir e operar.

As principais fases do MLOps são coleta de dados, análise de dados, transformação e preparação de dados, treinamento e desenvolvimento de modelos, validação do modelo, exibição de modelo, monitoramento de modelo e retreinamento do modelo. Os problemas em não usar metodologia MLOps em projeto de ML se evidenciam quando ocorre uma migração de projeto para nuvem, quando é necessário gerenciar uma pipeline de ML e quando é necessário lidar com dados confidenciais em escala.

Atualmente, parte considerável do tempo de um cientista de dados é usado em tarefas que não são de ciência de dados de fato. O uso de uma plataforma MLOps automatiza as tarefas técnicas e reduz os gargalos do DevOps. O tempo que se ganha em usar uma plataforma de MLOps permite ao Cientista de Dados focar em desenvolver modelos mais precisos. Consequentemente, a organização que aplica MLOps tem uma vantagem competitiva considerável que permite que seu desenvolvimento de ML seja dimensionado massivamente.

As plataformas em nuvem já possuem produtos específicos para fazer implantação de algoritmos de Machine Learning. A GCP (Google Cloud Plataform), por exemplo, possui pacote de MLOps, o Dataflow para extrair, validar e transformar dados, bem como avaliar modelos, AI Platform Notebook para desenvolver e treinar modelos, Cloud Build para criar e testar pipelines de ML, TFX para implantar pipelines de ML, Kubeflow Pipelines para organizar implantações de ML no Google Kubernetes Engine (GKE). A Azure a AWS, grandes players do mercado de nuvem, também tem produtos específicos para isso.

E por que não usar as técnicas de DevOps para ML? É uma pergunta que você provavelmente se fez durante a leitura deste artigo. Existe uma diferença entre ML e o desenvolvimento tradicional de software: ML não é simplesmente código, mas código e dados! ML consiste em dados mais código como entrada de um processo de treinamento (aprendizado de uma função por meio de técnicas estatísticas) para gerar como resultado final um modelo. A forma como dado e código se transforma em um espaço de tempo é diferente. Os dados podem mudar com o tempo e isso pode impactar significativamente a performance do modelo de ML treinado com dados mais antigos. A tabela abaixo mostra um comparativo de práticas entre DevOps, Engenharia de Dados e MLOps [2]:

Prática

DevOps

Engenharia de Dados

MLOps

Controle de versão

Controle de versão de código

Controle de versão código

Linhagem de Dados

Controle de versão de código + versionamento de dados + versionamento de modelo

Pipeline

Pipeline de dados/ETL

Treinamento do Pipeline de Machine Learning

Pipeline de Machine Learning – Camada de serviço

Validação de comportamento

Testes unitários

Testes unitários

Validação de modelo

CI/CD

Implantação de código em produção

Implantação de código para pipeline de dados

Implantação do código para produção e treinamento de pipeline de Machine Learning

Validação de dados

Validação e formatação de negócio

Validação estatística

Monitoramento

Objetivos de nível de serviço (SLOs*)

Objetivos de nível de serviço (SLOs)

Objetivos de nível de serviço (SLOs) e monitoramento estatístico

* Os objetivos de nível de serviço (SLOs) são métodos para alinhar as metas de negócios com as metas técnicas que impulsionam o DevOps (velocidade de entrega) e a engenharia de confiabilidade do site (SRE) (garantindo a resiliência da produção). Exemplos de SLOs: Meta para adoção de um App pelos os usuários acima de 70% ou Classificação do APP no Android ou iOS Store > que 90%.

Em relação às particularidades de operações em ML, destaca-se a tarefa de teste. Os modelos de ML são difíceis de testar, porque nenhum modelo fornece resultados totalmente corretos. Isso significa que os testes de validação do modelo precisam ser estatísticos por natureza, em vez de ter um resultado binário de aprovação/reprovação, por exemplo. Para decidir se um modelo é bom o suficiente para implantação, é preciso decidir sobre as métricas corretas a serem rastreadas e o limite de seus valores aceitáveis, geralmente empiricamente e por comparação com modelos ou benchmarks anteriores. Além disso, é essencial que existam testes de validação para as características (“features”) mais importantes. Se uma característica afeta o desempenho do modelo, é importante que ela tenha um teste específico para ela, por exemplo, existir testes para a característica classe social ou gênero. Isso ajuda a evitar vieses ou desempenhos inferiores em segmentos importantes dos dados. Ademais, outra tarefa se destaca: monitoração. Além de monitorar métricas como latência, tráfego, erros e saturação, também precisamos monitorar o desempenho da previsão do modelo.

A necessidade de se aplicar metodologia DevOps com características pertinentes a ML abriu espaço para um novo profissional da área de dados: O Engenheiro de Machine Learning. O Engenheiro de Machine Learning é o profissional responsável pela implantação de modelos de ML e pela criação e manutenção do Pipeline de Machine Learning (MLOps). É um profissional diferenciado em relação ao Cientista de Dados, pois ele precisa ter habilidades de infraestrutura para ML a fim de implantar o modelo em produção, na maioria das vezes, em nuvem.

O Engenheiro de ML precisa dominar plataformas paralelas e distribuídas de aprendizado de máquinas, como o Apache Spark, NVIDIA RAPIDS, Tensorflow e plataformas de gerenciamento de fluxo de trabalho, como o Apache Airflow, MLFlow e o Kubeflow. Mostradas as vantagens da aplicação da cultura de MLOps em um projeto de ML, uma nova profissão para Inteligência Artificial é demandada no mercado. Este profissional é escasso no Brasil e no mundo. É uma excelente oportunidade para quem é da área de TI e deseja migrar de área, pois com o aumento da demanda, os salários são muito atrativos. Resumindo, o Engenheiro de Machine Learning é o profissional que geralmente não tem as habilidades científicas aprofundadas de um Cientista de Dados, mas possui outras habilidades de programação (Python ou Java ou Scala e JavaScript), frameworks de ML & DL, AutoML, MLOps e Engenharia de Dados.

A profissão Engenheiro de Machine Learning está rapidamente ultrapassando a de Cientista de Dados nesta década [3]. Gigantes de tecnologia como Google, Facebook, Uber e startups estão contratando engenheiros de ML.

Referências:

[1] https://info.deeplearning.ai/the-batch-companies-slipping-on-ai-goals-self-training-for-better-vision-muppets-and-models-china-vs-us-only-the-best-examples-proliferating-patents

[2] https://towardsdatascience.com/ml-ops-machine-learning-as-an-engineering-discipline-b86ca4874a3f

[3] https://odsc.medium.com/rise-of-the-ml-engineer-ea342f07164a

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Curso de Segurança para Kubernetes: Amplie seus conhecimentos com a 4Linux
Próxima Descubra o Opensearch: a ferramenta opensource para análise de logs e monitoramento

About author

Leonardo Afonso Amorim
Leonardo Afonso Amorim 8 posts

Professor de cursos de Big Data e Machine Learning na 4Linux. Doutor em Ciência da Computação pela UFG com pesquisa sobre Processamento de Alto Desempenho (HPC) com aplicações em Processamento de Linguagem Natural (NLP).

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Prometheus: A revolução do monitoramento open source em TI

Conheça o Prometheus, ferramenta open source de monitoramento adaptada ao atual modelo de TI focada em serviços e opção aos tradicionais Zabbix/Nagios. Compartilhe este post: Share on Twitter Share on

Big Data

Como implementar e recuperar backups PITR no PostgreSQL

  Neste artigo você aprenderá: como implementar um simples sistema de replicação através dos xlog. como recuperar o seu banco PostgreSQL em qualquer ponto no tempo. Sobre backups PITR Quando

Infraestrutura TI

Terraform: A ferramenta definitiva para Infraestrutura como Código

Primeiramente, uma breve descrição sobre o que é “Infraestrutura como Código” ? Infraestrutura como Código, Infra as Code, ou simplesmente IaC, é tratar a infra como um software, desenvolvendo, versionando, testando, depurando