MLflow, Argo Workflow e Kubeflow: uma visão geral

Flow (fluxo) é uma palavra popular no léxico do Machine Learning (ML), ou aprendizado de máquina. Através desse conceito pode ser definida a ordem para a execução de um trabalho, pelo qual é uma peça fundamental do software no stack de ML que orquestra as tarefas. O flow  ativa e impulsiona cada elemento mediante uma sequência de passos em um processo definido de ponta a ponta. MLFlow, Argo Workflow e Kubeflow são três ferramentas nativas do Kubernetes e de código aberto que fazem exatamente isso.

As ferramentas foram construídas em cima do Kubernetes, portanto, conseguem tirar proveito de todos seus recursos. Na verdade, Kubernetes está se transformando no padrão de orquestração de contêineres para aprendizado de máquina; ou, inclusive, talvez seja já o padrão.

Outros mecanismos de fluxo de trabalho (workflows) de código aberto populares são Luigi e Airflow. No entanto, eles não são nativos do Kubernetes e, por padrão, não são compatíveis com ML.

  • Apache Airflow: foi desenvolvido pela Airbnb. Seu lançamento inicial foi em junho de 2015. Tem 23 mil estrelas no GitHub.
  • Luigi: foi desenvolvido pelo Spotify. Seu lançamento inicial foi em 2011. Tem 15 mil estrelas no GitHub.

MLflow 

A MLflow, desenvolvida pela Databricks, é mais do que apenas uma ferramenta de fluxo de trabalho. Essa é uma plataforma com um pacote abrangente de recursos que faz muito mais. Gerencia todo o ciclo de vida do ML, semelhante ao Michelangelo da Uber. Michelangelo é uma plataforma revolucionária e proprietária que impulsiona todas as inovações de ML dentro da Uber, gerenciando todo o processo de ponta a ponta: desde a preparação de dados até o treinamento, a implantação e o monitoramento, e assim por diante. Outra ferramenta similar é o FBLearner Flow do Facebook.

A MLflow suporta vários frameworks e ferramentas. No nível mais básico, facilita o processo de experimentação e implantação em escala. Uma das funcionalidades mais poderosas é a reprodutibilidade. Dessa forma, o mesmo conjunto de dados pode ser alimentado em diferentes frameworks várias vezes e os resultados serão os mesmos.

Como dado de interesse, o Facebook observou que as “maiores melhorias na precisão vieram de experimentos rápidos, engenharia de recursos (feature engineering) e ajuste de modelos, em vez de aplicar algoritmos fundamentalmente diferentes”. Os quatro componentes do MLflow são os seguintes:

  • MLflow Tracking (rastreamento): registra, consulta e rastreia experimentos.
  • MLflow Projects (projetos): empacota código e pode reproduzi-lo em qualquer sistema.
  • MLflow Models: implanta modelos em qualquer plataforma.
  • Model Registry (registro de modelos): armazena, anota, descobre e gerência modelos de ML em um repositório centralizado.

Argo Workflow

Entre os mecanismos de workflow nativos de Kubernetes de código aberto, Argo Workflow é um dos mais populares (9 mil estrelas no Github). Cada etapa é definida dentro de um contêiner e funciona como um grafo acíclico direcionado (DAG) onde “a informação deve viajar entre vértices em uma direção específica (para frente)”, mas não pode viajar de volta. O produto é usado por diferentes tipos de clientes, desde startups até empresas da Fortune 500. Além disso, é altamente escalável, podendo executar milhares de workflows simultaneamente. O Argo Workflows é usado para:

  • Pipelines de ML, mas não específicas para ML.
  • Extrair, Transformar e Carregar (ETL) dados.
  • CI/CD e automação.
  • Processamento de dados e de lotes (batches).
Fonte: GitHub

Outros produtos Argo que podem ser destacados:

  •  Argo CD: uma ferramenta de GitOps para entrega contínua no Kubernetes.
  • Argo Rollouts: um controlador que fornece implantação dos tipos blue-green e canary e análise canary.
  • Argo Events: uma ferramenta orientada a eventos que ajuda a acionar objetos de contêiner, fluxos de trabalho Argo e cargas de trabalho serverless de diferentes fontes, como S3, agendamentos, pubsub, etc.

Kubeflow

Google desenvolveu a Kubeflow. Ela é uma plataforma nativa do Kubernetes de código aberto para criar tanto fluxos de trabalho quanto modelos de treinamento e implantá-los. Foi projetada especificamente para Machine Learning. Uma das funcionalidades mais importantes é Kubeflow Pipelines, que foi desenvolvida a partir do Argo Workflow.

Kubeflow integra-se com Chainer, XGBoost, MXNet, PyTorch, Istio e várias outras ferramentas. O objetivo deste produto é simplificar o processo de orquestração, treinamento e implantação de modelos de ML. É um componente crítico para o portfólio de serviços de ML do Google, bem como para muitas startups.As funcionalidades do Kubeflow incluem:

  • Fazer experimentação.
  • Dimensionar a experimentação e a implementação de milhares de modelos.
  • Suporta AutoML.
  • Facilita a reutilização de fluxos de trabalho de ML.
  • Orquestração de ponta a ponta.
  • Suporta uma ampla gama de produtos de código aberto.
  • O trabalho duro é feito “nos bastidores”.

Em resumo, os mecanismos de workflow de código aberto, nativos do Kubernetes, estão desempenhando um papel importante na simplificação do processo de ponta a ponta. Esse tipo de trabalho se enquadra dentro de MLOps, que combina Machine Learning com DevOps. O uso de modelos de ML não deve ser limitado ao domínio do cientista de dados, mas aberto a engenheiros de DevOps que tenham experiência em trabalhar com dados.

Scroll to Top