Registro y visualización de métricas y archivos de registro

Registre información en tiempo real mediante el seguimiento de MLflow. Puede registrar los modelos, las métricas y los artefactos con MLflow y admite el modo local para la portabilidad en la nube.

Importante

A diferencia del SDK v1 de Azure Machine Learning, no hay ninguna funcionalidad de registro en la versión preliminar del SDK v2.

Los registros pueden ayudarle a diagnosticar errores y advertencias, o a realizar un seguimiento de las métricas de rendimiento, como los parámetros y el rendimiento del modelo. En este artículo, aprenderá a habilitar el registro en los siguientes escenarios:

  • Métricas de ejecución de registro de entrenamiento
  • Sesiones de aprendizaje interactivo
  • Configuración nativa de logging de Python
  • Registro desde otros orígenes

Sugerencia

En este artículo se muestra cómo supervisar el proceso de entrenamiento del modelo. Si está interesado en la supervisión del uso de los recursos y eventos desde Azure Machine Learning, como las cuotas o las ejecuciones de entrenamiento o implementaciones de modelos completadas, puede consultar Supervisión de Azure Machine Learning.

Requisitos previos

  • Para usar Azure Machine Learning, es preciso tener una suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.

  • Debe tener un área de trabajo de Azure Machine Learning. Se crea un área de trabajo en Instalación, configuración y uso de la CLI (v2).

  • Debe tener instalados los paquetes aureml-core, mlflow y azure-mlflow. Si no los tiene, use el siguiente comando para instalarlos en el entorno de desarrollo:

    pip install azureml-core mlflow azureml-mlflow
    

Tipos de datos

En la tabla siguiente se describe cómo registrar tipos de valor específicos:

Valor registrado Ejemplo de código Notas
Registrar un valor numérico (int o float) mlflow.log_metric('my_metric', 1)
Registrar un valor booleano mlflow.log_metric('my_metric', 0) 0 = True, 1 = False
Registrar una cadena mlflow.log_text('foo', 'my_string') Registrado como un artefacto
Registrar métricas de numpy u objetos de imagen de PIL mlflow.log_image(img, 'figure.png')
Registrar trazado de matlotlib o archivo de imagen mlflow.log_figure(fig, "figure.png")

Registrar una ejecución de entrenamiento con MLflow

Para configurar el registro con MLflow, importe mlflow y establezca el URI de seguimiento:

Sugerencia

No hace falta que establezca el URI de seguimiento al usar un cuaderno que se ejecuta en una instancia de proceso de Azure Machine Learning.

from azureml.core import Workspace
import mlflow

ws = Workspace.from_config()
# Set the tracking URI to the Azure ML backend
# Not needed if running on Azure ML compute instance
# or compute cluster
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

Ejecuciones interactivas

Al entrenar de forma interactiva, como en un Jupyter Notebook, use el siguiente patrón:

  1. Cree o establezca el experimento activo.
  2. Inicie la ejecución.
  3. Use métodos de registro para registrar métricas y otra información.
  4. Finalice la ejecución.

Por ejemplo, el siguiente fragmento de código muestra cómo establecer el URI de seguimiento, crear un experimento y, a continuación, registrar durante una ejecución

from mlflow.tracking import MlflowClient

# Create a new experiment if one doesn't already exist
mlflow.create_experiment("mlflow-experiment")

# Start the run, log metrics, end the run
mlflow_run = mlflow.start_run()
mlflow.log_metric('mymetric', 1)
mlflow.end_run()

Sugerencia

Técnicamente no es necesario llamar a start_run() cuando una nueva ejecución se crea si no existe y se llama a una API de registro. En ese caso, puede usar mlflow.active_run() para recuperar la ejecución. Sin embargo, el mlflow.ActiveRun objeto devuelto por mlflow.active_run() no contendrá elementos como parámetros, métricas, etc. Para obtener más información, vea mlflow.active_run().

También puede usar el paradigma del administrador de contextos:

from mlflow.tracking import MlflowClient

# Create a new experiment if one doesn't already exist
mlflow.create_experiment("mlflow-experiment")

# Start the run, log metrics, end the run
with mlflow.start_run() as run:
    # Run started when context manager is entered, and ended when context manager exits
    mlflow.log_metric('mymetric', 1)
    mlflow.log_metric('anothermetric',1)
    pass

Para más información sobre las API de registro de MLflow, consulte la referencia de MLflow.

Ejecuciones remotas

En el caso de las ejecuciones de entrenamiento remoto, el URI de seguimiento y el experimento se establecen automáticamente. De lo contrario, las opciones para registrar la ejecución son las mismas que para el registro interactivo:

  • Llame a mlflow.start_run(), registre información y, a continuación, llame a mlflow.end_run().
  • Use el paradigma del administrador de contextos con mlflow.start_run().
  • Llame a una API de registro como mlflow.log_metric(), que iniciará una ejecución si aún no existe.

Registro de un modelo

Para guardar el modelo de una ejecución de entrenamiento, use la log_model() API para el marco con el que trabaja. Por ejemplo, mlflow.sklearn.log_model(). Para los marcos que MLflow no admite, consulte Conversión de modelos personalizados en MLflow.

Vea la información de ejecución

Puede ver la información registrada mediante MLflow mediante el objeto MLflow.entities.Run . Una vez completada la ejecución, puede recuperarlo mediante MlFlowClient():

from mlflow.tracking import MlflowClient

# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
finished_mlflow_run = MlflowClient().get_run(mlflow_run.info.run_id)

Puede ver las métricas, los parámetros y las etiquetas de la ejecución en el campo de datos del objeto de ejecución.

metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params

Nota

El diccionario de métricas de mlflow.entities.Run.data.metrics solo devuelve el valor registrado más recientemente para un nombre de métrica determinado. Por ejemplo, si registra por orden 1, 2, 3 y 4 en una métrica llamada sample_metric, solo hay un 4 en el diccionario de métricas para sample_metric.

Para obtener todas las métricas registradas para un nombre de métrica determinado, puede usarMlFlowClient.get_metric_history().

Visualización de las métricas de ejecución en la interfaz de usuario del Estudio

Puede examinar los registros de ejecución completados, incluidas las métricas registradas, en Azure Machine Learning Studio.

Vaya a la sección Experimentos. Para ver todas las ejecuciones en el área de trabajo de todos los experimentos, seleccione la pestaña Todas las ejecuciones. Puede explorar en profundidad las ejecuciones de Experimentos concretos si aplica el filtro de experimentos en la barra de menús de la parte superior.

Para obtener la vista de experimentos individuales, seleccione la pestaña Todos los experimentos. En el panel de ejecución del experimento, puede ver las métricas y los registros del seguimiento de cada ejecución.

También puede editar la tabla de la lista de ejecución para seleccionar varias ejecuciones y mostrar el último valor registrado, el mínimo o el máximo para las ejecuciones. Personalice los gráficos para comparar los valores de las métricas registradas y los agregados en varias ejecuciones. Puede trazar varias métricas sobre el eje Y del gráfico y personalizar el eje X para trazar las métricas registradas.

Visualización y descarga de los archivos de registro de una ejecución

Los archivos de registro son un recurso esencial para depurar las cargas de trabajo de Azure Machine Learning. Después de enviar un trabajo de entrenamiento, explore en profundidad hasta una ejecución específica para ver sus registros y salidas:

  1. Vaya a la sección Experimentos.
  2. Seleccione el identificador de la ejecución para ver una ejecución específica.
  3. Seleccione Resultados y registros en la parte superior de la página.
  4. Seleccione Descargar todo para descargar todos los registros en una carpeta comprimida.
  5. También puede descargar archivos de registro individuales eligiendo el archivo de registro y seleccionando Descargar.

Screenshot of Output and logs section of a run.

Carpeta user_logs

Esta carpeta contiene información sobre los registros generados por el usuario. Esta carpeta está abierta de forma predeterminada y el registro std_log.txt está seleccionado. El archivo std_log.txt es donde se muestran los registros del código (por ejemplo, instrucciones print). Este archivo contiene el registro stdout y los registros stderr del script de control y el script de entrenamiento, uno por proceso. En la mayoría de los casos, supervisará los registros aquí.

Carpeta system_logs

Esta carpeta contiene los registros que se generan en Azure Machine Learning y está cerrada de manera predeterminada. Los registros generados por el sistema se agrupan en diferentes carpetas, según el estado del trabajo del runtime.

Otras carpetas

Para el entrenamiento de trabajos en clústeres con varios procesos, los registros están presentes para cada IP de nodo. La estructura de cada nodo es igual que la de los trabajos de un solo nodo. Hay una carpeta de registros adicional para los registros de ejecución general, stderr y stdout.

Azure Machine Learning registra información de varios orígenes durante el entrenamiento, como AutoML o el contenedor de Docker que ejecuta el trabajo de entrenamiento. Muchos de estos registros no están documentados. Si encuentra problemas y se pone en contacto con el Soporte técnico de Microsoft, es posible que puedan usar estos registros durante la resolución de problemas.

Sesión de registro interactivo

Las sesiones de registro interactivo se utilizan normalmente en entornos de cuaderno. El método mlflow.start_run() inicia una nueva ejecución de MLflow y la establece como activa. Cualquier métrica que se registre durante la ejecución se añadirá al registro de ejecución. El método mlflow.end_run() finaliza la ejecución activa actual.

Otros orígenes de registro

Azure Machine Learning también puede registrar información de otros orígenes durante el entrenamiento, como las ejecuciones de aprendizaje automático automatizado o los contenedores de Docker que ejecutan los trabajos. Estos registros no se documentan, pero si encuentra problemas y se pone en contacto con el soporte técnico de Microsoft, es posible que puedan usar estos registros como ayuda para resolverlos.

Para información sobre el registro de métricas en el diseñador de Azure Machine Learning, consulte Registro de las métricas en el diseñador.

Pasos siguientes