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
loggingde 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,mlflowyazure-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:
- Cree o establezca el experimento activo.
- Inicie la ejecución.
- Use métodos de registro para registrar métricas y otra información.
- 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 amlflow.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:
- Vaya a la sección Experimentos.
- Seleccione el identificador de la ejecución para ver una ejecución específica.
- Seleccione Resultados y registros en la parte superior de la página.
- Seleccione Descargar todo para descargar todos los registros en una carpeta comprimida.
- También puede descargar archivos de registro individuales eligiendo el archivo de registro y seleccionando Descargar.
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.