Control de Experimentos de Aprendizaje Automático con MLflow

Empresas que se embarcan por primera vez en el uso de softwares de gestión de MLOps (Machine Learning Operations, operaciones de aprendizaje automático) pueden encontrarlo como un gran desafío. Con innumerables herramientas de código abierto disponibles, elegir las mejores puede ser abrumador. Para ayudarte con este problema, OSSInsight.io creó una lista de clasificación basada en métricas de github como stars (nivel de aprobación), issues (propuestas) y pull requests (solicitudes de admisión de código). Según su nivel de aprobación, las 5 mejores herramientas de MLOps para 2023 son Jina, MLflow, NNI, Kubeflow, y Label Studio.

En este artículo realizaremos una revisión del ciclo de vida del aprendizaje automático y cómo MLflow se encaja en toda esta historia. Para obtener más información relacionada al tema, consulta nuestro Blog.

Ciclo de vida de los modelos de aprendizaje automático

Empecemos por lo básico. El aprendizaje automático es un subcampo de la inteligencia artificial (IA por sus siglas en inglés) que se enfoca en crear algoritmos o modelos capaces de aprovechar grandes conjuntos de datos para realizar predicciones sin programación explícita. La categorización más simple define a los modelos ML que utilizan técnicas de regresión y clasificación como Aprendizaje Supervisado, mientras que aquellos que emplean técnicas de agrupación y reducción de dimensionalidad se conocen como Aprendizaje No Supervisado.

El proceso de creación de modelos de ML consiste en dos etapas principales: entrenamiento y predicción. En la fase de entrenamiento, un algoritmo o código utiliza datos de entrada y salida relevantes para los objetivos del desarrollador para construir un modelo predictivo. Una vez construido, se evalúa su desempeño para determinar su precisión a través de predicciones con datos conocidos.

Sin embargo, la breve explicación anterior se basa en la hipótesis de una única “iteración” y que el modelo cumple con las especificaciones técnicas. En la vida diaria de un desarrollador, crear modelos de ML abarca tareas complejas que lo obligan a realizar múltiples tareas de prueba y error. Como resultado, este conjunto de experimentos conduce a varios modelos y conjuntos de datos a ser probados para garantizar la máxima eficiencia, haciendo que sea un reto y, a menudo, requiriendo que los usuarios utilicen hojas de excel para el control de parámetros y métricas.

Como puedes ver, el desarrollo de un proyecto de ML es un proceso complejo que comprende varias etapas, conocidas colectivamente como el ciclo de vida de los modelos de aprendizaje automático. Estas incluyen: definición del problema, recopilación y manipulación de datos, análisis de ingeniería, entrenamiento, evaluación, implementación, pruebas A/B y monitoreo. Por esta razón, los desarrolladores utilizan herramientas de MLOps como MLflow para gestionar un proyecto de ML.

Introducción a MLflow

MLflow es una plataforma de código abierto construida para gestionar todo el ciclo de vida de los modelos de aprendizaje automático. Consta de cuatro módulos diseñados para simplificar las etapas de experimentación, reproducibilidad, implementación y gestión.

  • MLflow Tracking: permite rastrear los resultados de un modelo de ML mediante el registro de parámetros y métricas. Además, este módulo brinda una interfaz de usuario para facilitar la visualización de los resultados. 
  • MLflow Projects: permite empaquetar el código de ML en diferentes formatos, así como garantizar la reproducibilidad de las ejecuciones en otras plataformas.
  • MLflow Models: brinda un formato estándar para la implementación y gestión.
  • MLflow Model Registry: brinda una herramienta de almacenamiento centralizada para la gestión del ciclo de vida.

MLflow está diseñado para usarse con cualquier biblioteca de aprendizaje automático y se puede integrar con una amplia gama de entornos, ya sea que se ejecute en instalaciones propias o en la nube. MLflow puede usarse con cualquier biblioteca de aprendizaje automático y lenguaje de programación a través de su API REST y CLI. Además, MLflow ofrece API de Python, R y Java para facilitar el uso.

    ¿Por qué lo deberías usar?

    MLflow elimina la necesidad de realizar un seguimiento manual de la información con múltiples hojas de excel durante la fase de desarrollo. Con solo una línea de código, los usuarios pueden registrar datos utilizando mlflow.tensorflow.autolog(). Además, otros comandos, como “.log_param()” y “.log_metrics()” permiten elegir parámetros y métricas específicas.

    Así mismo, MLflow permite a los desarrolladores visualizar diversos valores de datos registrados, como la tasa de aprendizaje, cantidad de epochs, precisión de validación, entre otros. MLflow actualiza su interfaz con la incorporación de filas adicionales mientras los usuarios realizan múltiples experimentos de un modelo de ML, permitiendo analizar y comparar resultados de manera efectiva. También, ofrece opciones de clasificación basadas en criterios específicos (por ejemplo, log_loss>0.08), así como la organización de experimentos basada en un parámetro o métrica.

    Desde su lanzamiento, MLflow ha sido integrado con diversas plataformas, tales como Conda, Google Cloud, Kubernetes, Docker, TensorFlow, PyTorch, entre otras, demostrando ser una herramienta estable y con la capacidad de ofrecer escalabilidad a medida que el proyecto de ML cresce.

    Interfaz de usuário de MLflow. Fuente MLflow

    Guia de instalación rápida

    En esta sección te mostraremos cómo instalar e importar MLflow en tu código. Este tutorial usa el método requerido en Jupyter Notebook, por lo que, si utilizas otra IDE te recomendamos revisar la documentación correspondiente.

    Para instalar MLflow solo debes usar el siguiente comando:

    !pip install mlflow

    Para conocer la versión actual, solo debes digitar:

    !mlflow --version

    Una vez instalada la biblioteca, el siguiente paso es acceder a la interfaz. Para acceder al panel de control y comparar experimentos, solo debes ejecutar el comando “mlflow ui” en el command prompt, el cual iniciará el servidor en la URL “http://127.0.0.1:5000/”. A continuación, se abrirá una nueva ventana que mostrará varias informaciones como Start Time, User, Source, Parameters, Metrics y otras. Para visualizar información adicional, haz clic en el nombre del experimento.

    !mlflow ui

    Ahora, el objetivo es realizar experimentos en forma de entrenamiento de modelos y realizar un seguimiento de las ejecuciones en la interfaz de usuario de MLFlow.

    ¿Qué tendencias podemos esperar ver en los próximos años?

    A medida que más empresas adoptan tecnologías de inteligencia artificial, es probable que se produzcan avances significativos y, simultáneamente, un incremento en el uso de datos. Esperamos ver que los conjuntos de datos se vuelven cada vez más complejos y siendo constituidos por diferentes fuentes y tipos.

    Desde una perspectiva de automatización de flujo de trabajo, los desarrolladores seguirán creando herramientas para optimizar los procesos de aprendizaje automático. Al mismo tiempo, herramientas como MLflow continuarán evolucionando y serán más fáciles de usar, lo que las hará accesibles a una amplia gama de usuarios. 

    Según un artículo publicado en InsideBIGDATA, Moses Guttmann, director ejecutivo y cofundador de ClearML afirma que “las MLOps han llegado para quedarse, y su éxito depende de algo más que obtener una solución avanzada y moderna. Al adoptar estas buenas prácticas, las empresas pueden establecer una base sólida para el crecimiento sostenible de las MLOps.”

    En resumen, en los próximos años, experimentaremos un crecimiento y desarrollo continuos en el procesamiento de datos y el aprendizaje automático, enfocados en mejorar la fiabilidad, transparencia y ética de los sistemas de IA.

    Scroll to Top