MLflow na ViaHub: O porquê adotamos

Iago Modesto Brandão
casasbahiatech
Published in
4 min readMay 15, 2023

Escrito por Iago Brandão

Neste artigo, apresentamos os principais motivos pelos quais nós, da ViaHub, adotamos o mlflow como uma solução essencial para gerenciar o ciclo de vida dos nossos modelos de Machine Learning.

Introdução

A crescente demanda por modelos de Machine Learning (ML) em diversos setores tem impulsionado a busca por ferramentas eficientes e confiáveis para gerenciar projetos de ML.

Neste contexto, o mlflow surge como uma plataforma open source para gerenciar todo o ciclo de vida de Modelos de ML, incluindo experimentação, reprodução, registro e implantação.

Rastreamento e comparação de experimentos

Um dos principais desafios durante o ciclo de desenvolvimento de Modelos de ML é o rastreamento e a comparação de experimentos ao longo do tempo, em especial para retomar e comparar quais foram as melhores combinações de parâmetros geraram as melhores métricas.

O mlflow oferece um componente de rastreamento, chamado mlflow tracking, que permite registrar e consultar métricas, parâmetros e artefatos relacionados aos modelos de ML. Nossos cientistas de dados conseguem facilmente acessar e comparar os experimentos, via interface gráfica, possibilitando uma análise eficiente do desempenho do modelo e a identificação das melhores configurações de hiperparâmetros de modelos.

Fonte: Microsoft Learn

Reprodutibilidade em modelos

A reprodutibilidade é fundamental para garantir a confiabilidade e a robustez dos modelos de Machine Learning. O mlflow resolve automaticamente esse problema através do gerenciamento de ambientes e pacotes, permitindo que os desenvolvedores capturem todas as dependências necessárias para reproduzir um modelo. Com o mlflow, temos a consistência dos resultados e facilitação na colaboração entre os membros da equipe, promovendo um fluxo de trabalho eficaz.

Fonte: Mlflow docs

Implantação simplificada

A implantação de modelos de ML pode ser um processo complicado e demorado. O mlflow simplifica esse processo, fornecendo uma maneira padronizada de empacotar e implantar modelos em diversos ambientes, como em provedores de nuvem (Azure, AWS, GCP). Aceleramos a implantação de modelos e reduzimos o time to market com uso do mlflow, ampliando também a governança de qual versão do modelo estamos utilizando no ambiente produtivo.

Fonte: Mlflow docs

Integração com demais ferramentas

O mlflow foi projetado para ser uma plataforma flexível e extensível, integrando-se facilmente a outras ferramentas e bibliotecas amplamente utilizadas no ecossistema de Machine Learning. Utilizamos o mlflow, para tirar proveito dessa integração e adaptar às necessidades específicas, aumentando a eficiência e a produtividade dos projetos.

Escalabilidade e flexibilidade

Um outro benefício do mlflow, é que ele é uma solução escalável para a maior parte dos projetos de ML, podendo ser facilmente utilizado em projetos de diferentes tamanhos e complexidades. A limitação encontrada até hoje foi feita em um caso de uso que tentava salvar 5 mil modelos de forma simultânea durante uma única execução, fora deste contexto, não observamos nenhuma limitação adicional.

Utilizando de forma transparente

Usar o mlflow em código de modelos já desenvolvidos, ou adicionar em modelos em desenvolvimento, é um processo pouco invasivo. basta adicionar as linhas que iniciam o experimento, salvam as métricas e parâmetros e salvar o modelo, fazemos como o exemplo abaixo

import mlflow
from sklearn.metrics import accuracy_score, f1_score

...

mlflow.start_run() # Inicia uma nova execução do mlflow

# Treinando o modelo
...
model.fit(X_train, y_train)

# Fazendo previsões e calcule as métricas
...
accuracy = accuracy_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred, average="macro")

# Registrando os parâmetros e métricas no MLflow
mlflow.log_params({"n_estimators":n_estimators, "max_depth":max_depth}) # Salva os parametros
mlflow.log_metrics({"accuracy": accuracy, "f1_score": f1}) # Salva as metricas

# Fazendo log do modelo treinado no MLflow
mlflow.spark.log_model(model, "my_sklearn_model") # Salva o modelo

mlflow.end_run() # Finaliza a execução do mlflow

Considerações finais

Adotamos o mlflow em 2020, investindo em uma solução robusta e eficiente que nos ajuda até hoje a gerenciar os Modelos de Machine Learning. Com recursos que abrangem rastreamento, reprodução, implantação, integração e escalabilidade, o mlflow tem se provado eficiente para uma ampla diversidade de modelos produtivos que temos, seguiremos testando mais e contando pra vocês!

Alta performance é um dos grandes pilares da cultura da ViaHub, já deu pra perceber que gostamos de aproveitar potencial transformador das tecnologias, né? Conheça nosso portal de vagas Gupy e se aventure nos desafios de Machine Learning que a Viahub se juntando ao nosso time!

www.viahub.com.br

--

--

Iago Modesto Brandão
casasbahiatech

Passionate by tech and all possibilities, come with us to learn more and develop the next step of the world?