Seguimiento de métricas con MLflow

Completado

Al entrenar un modelo con un script, puede incluir MLflow en los scripts para realizar un seguimiento de los parámetros, las métricas y los artefactos. Al ejecutar el script como trabajo en Azure Machine Learning, puede revisar todos los parámetros de entrada y salidas de cada ejecución.

Descripción de MLflow

MLflow es una plataforma de código abierto diseñada para administrar todo el ciclo de vida de aprendizaje automático. Como es de código abierto, se puede usar al entrenar modelos en distintas plataformas. Aquí se explora cómo se puede integrar MLflow con trabajos de Azure Machine Learning.

Hay dos opciones para realizar un seguimiento de los trabajos de aprendizaje automático con MLflow:

  • Habilitación del registro automático mediante mlflow.autolog()
  • Uso de funciones de registro para realizar un seguimiento de las métricas personalizadas mediante mlflow.log_*

Para poder usar cualquiera de estas opciones, debe configurar el entorno para usar MLflow.

Incluir MLflow en el entorno

Para usar MLflow durante el trabajo de entrenamiento, los mlflow paquetes pip y azureml-mlflow deben instalarse en la máquina que ejecuta el script. Por lo tanto, debe incluir estos dos paquetes en el entorno. Puede crear un entorno haciendo referencia a un archivo YAML que describe el entorno de Conda. Como parte del entorno de Conda, puede incluir estos dos paquetes.

Por ejemplo, en este entorno personalizado mlflow y azureml-mlflow se instalan mediante pip:

name: mlflow-env
channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - numpy
    - pandas
    - scikit-learn
    - matplotlib
    - mlflow
    - azureml-mlflow

Una vez definido y registrado el entorno, asegúrese de hacer referencia a él al enviar un trabajo.

Habilitación del registro automático

Al trabajar con una de las bibliotecas comunes para el aprendizaje automático, puede habilitar el registro automático en MLflow. Registro automático de parámetros, métricas y artefactos de modelo sin necesidad de especificar lo que se debe registrar.

El registro automático es compatible con las bibliotecas siguientes:

  • Scikit-learn
  • TensorFlow y Keras
  • XGBoost
  • LightGBM
  • Spark
  • Fastai
  • PyTorch

Para habilitar el registro automático, agregue el código siguiente al script de entrenamiento:

import mlflow

mlflow.autolog()

Métricas de registro con MLflow

En el script de entrenamiento, puede decidir qué métrica personalizada desea registrar con MLflow.

En función del tipo de valor que quiera registrar, use el comando MLflow para almacenar la métrica con la ejecución del experimento:

  • mlflow.log_param(): registre el parámetro de clave-valor único. Use esta función para un parámetro de entrada que desee registrar.
  • mlflow.log_metric(): registre una métrica de clave-valor única. El valor debe ser un número. Use esta función para cualquier salida que desee almacenar con la ejecución.
  • mlflow.log_figure(): registre una figura de matplotlib directamente como artefacto. Utiliza esta función para registrar gráficas sin guardarlas primero en el disco.
  • mlflow.log_image(): registre un objeto de imagen de numpy o PIL como artefacto. Use esta función para registrar imágenes directamente sin guardarlas en el disco primero.

Para agregar MLflow a un script de entrenamiento existente, puede agregar el código siguiente:

import mlflow

reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)

Sugerencia

Para obtener información general completa sobre cómo usar el seguimiento de MLflow, lea la documentación de MLflow.

Enviar el trabajo

Por último, debe enviar el script de entrenamiento como un trabajo en Azure Machine Learning. Cuando se usa MLflow en un script de entrenamiento, todos los parámetros, métricas y artefactos de seguimiento se almacenan con la ejecución del trabajo. Puede revisarlos para cada ejecución una vez enviado el trabajo.

El trabajo se configura como de costumbre. Solo tiene que asegurarse de que el entorno al que hace referencia en el trabajo incluye los paquetes necesarios y el script describe qué métricas desea registrar.