Parte 1 | Introdução

Não se pode negar que machine learning é uma palavra da moda. O mercado descobriu a inteligência artificial (IA) e, assim como em muitos lançamentos, quis tê-la antes de saber para que serve e como se usa.

As possibilidades que surgem nesse ramo são incontáveis, e saber como utilizar os dados e a ciência de dados para gerar valor não é uma tarefa simples.

De fato, machine learning já está em diversas aplicações do dia a dia: nas redes sociais que checamos diariamente, no varejo digital, nas operações bancárias, na ciência e até na indústria.

Em franca expansão, a área chama a atenção do mercado e de um número cada vez maior de profissionais. O interesse por pessoas capacitadas e a demanda de cientistas de dados com qualificação têm levado a uma enxurrada de cursos rápidos, que ensinam o essencial para o desenvolvimento de modelos de machine learning normalmente utilizando pouco ou nenhum rigor na escrita da programação, e focando principalmente em estatística e aplicações de aprendizado de máquina.

A grande maioria dos cursos (principalmente aqueles que se baseiam em Python) utilizam, por exemplo, jupyter notebooks como interface de trabalho. Essa não é uma crítica aos notebooks, mas eles podem induzir más práticas.

Além disso, a ciência de dados é frequentemente povoada por profissionais com formação diferente de TI, como: engenharia, economia, administração, entre outros cursos com formação matemática. Há ainda profissionais com formações completamente diferentes e até sem formação universitária. E tudo bem! Essa diversidade é uma das vantagens dessa área. Cada visão diferente sobre um mesmo tópico pode trazer novos insights.

Porém, ao entrar na área dos dados pelo “caminho mais rápido”, há a tendência de se criar um código desorganizado e mal escrito devido ao limitado conhecimento de arquitetura de software, e de passar pela dificuldade de colocar o projeto em produção.

Entretanto, as aplicações de machine learning são, por definição, aplicações de tecnologia da informação. Portanto, para transformar o seu modelo em um produto, é necessário que ele esteja inserido em um framework robusto, que permita a criação de um ambiente de desenvolvimento e também um ambiente de produção, além da integração com aplicações, como web, aplicativos e todos os tipos de operações. E é aí que entra o MLOps: o filho entre ML e DevOps.

DevOps

DevOps é uma cultura da engenharia de software que busca aproximar quem desenvolve o software de quem o opera. Sua estrutura permite uma maior automatização e o monitoramento durante o desenvolvimento dos projetos.

Essa cultura já é bem estabelecida na engenharia de software, incluindo até as metodologias ágeis de gerenciamento de projetos, largamente implementadas. Agora, é a vez do machine learning seguir o mesmo caminho.

Fundo amarelo com símbolo de infinito feito com setas verde claro e azul escuro que orientam o fluxo de DevOps que o machine learning deve seguir. As palavras Dev e Ops estão escritas cada uma num dos dois espaços vazados do símbolo de infinito. Cada seta que compõe o símbolo contém uma palavra; quatro estão em setas verde claro em torno da palavra Ops, são elas respectivamente: release; deploy; operate; e monitor; e quatro estão em setas azul escuro em torno da palavra Dev, são elas: plan; code; build; test.
DevOps: o caminho para o machine learning seguir

Mas então, o que é o MLOps?

MLOps é uma cultura que permite, em semelhança ao DevOps, o desenvolvimento e deploy de sistemas de machine learning de maneira escalável, sustentável e padronizada, para entregar modelos de alta performance em produção.

Analisando a frase anterior passo a passo, podemos concluir que o produto precisa ser:

  • escalável: o produto de machine learning deve poder expandir sua capacidade para operar com um número maior de usuários;
  • sustentável: que seja possível dar manutenção para, ao encontrar falhas, corrigi-las com rapidez;
  • padronizado: quanto mais as equipes de data science crescem, maior é a necessidade de que o código seja padronizado, permitindo a fácil leitura e interpretação dos códigos escritos por outros colaboradores;
  • robusto: devendo ser possível manter os modelos em produção e um ambiente de desenvolvimento para que novas ideias e/ou a correção de erros ocorra sem afetar a operação.

Tais soluções exigem cada vez mais das equipes de dados. A execução perfeita de um projeto utilizando os conceitos de MLOps envolve um time grande de profissionais, que pode incluir as áreas de desenvolvimento, engenharia de dados, engenharia de analytics, ciência de dados, engenharia de machine learning etc. Cientistas de dados, como já falamos acima, precisam ter preparo para essa necessidade crescente de interação com equipes de desenvolvimento, e para criar os seus produtos de maneira que contemplem todas as características do MLOps citadas no parágrafo anterior.

Ilustração de um fluxograma com setas em tons de azul, em sequência formando círculos interligados cujos três espaços vazados são preenchidos pelas siglas, nesta ordem: ML; DEV; OPS. Cada seta possui uma palavra, são elas em sequência: data; model; verify; packge; release; configure; monitor; plan; create. O fluxo recomeça depois da palavra create.
A execução perfeita de um projeto com MLOps

Ferramentas para implementação de MLOps no seu projeto

Existem algumas ferramentas que padronizam e facilitam a implementação de MLOps nos projetos de ciência de dados. Para auxiliar a manter a padronização e a modularidade, esses frameworks já induzem a utilização de boas práticas de programação nos projetos. Utilizaremos apenas frameworks gratuitos de código aberto.

Nos próximos posts desta série, abordaremos cada um deles isoladamente. Os frameworks serão:

  • Kedro: essa ferramenta permite a criação de pipelines de data science padronizados, modulares e sustentáveis, e é escrito em Python.
  • MLFlow: utilizada para o acompanhamento de métricas e parâmetros de modelos.
  • Deploy do modelo em produção: ferramenta open-source para o deploy de modelos de machine learning (que você conhecerá somente no último artigo desta série!).

Projeto exemplo

Para nos acompanhar na implementação de todas essas ferramentas, utilizaremos um projeto exemplo, no qual implementaremos uma solução completa de MLOps passo a passo. O dataset utilizado será o completo de Pokémon, disponível neste link. Também utilizaremos o dataset de imagens dos pokémons, disponível neste link.

O repositório do projeto está disponível no Github, neste link.

Ilustração do desenho animado Pokémon com os personagens principais em primeiro plano.
Conjunto de dados completo do Pokémon

No próximo post, vamos para a parte dois e iniciaremos o projeto utilizando Kedro!

Até lá!