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:
[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:
About author
Você pode gostar também
Avaliando a Segurança em Ambientes Kubernetes com Kubeaudit
Essa é a segunda parte falando de segurança em ambientes Kubernetes. Caso você ainda não tenha visto a Parte 1, fique a vontade para clicar no link abaixo: No post
Desvendando os Anti-Padrões DevOps: Como otimizar a entrega de software
Introdução Um dos maiores problemas que (acredito eu!) deve afeta grande parte das equipe de desenvolvedores de software, não é “como transformar uma ideia em um bom sistema”, mas sim
Alavanque seu negócio com a cultura DevOps: saiba como implementar
Estamos caminhando para fim de 2021 e muitas empresas ainda precisam se recuperar dos efeitos da pandemia e alavancar. Enquanto isso, outras se mantêm fortes e em crescimento, como as