MLOps: Democratizando o uso de Inteligência Artificial no Magalu

Kelvin Salton do Prado
luizalabs
Published in
6 min readOct 23, 2020

--

Com o aumento significativo no uso de Inteligência Artificial (IA) nos últimos anos, surgiram diversas novas oportunidades e desafios que antigamente não eram sequer imagináveis. Com isso, surgiram também novos papéis como o de Engenheiro de Machine Learning. Neste artigo vamos falar um pouco sobre a squad de Machine Learning Engineering (MLE) do Luizalabs e como trabalhamos para democratizar o uso de Inteligência Artificial no Magalu.

Alguns Conceitos

Ao falarmos sobre o uso de Inteligência Artificial em produção precisamos, primeiramente, esclarecer o conceito de Machine Learning Operations (MLOps). O Wikipedia define MLOps como:

a practice for collaboration and communication between data scientists and operations professionals to help manage production ML (or deep learning) lifecycle.

Ainda, colocam que MLOps é aplicado a todo o ciclo de vida de uma aplicação de Machine Learning (ML) e compreende todas as etapas, desde a experimentação e desenvolvimento do modelo, passando pela orquestração e deployment, até a avaliação das métricas do modelo e métricas de negócio.

Ciclo de MLOps (icons from Eucalyp Studio)

Neste cenário, o papel do Engenheiro de Machine Learning é exatamente colaborar com os Cientistas de Dados, dentre outras pessoas, para aplicar a prática de MLOps e colocar os modelos de Machine Learning em produção de forma rápida, confiável e escalável.

Squad MLE

No Luizalabs temos uma squad chamada Machine Learning Engineering que é responsável por prover ferramentas e auxiliar durante todo esse processo de engenharia e operação para que possamos colocar em produção modelos de Machine Learning de forma confiável e escalável.

O objetivo geral da Squad MLE é democratizar o uso de Inteligência Artificial no Magalu. Para isso, criamos uma plataforma chamada Compass que abrange diversas ferramentas que facilitam o processo de exploração, treinamento, exposição e gerenciamento de modelos de Machine Learning.

Plataforma de ML

Para compor a plataforma de Machine Learning do Magalu, utilizamos algumas ferramentas open source como o Kubeflow e o Mlflow que nos permitem realizar a exploração, o treinamento e o gerenciamento do ciclo de vida dos modelos de Machine Learning de forma simples e escalável na cloud.

Além do Kubeflow e do Mlflow, também desenvolvemos algumas ferramentas in-house para facilitar o uso da plataforma e a reprodutibilidade dos experimentos de Machine Learning. Todos os nomes das nossas ferramentas são baseados em personagens do Super Mario.

Foto de Pixabay no Pexels

Kubeflow

De acordo com o site do próprio Kubeflow este é um projeto dedicado a tornar o deploy de workflows de Machine Learning no Kubernetes simples, portáveis e escaláveis.

Tela inicial do Kubeflow

O Kubeflow possui diversas features porém hoje em dia utilizamos basicamente duas delas:

  • Kubeflow Pipelines: pipelines de Machine Learning personalizáveis utilizados para realizar o treinamento de modelos na cloud.
  • Notebook Servers: Jupyter notebooks personalizáveis utilizados para realizar testes e experimentos de forma fácil e iterativa.

Vale notar que como o Kubeflow roda em cima do Kubernetes todas as ferramentas (pipelines e notebooks) são escaláveis com relação aos recursos da máquina (CPU, GPU e Memória) e são efêmeros.

Para mais informações sobre o Kubeflow visite a página de documentação.

Mlflow

O Mlflow é uma ferramenta open source responsável por gerenciar o ciclo de vida de modelos de Machine Learning incluindo experimentação, reprodutibilidade e um repositório centralizado de registros de modelos.

Tela do experimento Default do Mlflow

Na plataforma de Machine Learning do Magalu, utilizamos o Mlflow para gerenciar os experimentos realizados (parâmetros, métricas, artefatos) e para armazenar e disponibilizar os modelos serializados. Assim, conseguimos manter o tracking dos experimentos e dos modelos gerados, bem como disponibilizá-los no momento de servir o modelo em produção.

Para mais detalhes sobre o Mlflow, visite a página de documentação.

Yoshi

O Yoshi é um pacote Python que disponibiliza uma biblioteca e uma interface de linha de comando (CLI) que simplificam a construção e o deploy de pipelines no Kubeflow Pipelines, abstraindo questões relacionadas a Docker e Kubernetes que são, de certa forma, necessárias para realizar o deploy no ambiente do Kubeflow.

Dessa forma, o usuário (geralmente o Cientista de Dados) não precisa conhecer os detalhes de utilização do Kubeflow, basta implementar classes em Python e elas serão automaticamente executadas como nós de um pipeline do Kubeflow. A seguir podemos ver um exemplo de uso do Yoshi:

Como é possível visualizar no exemplo acima, podemos configurar os recursos de máquina (CPU, GPU e Memória) que serão utilizados para executar o nó, assim podemos customizar o pipeline para otimizar os recursos de cloud.

Com a classe Python implementada basta utilizar o CLI do Yoshi para fazer o deploy no Kubeflow, por exemplo:

$ yoshi deploy create "My Model" fit_intercept=True normalize=False

Dessa forma o treinamento da regressão linear será realizado na cloud, mais precisamente no Kubernetes, e os parâmetros, métricas e o modelo serializado serão registrados no Mlflow.

Além disso, o Yoshi possui um módulo que permite realizar a exposição de pipelines de Machine Learning através de uma API Rest, facilitando o deploy dos modelos como serviços através do Kubernetes.

Lakitu

O Lakitu é um serviço interno de MLE responsável por manter o tracking dos deploys realizados através do Yoshi. Ao executar yoshi deploy create as informações do pipeline como: nome, descrição, argumentos, snapshot do código, entre outras, são enviadas para o Lakitu que é responsável por armazená-las em um banco de dados e então fazer de fato o deploy do pipeline no Kubeflow de forma totalmente transparente para o usuário.

Dessa forma, o Lakitu auxilia na reprodutibilidade dos experimentos pois mantém o tracking de tudo o que foi “deployado” no Kubeflow, bem como, gera um ID único utilizado para fazer a integração com o Mlflow.

Toad

O Toad é a ferramenta de Feature Store que nos permite gerenciar features e feature sets utilizadas nos modelos de Machine Learning. Podemos dividir nossa ferramenta de feature store em duas frentes:

  • Dados Históricos: são, em geral, aqueles dados utilizados durante o processo de treinamento dos modelos. Dessa forma, são dados que precisam de versionamento para podermos manter a reprodutibilidade dos modelos e que geralmente possuem uma volumetria maior se comparados aos dados online. Para salvar e versionar os dados históricos da feature store utilizamos a nossa plataforma de Dados, mais precisamente o nosso Datalake. É possível conhecer um pouco mais sobre a plataforma de dados no artigo DataOps — Escalando a engenharia de dados no Luizalabs.
  • Dados Online: são os dados que são consumidos por um modelo em tempo de predição. Por exemplo, suponha que estamos expondo um modelo de ML como uma API, recebemos uma requisição contendo alguns dados, porém estes não são suficientes para utilizar no modelo e fazer a predição. É neste ponto que utilizamos os dados online para complementar o payload da requisição, realizar a predição e retornar uma resposta para o usuário. Para armazenar os dados online e disponibilizá-los com baixa latência, utilizamos o Redis.

O Toad entra nessa história como uma biblioteca Python responsável pela integração entre os dados históricos e os dados online, facilitando o gerenciamento das features e disponibilizando uma camada de abstração entre os diversos formatos de dados manipulados tanto em memória (e.g. Pandas Dataframe, Dask Dataframe) quanto em disco (e.g. Parquet, CSV).

Conclusão

Diferente do conceito de DevOps que já está bem maduro e estruturado no mercado, o conceito de MLOps ainda está em desenvolvimento e evoluindo a um ritmo acelerado. Aqui no Luizalabs estamos constantemente estudando e implantando novas ferramentas e estratégias para acelerar e facilitar ainda mais o processo de produtização de Machine Learning.

Com as ferramentas que disponibilizamos e a colaboração entre a Squad MLE e as demais squads pretendemos democratizar e tornar cada vez mais viável o uso de Inteligência Artificial no Magalu, trazendo tecnologias de ponta para melhorar a experiência dos nossos clientes.

--

--