Machine learning: como construir modelos como produtos usando MLOps?
Machine learning é uma inteligência artificial (IA) que o mercado descobriu, mas ainda não sabe bem como usar nem para que serve. A Indicium sabe e vai ensinar.
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 é uma tarefa complexa.
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.
Vamos contextualizar isso tudo até chegarmos à prática durante esta série sobre machine learning e MLOps.
Boa leitura!
O que é machine learning?
Machine learning é uma inteligência artificial (IA) que o mercado descobriu, mas ainda não sabe bem como usar nem para que serve. A Indicium sabe e vai ensinar.
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 de áreas 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 machine learning (ML) e DevOps.
O que é 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.
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.
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.
Na próxima parte, vamos iniciar o projeto utilizando Kedro.
Até lá!
Daniel Avancini
Chief Data Officer