MLflow na ViaHub: O porquê adotamos
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.
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.
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.
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!