Seguimiento de experimentos de Machine Learning utilizando MLflow

Seguimiento de experimentos de Machine Learning con MLflow

Introducción

El área de aprendizaje automático (ML) está creciendo rápidamente y tiene aplicaciones en muchos sectores diferentes. El seguimiento de los experimentos de aprendizaje automático utilizando MLflow y la gestión de los ensayos necesarios para construirlos se vuelve más difícil a medida que se vuelven más complicados. Esto puede resultar en muchos problemas para los científicos de datos, como:

  • Pérdida o duplicación de experimentos: Mantener un registro de todos los experimentos realizados puede ser desafiante, lo que aumenta el riesgo de pérdida o duplicación de experimentos.
  • Reproducibilidad de los resultados: Puede ser difícil replicar los hallazgos de un experimento, lo que dificulta la solución de problemas y la mejora del modelo.
  • Falta de transparencia: Puede dificultar la confianza en las predicciones de un modelo, ya que puede ser confuso comprender cómo se creó el modelo.
Foto de CHUTTERSNAP en Unsplash

Dadas los desafíos mencionados anteriormente, es importante tener una herramienta que pueda rastrear todos los experimentos de ML y registrar las métricas para una mejor reproducibilidad, al tiempo que permite la colaboración. Este blog explorará y aprenderá sobre MLflow, una herramienta de seguimiento de experimentos de ML y gestión de modelos de código abierto con ejemplos de código.

Objetivos de aprendizaje

  • En este artículo, nuestro objetivo es comprender en profundidad el seguimiento de experimentos de aprendizaje automático y el registro de modelos utilizando MLflow.
  • Además, aprenderemos cómo se entregan los proyectos de ML de manera reutilizable y reproducible.
  • Por último, aprenderemos qué es una LLM y por qué es necesario realizar un seguimiento de las LLM para el desarrollo de aplicaciones.

¿Qué es MLflow?

Logo de MLflow (fuente: sitio oficial)

MLflow es un software de seguimiento de experimentos de aprendizaje automático y gestión de modelos que facilita el manejo de proyectos de aprendizaje automático. Proporciona una variedad de herramientas y funciones para simplificar el flujo de trabajo de ML. Los usuarios pueden comparar y replicar resultados, registrar parámetros y métricas, y seguir los experimentos de MLflow. Además, facilita el empaquetado y despliegue de modelos.

Con MLflow, puedes registrar parámetros y métricas durante las ejecuciones de entrenamiento.

# importa la biblioteca mlflow
import mlflow

# iniciar el seguimiento de mlflow
mlflow.start_run()
mlflow.log_param("learning_rate", 0.01)
mlflow.log_metric("accuracy", 0.85)
mlflow.end_run()

MLflow también admite el versionado y la gestión de modelos, lo que te permite rastrear y organizar fácilmente diferentes versiones de tus modelos:

import mlflow.sklearn

# Entrena y guarda el modelo
modelo = entrenar_modelo()
mlflow.sklearn.save_model(modelo, "modelo")

# Carga una versión específica del modelo
modelo_cargado = mlflow.sklearn.load_model("modelo", version="1")

# Utiliza el modelo cargado para hacer predicciones
predicciones = modelo_cargado.predict(datos)

Además, MLflow tiene un registro de modelos que permite a varios usuarios controlar, compartir y implementar modelos para el desarrollo colaborativo de modelos.

MLflow también permite registrar modelos en un registro de modelos, recetas y complementos, junto con un seguimiento exhaustivo del modelo de lenguaje. Ahora, veremos los otros componentes de la biblioteca MLflow.

MLflow – Seguimiento de experimentos

MLflow tiene muchas características, incluido el seguimiento de experimentos para rastrear los experimentos de aprendizaje automático para cualquier proyecto de ML. El seguimiento de experimentos es un conjunto único de API y una interfaz de usuario para registrar parámetros, métricas, versiones de código y archivos de salida con fines de diagnóstico. El seguimiento de experimentos de MLflow tiene API de Python, Java, REST y R.

Ahora, veamos el ejemplo de código del seguimiento de experimentos de MLflow utilizando programación en Python.

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from mlflow.models.signature import infer_signature

# Carga y preprocesa tu conjunto de datos
datos = cargar_dataset()
X_entrenamiento, X_prueba, y_entrenamiento, y_prueba = train_test_split(datos["características"], datos["etiquetas"], test_size=0.2)

# Inicia un experimento de MLflow
mlflow.set_experiment("Mi Experimento")
mlflow.start_run():
      # Registra parámetros
      mlflow.log_param("n_estimators", 100)
      mlflow.log_param("max_depth", 5)

      # Crea y entrena el modelo
      modelo = RandomForestClassifier(n_estimators=100, max_depth=5)
      modelo.fit(X_entrenamiento, y_entrenamiento)

      # Realiza predicciones en el conjunto de prueba
      y_pred = modelo.predict(X_prueba)
      firma = infer_signature(X_prueba, y_pred)

      # Registra métricas
      exactitud = accuracy_score(y_prueba, y_pred)
      mlflow.log_metric("exactitud", exactitud)

      # Guarda el modelo
      mlflow.sklearn.save_model(modelo, "modelo")

# Finaliza la ejecución de MLflow
mlflow.end_run()

En el código anterior, importamos los módulos de MLflow y la biblioteca sklearn para realizar el seguimiento de un experimento de modelo. Después de eso, cargamos el conjunto de datos de muestra para proceder con las API de experimento de mlflow. Estamos utilizando las clases start_run(), log_param(), log_metric() y save_model() para ejecutar los experimentos y guardarlos en un experimento llamado “Mi Experimento”.

Además de esto, MLflow también admite el registro automático de parámetros y métricas sin llamar explícitamente a cada función de seguimiento. Puedes usar mlflow.autolog() antes del código de entrenamiento para registrar todos los parámetros y artefactos.

MLflow – Registro de modelos

Ilustración del registro de modelos (fuente: Databricks)

El registro de modelos es un registro centralizado de modelos que almacena los artefactos del modelo utilizando un conjunto de API y una interfaz de usuario para colaborar de manera efectiva con todo el flujo de trabajo de MLOps.

Proporciona un linaje completo del guardado del modelo de aprendizaje automático con guardado del modelo, registro del modelo, versionado del modelo y puesta en escena, todo en una sola interfaz de usuario o utilizando un conjunto de API.

Echemos un vistazo a la interfaz de usuario del registro de modelos de MLflow en la captura de pantalla a continuación.

Captura de pantalla de la interfaz de usuario de MLflow

La captura de pantalla anterior muestra los artefactos del modelo guardados en la interfaz de usuario de MLflow con el botón “Registrar modelo”, que se puede utilizar para registrar modelos en un registro de modelos. Una vez que se registra el modelo, se mostrará con su versión, marca de tiempo y etapa en la página de la interfaz de usuario del registro de modelos. (Consulta la captura de pantalla a continuación para obtener más información.)

Interfaz de usuario del registro de modelos de MLflow

Como se discutió anteriormente, aparte del flujo de trabajo de la interfaz de usuario, MLflow admite un flujo de trabajo de API para almacenar modelos en el registro de modelos y actualizar la etapa y versión de los modelos.

# Registrar el modelo sklearn como versión 1
mlflow.sklearn.log_model(
        sk_model=model,
        artifact_path="sklearn-model",
        signature=signature,
        registered_model_name="sk-learn-random-forest-reg-model",
   )

El código anterior registra el modelo y lo registra si aún no existe. Si el nombre del modelo existe, crea una nueva versión del modelo. Hay muchas otras alternativas para registrar modelos en la biblioteca MLflow. Recomiendo leer la documentación oficial para obtener más información al respecto.

MLflow – Proyectos

Otro componente de MLflow son los proyectos de MLflow, que se utilizan para empacar el código de ciencia de datos de manera reutilizable y reproducible para cualquier miembro del equipo en un equipo de datos.

El código del proyecto consta del nombre del proyecto, el punto de entrada e información del entorno, que especifica las dependencias y otras configuraciones de código del proyecto para ejecutar el proyecto. MLflow admite entornos como Conda, entornos virtuales e imágenes de Docker.

En resumen, el archivo de proyecto de MLflow contiene los siguientes elementos:

  • Nombre del proyecto
  • Archivo de entorno
  • Puntos de entrada

Echemos un vistazo al ejemplo del archivo de proyecto de MLflow.

# nombre del proyecto
name: Mi Proyecto

python_env: python_env.yaml
# o
# conda_env: my_env.yaml
# o
# docker_env:
#    image: mlflow-docker-example

# escribir los puntos de entrada
entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

El archivo anterior muestra el nombre del proyecto, el nombre del archivo de configuración del entorno y los puntos de entrada del código del proyecto para que el proyecto se ejecute durante el tiempo de ejecución.

Aquí tienes un ejemplo del archivo de entorno python_env.yaml de Python:

# Versión de Python necesaria para ejecutar el proyecto.
python: "3.8.15"
# Dependencias necesarias para construir paquetes. Este campo es opcional.
build_dependencies:
  - pip
  - setuptools
  - wheel==0.37.1
# Dependencias necesarias para ejecutar el proyecto.
dependencies:
  - mlflow==2.3
  - scikit-learn==1.0.2

Seguimiento de MLflow – LLM

Como hemos visto, los LLM están conquistando la industria tecnológica como nada en tiempos recientes. Con el aumento de las aplicaciones impulsadas por LLM, los desarrolladores están adoptando cada vez más los LLM en sus flujos de trabajo, lo que crea la necesidad de realizar un seguimiento y gestionar dichos modelos durante el proceso de desarrollo.

¿Qué son los LLM?

Los modelos de lenguaje grandes (LLM, por sus siglas en inglés) son un tipo de modelo de red neural desarrollado utilizando la arquitectura de transformadores con parámetros de entrenamiento en miles de millones. Estos modelos pueden realizar una amplia gama de tareas de procesamiento de lenguaje natural, como generación de texto, traducción y respuesta a preguntas, con un alto nivel de fluidez y coherencia.

¿Por qué necesitamos el seguimiento de LLM?

A diferencia de los modelos de aprendizaje automático clásicos, los LLM deben monitorear las indicaciones para evaluar el rendimiento y encontrar el mejor modelo de producción. Los LLM tienen muchos parámetros como top_k, temperatura, etc., y múltiples métricas de evaluación. Diferentes modelos con diferentes parámetros producen varios resultados para ciertas consultas. Por lo tanto, es importante monitorearlos para identificar el LLM con el mejor rendimiento.

Las API de seguimiento de LLM de MLflow se utilizan para registrar y monitorear el comportamiento de los LLM. Registra las entradas, salidas e indicaciones enviadas y devueltas por el LLM. También proporciona una interfaz de usuario integral para ver y analizar los resultados del proceso. Para obtener más información sobre las API de seguimiento de LLM, recomiendo visitar su documentación oficial para obtener una comprensión más detallada.

Conclusión

En conclusión, MLflow es una plataforma inmensamente efectiva y exhaustiva para gestionar flujos de trabajo y experimentos de aprendizaje automático. Con características como gestión de modelos y soporte para varias bibliotecas de aprendizaje automático. Con sus cuatro componentes principales: seguimiento de experimentos, registro de modelos, proyectos y seguimiento de LLM, MLflow proporciona una solución integral de gestión de canalización de aprendizaje automático de extremo a extremo para gestionar e implementar modelos de aprendizaje automático.

Aspectos clave

Veamos las lecciones clave del artículo:

  1. El seguimiento de experimentos de aprendizaje automático permite a los científicos de datos e ingenieros de aprendizaje automático realizar un seguimiento y registrar fácilmente los parámetros y métricas del modelo.
  2. El registro de modelos ayuda a almacenar y gestionar el modelo de aprendizaje automático en un repositorio centralizado.
  3. Los proyectos de MLflow ayudan a simplificar el código del proyecto al empaquetar e implementar el código de aprendizaje automático, lo que facilita la reproducción de los resultados en diferentes entornos.

Preguntas frecuentes

La media mostrada en este artículo no es propiedad de Analytics Vidhya y se utiliza a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencia de Datos

Implementar una solución de seguimiento de múltiples objetos en un conjunto de datos personalizado con Amazon SageMaker.

La demanda de seguimiento de múltiples objetos (MOT) en el análisis de video ha aumentado significativamente en mucha...

Inteligencia Artificial

Esta investigación de IA presenta un nuevo enfoque para el reconocimiento de pose de objetos como predicción del próximo token'.

¿Cómo podemos abordar de forma efectiva el reconocimiento de objetos? Un equipo de investigadores de Meta AI y la Uni...

Ciencia de Datos

Convirtiendo viejos mapas en modelos digitales en 3D de vecindarios perdidos.

Investigadores han convertido antiguos mapas de seguros contra incendios de Sanborn en modelos digitales tridimension...

Inteligencia Artificial

La pantalla 3D podría llevar el tacto al mundo digital

Los ingenieros diseñaron una pantalla de transformación compuesta por una cuadrícula de músculos robóticos blandos qu...

Inteligencia Artificial

40+ Herramientas de IA para la Creación y Edición de Videos en 2023

Adobe Premiere Pro Adobe Premiere Pro es un software de edición de video con capacidades de inteligencia artificial q...

Inteligencia Artificial

La Raspberry Pi rastrea drones invisibles utilizando sonido

Investigadores de las universidades de Texas y Tennessee utilizaron computadoras Raspberry Pi para rastrear drones in...