Compartir vía


Seguimiento de experimentos y modelos con MLflow

El Seguimiento es el proceso de guardar información relevante acerca de los experimentos. En este artículo, aprenderá a usar MLflow para realizar el seguimiento de experimentos y ejecuciones en áreas de trabajo de Azure Machine Learning.

Es posible que algunos métodos disponibles en la API de MLflow no estén disponibles cuando están conectados a Azure Machine Learning. Para más información sobre las operaciones admitidas y no admitidas, consulte Matriz de compatibilidad para consultar ejecuciones y experimentos. También puede obtener información acerca de las funcionalidades de MLflow admitidas en Azure Machine Learning en el artículo MLflow y Azure Machine Learning.

Nota:

Requisitos previos

  • Instale el paquete mlflow del SDK de MLflow y el complemento azureml-mlflow de Azure Machine Learning para MLflow de la siguiente manera:

    pip install mlflow azureml-mlflow
    

    Sugerencia

    Puede usar el paquete de mlflow-skinny, que es un paquete MLflow ligero sin dependencias de ciencia de datos, interfaz de usuario, servidor o almacenamiento de SQL. Este paquete se recomienda para los usuarios que necesitan principalmente las funcionalidades de seguimiento y registro de MLflow sin importar el conjunto completo de características, incluidas las implementaciones.

  • Cree un área de trabajo de Azure Machine Learning. Para crear un área de trabajo, consulte Crear recursos que necesita para empezar. Revise los permisos de acceso que necesita para realizar las operaciones de MLflow en el área de trabajo.

  • Para realizar el seguimiento remoto o realizar un seguimiento de experimentos que se ejecutan fuera de Azure Machine Learning, configure MLflow para que apunte al URI de seguimiento del área de trabajo de Azure Machine Learning. Para más información sobre cómo conectar MLflow al área de trabajo, consulte Configuración de MLflow para Azure Machine Learning.

Configuración del experimento

MLflow organiza la información en experimentos y ejecuciones. Las ejecuciones se denominan trabajos en Azure Machine Learning. De manera predeterminada, ejecuta el registro en un experimento creado automáticamente denominado Predeterminado, pero puede configurar qué experimento realizar el seguimiento.

Para el entrenamiento interactivo, como en un cuaderno de Jupyter, use el comando mlflow.set_experiment() de MLflow. Por ejemplo, el siguiente fragmento de código configura un experimento:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Configurar la ejecución

Azure Machine Learning realiza un seguimiento de los trabajos de entrenamiento en lo que se ejecuta la llamada de MLflow. Usa ejecuciones para capturar todo el procesamiento que realiza el trabajo.

Al trabajar de forma interactiva, MLflow inicia el seguimiento de la rutina de entrenamiento en cuanto registra información que requiere una ejecución activa. Por ejemplo, si la funcionalidad de registro automático de Mlflow está habilitada, el seguimiento de MLflow se inicia al registrar una métrica o parámetro o iniciar un ciclo de entrenamiento.

Sin embargo, normalmente resulta útil iniciar la ejecución explícitamente, especialmente si se desea capturar el tiempo total del experimento en el campo Duración. Para iniciar la ejecución explícitamente, usa mlflow.start_run().

Tanto si inicia la ejecución manualmente como si no, finalmente debe detener la ejecución, de modo que MLflow sepa que la ejecución del experimento se realiza y puede marcar el estado de la ejecución como Completado. Para detener una ejecución, use mlflow.end_run().

El código siguiente inicia una ejecución manualmente y la termina al final del cuaderno:

mlflow.start_run()

# Your code

mlflow.end_run()

Es mejor iniciar ejecuciones manualmente para que no se olvide de terminarlas. Puede usar el paradigma del administrador de contextos para ayudarle a recordar finalizar la ejecución.

with mlflow.start_run() as run:
    # Your code

Al iniciar una nueva ejecución con mlflow.start_run(), puede resultar útil especificar el parámetro run_name, que posteriormente se traduce al nombre de la ejecución en la interfaz de usuario de Azure Machine Learning. Esta práctica le ayuda a identificar la ejecución más rápidamente.

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

Habilitación del registro automático de MLflow

Puede Registrar métricas, parámetros y archivos con MLflow manualmente y también puede confiar en la funcionalidad de registro automático de MLflow. Cada marco de aprendizaje automático compatible con MLflow determina qué realizar automáticamente.

Para habilitar el registro automático, inserte el siguiente código antes del código de entrenamiento:

mlflow.autolog()

Visualización de las métricas y los artefactos en el área de trabajo

Las métricas y los artefactos procedentes del registro de MLflow se supervisan en el área de trabajo. Puede verlos y acceder a ellos en Estudio de Azure Machine Learning o acceder a ellos mediante programación a través del SDK de MLflow.

Para ver métricas y artefactos en Studio:

  1. En la página Trabajos del área de trabajo, seleccione el nombre del experimento.

  2. En la página de detalles del experimento, seleccione la pestaña Métricas.

  3. Seleccione métricas registradas para representar gráficos en el lado derecho. Puede personalizar los gráficos aplicando suavizado, cambiando el color o trazando varias métricas en un solo gráfico. También puede cambiar el tamaño y reorganizar el diseño.

  4. Una vez creada la vista deseada, guárdela para su uso futuro y compártala con sus compañeros de equipo mediante un vínculo directo.

    Recorte de pantalla de la vista de métricas que muestra la lista de métricas y los gráficos creados a partir de las métricas.

Para acceder a métricas, parámetros y artefactos de consulta mediante programación mediante el SDK de MLflow, use mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Sugerencia

En el ejemplo anterior solo se devuelve el último valor de una métrica determinada. Para recuperar todos los valores de una métrica determinada, use el método mlflow.get_metric_history. Para obtener más información sobre cómo recuperar valores de métricas, consulte Obtención de parámetros y métricas de una ejecución.

Para descargar artefactos registrados, como archivos y modelos, use mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Para obtener más información acerca de cómo recuperar o comparar información de experimentos y ejecuciones en Azure Machine Learning mediante MLflow, consulte Consulta y comparación de experimentos y ejecuciones con MLflow.