MLflow, Argo Workflow y Kubeflow: un resumen general

Flow (o flujo) es una palabra popular en el léxico del Machine Learning (ML), o aprendizaje automático. A través de este concepto se define el orden en el que se ejecutará un trabajo, por lo que es una pieza fundamental del software en el stack de ML que orquesta las tareas. El flow activa e impulsa a cada elemento mediante una secuencia de pasos en un proceso definido de extremo a extremo. MLFlow, Argo Workflow y Kubeflow son tres herramientas nativas de Kubernetes y de código abierto que hacen precisamente eso.

Estas herramientas fueron construidas sobre Kubernetes y, por lo tanto, pueden aprovechar todos sus recursos. De hecho, Kubernetes se está convirtiendo en el estándar de orquestación de contenedores de facto para el aprendizaje automático; si es que no lo es ya.

Otros motores de flujos de trabajo (workflows) de código abierto populares son Luigi y Airflow. Sin embargo, no son nativos de Kubernetes y, por defecto, no son amigables con ML.

  • Apache Airflow: fue desarrollado por Airbnb. Su lanzamiento inicial se realizó en junio de 2015. Tiene 23 mil estrellas en GitHub.
  • Luigi: fue desarrollado por Spotify. Su lanzamiento inicial se realizó en 2011. Tiene 15 mil estrellas en GitHub.

MLflow

MLflow, desarrollada por Databricks, es más que solo una herramienta de flujo de trabajo. Esta es una plataforma con un paquete de funcionalidades que van mucho más allá. Gestiona todo el ciclo de vida de ML, similar al Michelangelo de Uber. Michelangelo es una plataforma revolucionaria y patentada que impulsa todas las innovaciones de ML dentro de Uber al gestionar todo el proceso de extremo a extremo: desde la preparación de datos hasta la capacitación, la implementación y el monitoreo, entre otros. Otra herramienta similar es FBLearner Flow de Facebook.

MLflow es compatible con varios frameworks y herramientas. En el nivel más básico, facilita el proceso de experimentación e implementación a escala. Una de las funcionalidades más poderosas es la reproducibilidad, ya que el mismo conjunto de datos se puede usar para alimentar múltiples frameworks varias veces y los resultados serán los mismos.

Como dato interesante, Facebook señaló que “las mayores mejoras en la precisión vinieron de experimentos rápidos, ingeniería de características (feature engineering) y ajuste de modelos en lugar de aplicar algoritmos fundamentalmente diferentes”. Los cuatro componentes de MLflow son los siguientes:

  • MLflow Tracking (seguimiento): registra, consulta y monitorea experimentos.
  • MLflow Projects (proyectos): empaqueta código y puede reproducirlo en cualquier sistema.
  • MLflow Models: implementa modelos en cualquier plataforma.
  • Model Registry (registro de modelos): almacena, anota, descubre y administra modelos ML en un repositorio centralizado.

Argo Workflow

Entre los motores de workflow nativos de Kubernetes de código abierto, Argo Workflow es uno de los más populares (9 mil estrellas en Github). Cada paso se define dentro de un contenedor y funciona como un gráfico acíclico dirigido (DAG) donde “la información debe viajar entre vértices en una dirección específica (hacia adelante)” pero no puede viajar hacia atrás. El producto es utilizado por diversos clientes, desde startups hasta empresas Fortune 500. Además, es altamente escalable, por lo que se pueden ejecutar miles de workflows simultáneamente. Los workflows de Argo se utilizan para:

  • Pipelines de ML, pero no específicos para ML.
  • Extraer, Transformar y Cargar (ETL) datos.
  • CI/CD y automatización.
  • Procesamiento de datos y de lotes (batches).
Fuente: GitHub.

Otros productos de Argo que se pueden destacar:

  • Argo CD: una herramienta de GitOps para entrega continua en Kubernetes.
  • Argo Rollouts: un controlador que proporciona implementación de tipo blue-green y canary, así como análisis de canary.
  • Argo Events: una herramienta impulsada por eventos que ayuda a activar objetos de contenedores, flujos de trabajo de Argo y cargas de trabajo serverless de diferentes fuentes como S3, schedules, pubsub, entre otras.

Kubeflow

Google desarrolló Kubeflow. Esta es una plataforma nativa de Kubernetes de código abierto para crear tanto flujos de trabajo como modelos de entrenamiento e implementarlos. Fue diseñada específicamente para Machine Learning. Una de sus funcionalidades más importantes es Kubeflow Pipelines, que se desarrolló a partir de Argo Workflow.

Kubeflow se integra con Chainer, XGBoost, MXNet, PyTorch, Istio y varias otras herramientas. El objetivo de este producto es simplificar el proceso de orquestación, entrenamiento e implementación de modelos de ML. Es un componente crítico para la cartera de servicios de ML de Google, así como para muchas startups. Las funcionalidades de Kubeflow incluyen:

  • Hacer experimentación.
  • Escalar la experimentación y la implementación de miles de modelos.
  • Es compatible con AutoML.
  • Facilita la reutilización de flujos de trabajo de ML.
  • Orquestación de extremo a extremo.
  • Es compatible con una amplia gama de productos de código abierto.
  • El trabajo más duro se hace “detrás de cámaras”.

En resumen, los motores de workflow de código abierto, nativos de Kubernetes, están desempeñando un papel importante en la simplificación del proceso de extremo a extremo. Este tipo de trabajo cae bajo el paraguas de MLOps, que combina Machine Learning y DevOps. El uso de modelos de ML no debe limitarse al dominio del científico de datos, sino que debe estar abierto a los ingenieros de DevOps que tengan experiencia trabajando con datos.

Scroll to Top