MLOps: por onde começar

Ricardo Manhães Savii
DataLab Log
Published in
9 min readMay 13, 2021
Image by © Julien Douvier.

Olá :)

A intenção deste post é oferecer um "próximo passo" para quem está estudando e tem interesse sobre o tema MLOps. Primeiro, MLOps entende-se por Machine Learning Operations e trata-se de operacionalizar/entregar produtos que utilizem técnicas de Machine Learning (ou "Sistemas Inteligentes").

Este texto complementa a apresentação feita no Meetup Datalab Serasa Experian disponível aqui. E os tópicos principais discutidos são:

  1. De onde surgiu MLOps
  2. Quem são os profissionais de MLOps?
  3. Explosão de procura por profissionais
  4. Afinal, AI traz mais lucro?
  5. Como fazer manutenção em uma ferramenta que se adapta?
  6. Por onde começar a se preparar para entrar nesta profissão?

O texto é sequencial como um todo, mas fique a vontade de consumi-lo na ordem que desejar.

De onde surgiu MLOps?

Ha quase uma década (2012) a Harvard Business Review anunciou como os dados seriam o futuro dos negócios. Com isso houve grande comoção e interesse de preparar e contratar uma grande quantidade de profissionais para os desafios do mundo de dados.

Ciência de Dados exige bons conhecimentos de matemática e estatística, isso chamou a atenção de estudantes e pesquisadores em diversas áreas de exatas. Porém, algo que (acredito) foi menosprezado inicialmente, é a complexidade de tornar os conceitos matemáticos e estatísticos em sistemas reais. Questões de maturidade de software, necessários para uma empresa confiar, ficaram de lado nos requisitos iniciais das equipes estabelecidas.

Entre o mundo da teoria e realidade da Ciência de Dados há um vão de aplicação. A maioria das universidades estão atrasadas nas técnicas e ferramentas para desenvolver um software com a maturidade esperada para uma grande empresa. Até por quê DevOps também é uma área razoavelmente nova. Os profissionais com bons conhecimentos de desenvolvimento já estão bem posicionados. Provavelmente com bons salários e com a ameaça de “retroceder” para pleno ou júnior, possuem pouco incentivo de estudar as novas complexidades da Ciência de Dados. Somando-se a isso as exigências, normalmente exageradas, de matemática e estatística parecem muitas vezes um obstáculo intransponível.

Quem são os profissionais de MLOps?

O vão entre Ciência de Dados, Engenharia de Dados, DevOps, SRE e Engenharia de Software atrai diversos perfis diferentes. Posso dizer por mim e conhecidos. O que vejo são profissionais intermediários ou iniciantes de 1) Ciência de Dados, por já terem algum contato com as exigências de matemática e estatística e as enxerga como 'transponíveis', ou 2) programadores que gostam do desafio e enquanto focam em conquistar as barreiras da teoria colocam a mão na massa em código, testes, complexidade e deployment.

A verdade é que ainda não há um consenso de quais skills são necessárias para um Engenheiro de Machine Learning. E dependendo de seu ponto de partida é interessante priorizar diferentes marcos de conhecimento. Listarei alguns mais adiante de acordo com alguns perfis.

Explosão de procura por profissionais

https://www.forbes.com/sites/forbesfinancecouncil/2020/09/01/past-the-ai-hype-when-is-ai-actually-profitable/?sh=4cee903e1fb4

Veio à minha atenção que recentemente aumentou a procura por profissionais que saibam operacionalizar Sistemas que utilizam algoritmos de Machine Learning. Minha teoria, e posso estar errado, é que em 2014...2015 houve uma explosão de procura por cientistas de dados. O perfil procurado (e disponível) na época eram, em sua maioria, acadêmicos e pesquisadores. Que não necessariamente tinham o conhecimento de Engenharia de Software. Basicamente, não havia conhecimento de práticas necessárias na entrega de uma base de código como um produto confiável e utilizável por uma empresa.

De 2015 até recentemente, as empresas que investiram em equipes de Cientistas de Dados talvez viram poucos resultados e poucas entregas. Soluções de Sistemas Inteligentes precisam de nichos bem específicos para se tornarem um modelo de negócios viável [1, 2], muitas empresas ainda podem ter uma visão controversa sobre propriedade de dados [3] e automação não significa necessariamente menos trabalho (veremos adiante).

Afinal, AI traz mais lucros?

A reposta não é simples. A capacidade de entregar um Sistema Inteligente depende de investimentos além das equipes de Ciência de Dados. Toda uma cultura de processos e interação com tecnologia precisa mudar. Agora, as ferramentas possuem a capacidade de se adaptar e mudar com o tempo, as vezes, de forma imperceptível ao usuário mais incauto.

A realidade de ter um sistema inteligente como ferramenta é bem diferente. As tarefas “automatizáveis” são, primeiro, tarefas de baixo valor direto, mecânicas e repetitivas. Suponhamos que um primeiro sistema inteligente seja implantado e aumente a eficiência de toda uma área, o aumento de eficiência nos esforços implica que as pessoas são capazes de fazer mais em menos tempo. Neste ponto temos um ponto de decisão, e ocorre uma de duas, 1) ocorre um excesso de mão de obra ou 2) a equipe não dava conta de todo o trabalho antes então agora conseguem atender 100% do trabalho ou algo próximo disso. Em ambos os casos a mão de obra não é redirecionada para as novas tarefas que surgirão.

https://xkcd.com/1319/

Na figura, apesar de ser uma tirinha de comic, apresenta a realidade de carga de trabalho após uma automação ser implantada. O trabalho não diminui, ele muda! O novo sistema precisa de pessoas para guiá-lo e monitorá-lo e “alimentá-lo” com dados, se possível, cada vez melhores em qualidade.

Os Sistemas Inteligentes precisam, no mínimo, ser atualizado de tempos em tempos. Essa atualização depende de uma interação constante entre Cientistas de Dados e a área “cliente”. Os dados variam com o tempo e precisam, se possível, ser melhorados. O algoritmo treinado possui limites, normalmente não muito claros, então especialistas da área “cliente”, precisam amostrar e monitorar os resultados dados pelo sistema.

E, claro, se temos uma pergunta sendo respondida de forma “automática”, provavelmente teremos novas perguntas a fazer aos dados… o que recomeça todo o ciclo de desenvolvimento para um novo algoritmo.

Como fazer manutenção em uma ferramenta que se adapta?

Um Sistema Inteligente é isso fundamentalmente, adaptável! E é esperado que ele faça isso mesmo! Como fazer manutenção, automatizar, manter seguro, testar, versionar, monitorar e atualizar algo adaptável? A verdade é que os algoritmos de Machine Learning atuais incluem um vínculo direto entre DADOS e o Sistema em produção. Versionar dados é um desafio enorme e muitas soluções estão surgindo sob o nome de Feature Stores.

O algoritmo treinado é um ser por si só. Caso nunca tenha visto, hoje em dia, conseguimos arquivar o algoritmo treinado como um arquivo binário. Ou seja, os milhares de dólares gastos para treinar um modelo de Machine Learning e concentram em um (ou alguns) arquivos binários. Esses arquivos precisam ser mantidos arquivados, versionados de forma coerente, prática e SEGURAS! Logo, sem enviar arquivos de modelos via e-mail ou coisas assim, por favor. Soluções para este tipo de desafio são encontradas sobre o nome de Model Stores.

Cassie Kozyrkov in “How to avoid machine learning pitfalls.” — https://youtu.be/ZQtuTqmr4WI

Quando “rodamos” o treinamento de um algoritmo, no final dele esperamos algo mais do que o arquivo binário mencionado no parágrafo anterior. Precisamos ter também a capacidade de avaliar (benchmarking) esse algoritmo de forma consciente e responsável.

Para isso entramos no maravilhoso mundo das métricas e procedimentos para experimentação científica. Há problemas que podem surgir no treinamento e, talvez, enganar um futuro “cliente” desprevenido. Para evitar possíveis enganos o experimento deve ser estruturado e organizado de forma coerente e correta, uma exigência mínima é dividir os dados em treino e validação. O uso e interpretação correta de diferentes métricas é importantíssimo. Além de boas práticas que todos os envolvidos devem seguir, há também tecnologias surgindo com o nome de Evaluation Store.

Weapons of Math Destruction by Cathy O’Neil

As tecnologias e processos listados acima não são responsabilidades somente do Engenheiro de Machine Learning. Estas podem (e devem) ser compartilhadas entre todos os envolvidos. Para isso as empresas precisam delinear procedimentos de entrega e validação em diversos pontos. Muitas ferramentas e tecnologias surgirão, mas elas dificilmente substituirão a humildade de submeter seu trabalho a testes e avaliação constantemente, o estudo e corretude para evitar as armadilhas, e a capacidade de duvidar de si mesmo. Quando tratamos com viés, devemos duvidar de nós mesmos! O viés presentes nos dados de treino de algoritmos, por vezes inconscientes e estruturais, serão automatizados!

Por onde começar a me preparar?

Caso tenha interesse por MLOps, nesta seção indico algumas referências e habilidades ou tecnologias que acho interessante para diferentes perfis.

Para perfis iniciantes acadêmicos:

  • Linguagem de programação Python… desculpem, sem mais. Outras linguagens podem ser úteis futuramente, mas acredito que a curva rápida de aprendizagem do Python seja um benefício enorme! E os principais frameworks de Machine Learning possuem API para Python.
  • Version Control Systems (VCS), aprendam a utilizá-los bem! Ajudam tanto na interação com outros profissionais como pode servir de base para aumentar a replicabilidade de seus experimentos de Machine Learning. Alguns exemplos mais comuns são: git, github, gitlab, bitbucket…
  • Data Version Control (DVC), apesar de ser o nome de uma ferramenta existente DVC (e muito, muito boa por sinal). É também toda uma área de pesquisa e desenvolvimento. Resumindo, os VCSs não fazem versionamento de dados, e não é recomendado versionar arquivos binários também. Com isso, há ferramentas que complementam os VCSs para versionar estes artefatos.
  • Continuous Integration / Continuous Deployment (CI/CD). Isto já é um mundo gigantesco. Sugiro começar estudando e usando a ferramenta Continuous Machine Learning (CML). É da mesma empresa do DVC e a documentação deles é muito educativa!

Para perfis iniciantes e já desenvolvedores:

  • Estudar os principais algoritmos de Machine Learning e aprofundar em 1 ou 2 inicialmente. A documentação do pacote Scikit-learn é fantástica! Lá você encontrará dezenas de algoritmos com referências caso queira aprofundar mais. E código de dezenas de algoritmos, o código deles tem como objetivo principal ser educacional, por causa disso nem sempre são tão otimizados.
  • Estudar a estrutura de um experimento de Machine Learning. Neste ponto eu não tenho ótimas referências… CRISP é uma metodologia, um pouco antiga, mas talvez seja interessante de conhecer inicialmente. O foco aqui é entender como funcionar a mecânica da entrega de um Sistema Inteligente. Talvez estes vídeos ajudem: Reimagining DevOps for ML by Elle O’Brien, Iterative.ai, A Chat with Andrew on MLOps: From Model-centric to Data-centric AI, Scitek — Conectando a Academia e o Mercado, MLOps: Construindo seu primeiro pipeline de entrega para Machine Learning.
  • Aprofundar em metodologia e boas práticas de experimentação. Aqui também não tenho uma referência simples. Acredito que um caminho é rodar o máximo de experimentos que você puder por si só, aos poucos acredito que enxergará alguns padrões. Outra fonte de recursos é o Kaggle, não digo pelos desafios, mas eu gosto de entender como funciona a plataforma do Kaggle. Algumas perguntas boas são: como as empresas cadastram seus dados no Kaggle? como as competições são organizadas e avaliadas? Uma outra fonte que gosto bastante, porém é bem extensa é o Blog Machine Learning Mastery.

Acredito que Engenheiros de Dados, desenvolvedores e pessoas em tecnologia ja há algum tempo queiram pular direto para estas recomendações abaixo. Para perfis intermediários:

  • Sugiro aprofundar em técnicas de Machine Learning de Redes Neurais profundas. Um livro, disponível gratuitamente, e simplesmente fantástico é o “Deep Learning” de Ian Goodfellow. Sugiro prestar atenção nos pontos que tornam as redes neurais muito interessantes por algumas adições computacionais que elas trazem. Entre algumas outras, temos treinamento iterativo, feature engineering, fine-tuning… e sua maleabilidade trouxeram muitas das inovações que vimos nas notícias na última década.
  • Aprofundar em novos frameworks de Machine Learning, alguns importantes são: Tensorflow (Keras embutido) e Pytorch.
  • Aprofundar em algumas ferramentas de auto-ml, sugestão para começar: Auto-Sklearn
  • Apesar de ainda estar em desenvolvimento, o Kubeflow é um projeto essencial para se conhecer no mundo de MLOps. Sua documentação é muito didática e a comunidade é ótima!
https://www.deeplearningbook.org/

Para todos os interessados, sinceramente eu ainda não fiz o curso, mas confio muito no Andrew Ng:

Obrigado por ler e, por favor, envie seus comentários. Eu, como muitos outros, estou aprendendo e uma parte essencial disto é escutar.

Sucesso em seus estudos!

Referências não colocadas no texto:

[1] DeepMind’s Losses and the Future of Artificial Intelligence — https://www.wired.com/story/deepminds-losses-future-artificial-intelligence/

[2] The untold story of GPT-3 is the transformation of OpenAI — https://bdtechtalks.com/2020/08/17/openai-gpt-3-commercial-ai/

[3] DeepMind’s Latest A.I. Health Breakthrough Has Some Problems — https://onezero.medium.com/deepminds-latest-a-i-health-breakthrough-has-some-problems-5cd14e2c77ef

[4] The Only 3 ML Tools You Need — https://towardsdatascience.com/the-only-3-ml-tools-you-need-1aa750778d33

--

--

Ricardo Manhães Savii
DataLab Log

He/Him | Machine Learning Engineer | Eternal student of Intelligent Systems • BR • Use technology as an empowering tool.