Seguimiento de las ejecuciones de entrenamiento de aprendizaje automático

El componente de seguimiento de MLflow permite registrar propiedades de origen, parámetros, métricas, etiquetas y artefactos relacionados con el entrenamiento de un modelo de aprendizaje automático. Para empezar a trabajar con MLflow, pruebe uno de los tutoriales de inicio rápido de MLflow.

El seguimiento de MLflow se basa en dos conceptos: experimentos y ejecuciones:

  • Un experimento de MLflow es la unidad principal de organización y control de acceso para las ejecuciones de MLflow; todas las ejecuciones de MLflow pertenecen a un experimento. Los experimentos le permiten visualizar, buscar y comparar ejecuciones, así como descargar artefactos de ejecución y metadatos para su análisis en otras herramientas.
  • Una ejecución de MLflow corresponde a una única ejecución del código del modelo. Cada ejecución registra la siguiente información:
    • Origen: nombre del cuaderno que inició la ejecución o el nombre del proyecto y el punto de entrada de la ejecución.
    • Versión: revisión del cuaderno si se ejecuta desde un cuaderno o un hash de confirmación de Git si se ejecuta desde un proyecto de MLflow.
    • Hora de inicio y finalización: hora de inicio y finalización de la ejecución.
    • Parámetros: parámetros de modelo guardados como pares clave-valor. Tanto las claves como los valores son cadenas.
    • Métricas: métricas de evaluación de modelos guardadas como pares clave-valor. El valor es "numérico". Cada métrica se puede actualizar durante el curso de la ejecución (por ejemplo, para realizar un seguimiento de cómo converge la función de pérdida del modelo) y los registros de MLflow, y le permite visualizar el historial de la métrica.
    • Etiquetas: ejecute metadatos guardados como pares clave-valor. Puede actualizar las etiquetas durante y después de que se complete una ejecución. Tanto las claves como los valores son cadenas.
    • Artefactos: archivos de salida en cualquier formato. Por ejemplo, puede grabar imágenes, modelos (por ejemplo, un modelo scikit-learn de pickle) y archivos de datos (por ejemplo, un archivo Parquet) como un artefacto.

La API de seguimiento de MLflow registra parámetros, métricas, etiquetas y artefactos de una ejecución de modelo. La API de seguimiento se comunica con un servidor de seguimiento de MLflow. Cuando se usa Databricks, un servidor de seguimiento hospedado en Databricks registra los datos. El servidor de seguimiento de MLflow hospedado tiene API de Python, Java y R.

Para aprender a controlar el acceso a los experimentos, consulte Permisos del experimento de MLflow y Cambio de permisos para el experimento.

Nota:

MLflow se instala en clústeres de ML de Databricks Runtime. Para usar MLflow en un clúster de Databricks Runtime, debe instalar la biblioteca mlflow. Para obtener instrucciones sobre cómo instalar una biblioteca en un clúster, consulte Instalación de una biblioteca en un clúster. Los paquetes específicos que se van a instalar para MLflow son:

  • Para Python, seleccione PyPi como origen de la biblioteca y escriba mlflow en el campo Package (Paquete).
  • Para R, seleccione CRAN como origen de la biblioteca y escriba mlflow en el campo Package (Paquete).
  • Para Scala, instale estos dos paquetes:
    • Seleccione Maven como origen de la biblioteca y escriba org.mlflow:mlflow-client:1.11.0 en el campo Coordinates (Coordenadas).
    • Seleccione PyPi como origen de la biblioteca y escriba mlflow en el campo Package (Paquete).

En este artículo:

Dónde se registran las ejecuciones de MLflow

Todas las ejecuciones de MLflow se registran en el experimento activo, que se puede establecer mediante cualquiera de los métodos siguientes:

Si no se establece ningún experimento activo, las ejecuciones se registran en el experimento del cuaderno.

Para registrar los resultados del experimento en un servidor de seguimiento de MLflow hospedado de forma remota en un área de trabajo distinta de aquella en la que ejecuta el experimento, establezca el URI de seguimiento para que haga referencia al área de trabajo remota con mlflow.set_tracking_uri(), y establezca la ruta de acceso al experimento en el área de trabajo remota mediante mlflow.set_experiment().

mlflow.set_tracking_uri(<uri_of_remote_workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Cuaderno de ejemplo

En este cuaderno se muestra cómo registrar ejecuciones en un experimento de cuaderno y en un experimento de área de trabajo. Solo las ejecuciones de MLflow iniciadas dentro de un cuaderno se pueden registrar en el experimento del cuaderno. Las ejecuciones de MLflow iniciadas desde cualquier cuaderno o desde las API se pueden registrar en un experimento de área de trabajo. Para información sobre cómo ver las ejecuciones registradas, consulte Visualización del experimento de cuaderno y Visualización del experimento de área de trabajo.

Registro del cuaderno de ejecuciones de MLflow

Obtener el cuaderno

Puede usar las API de Python, Java o Scala y R de MLflow para iniciar ejecuciones y registrar datos de ejecución. Para más información, consulte los cuadernos de inicio rápido de MLflow.

Experimentos

Hay dos tipos de experimentos: de área de trabajo y de cuaderno.

  • Puede crear un experimento de área de trabajo desde la interfaz de usuario de Databricks Machine Learning o desde la API de MLflow. Los experimentos de área de trabajo no están asociados a ningún cuaderno y cualquier cuaderno puede registrar una ejecución en estos experimentos mediante el identificador del experimento o el nombre del experimento.
  • Un experimento de cuaderno está asociado a un cuaderno específico. Azure Databricks crea automáticamente un experimento de cuaderno si no hay ningún experimento activo al iniciar una ejecución mediante mlflow.start_run().

Para ver todos los experimentos de un área de trabajo, haga clic en Icono de experimentosExperiments (Experimentos) en la barra lateral. Este icono solo aparece cuando está en el rol de aprendizaje automático. Haga clic en el nombre de cualquier experimento de la tabla para mostrar su página del experimento:

Visualización de un experimento

En la página del experimento se enumeran todas las ejecuciones asociadas al experimento. En la tabla , puede abrir la página de ejecución de cualquier ejecución asociada al experimento haciendo clic en su hora de inicio. La columna Origen proporciona acceso a la versión del cuaderno que creó la ejecución. También puede buscar y filtrar ejecuciones por métricas o configuración de parámetros.

Creación del experimento

Creación del experimento del área de trabajo

En esta sección se describe cómo crear un experimento de área de trabajo mediante la interfaz de usuario de Azure Databricks. También puede usar la API de MLflow o el proveedor de Databricks Terraform con databricks_mlflow_experiment.

Para obtener instrucciones sobre el registro de ejecuciones en experimentos de área de trabajo, consulte Cuaderno de ejemplo.

  1. Haga clic en Icono de área de trabajoWorkspace (Área de trabajo) en la barra lateral.

  2. Vaya a la carpeta en la que quiere crear el experimento.

  3. Realice una de las siguientes acciones:

    • Junto a una carpeta cualquiera, haga clic en Menú desplegable en el lado derecho del texto y seleccione Create > MLflow Experiment (Crear experimento de MLflow).

      Crear experimento

    • En el área de trabajo o en una carpeta de usuario, haga clic Símbolo de intercalación hacia abajo y seleccione Create > MLflow Experiment (Crear experimento de MLflow).

  4. En el cuadro de diálogo Create MLflow Experiment (Crear experimento de MLflow), escriba un nombre para el experimento y una ubicación de artefacto opcional. Si no especifica una ubicación de artefacto, los artefactos se almacenan en dbfs:/databricks/mlflow-tracking/<experiment-id>.

    Azure Databricks admite ubicaciones de artefacto de DBFS y Azure Blob Storage.

    Para almacenar artefactos en Azure Blob Storage, especifique un URI con el formato wasbs://<container>@<storage-account>.blob.core.windows.net/<path>. Los artefactos almacenados en Azure Blob Storage no aparecen en la interfaz de usuario de MLflow; debe descargarlos mediante un cliente de Blob Storage.

    Nota:

    Cuando se almacena un artefacto en una ubicación que no sea DBFS, el artefacto no aparece en la interfaz de usuario de MLflow. Los modelos almacenados en ubicaciones distintas de DBFS no se pueden registrar en el Registro de modelos.

  5. Haga clic en Crear. Aparece un experimento vacío.

También puede crear un experimento con el proveedor de Databricks Terraform y databricks_mlflow_experiment.

Creación de un experimento de cuaderno

Cuando se usa el comando mlflow.start_run() en un cuaderno, la ejecución registra métricas y parámetros en el experimento activo. Si no hay ningún experimento activo, Azure Databricks crea un experimento de cuaderno. Un experimento de cuaderno comparte el mismo nombre e identificador que su cuaderno correspondiente. El identificador de cuaderno es el identificador numérico al final de una dirección URL y un identificador del cuaderno.

Para instrucciones sobre el registro de ejecuciones en experimentos de cuadernos, consulte Cuaderno de ejemplo.

Nota:

Si elimina un experimento de cuaderno mediante la API (por ejemplo, MlflowClient.tracking.delete_experiment() en Python), el propio cuaderno se mueve a la carpeta de la papelera.

Visualización de un experimento

Cada experimento al que tiene acceso aparece en la página de experimentos. En esta página, puede ver cualquier experimento. Haga clic en el nombre de un experimento para mostrar la página del experimento.

Métodos adicionales de acceder a la página del experimento:

  • Puede acceder a la página del experimento de un experimento de área de trabajo desde el menú del área de trabajo.
  • Puede acceder a la página del experimento de un experimento de cuaderno desde el cuaderno.

Visualización del experimento de área de trabajo

  1. Haga clic en Icono de área de trabajoWorkspace (Área de trabajo) en la barra lateral.
  2. Vaya a la carpeta que contiene el experimento.
  3. Haga clic en el nombre del experimento.

Visualización del experimento de cuaderno

En la barra de herramientas del cuaderno, haga clic en el icono de experimentoIcono de experimento.

Barra de herramientas Cuaderno

Aparece la barra lateral de ejecuciones de experimento, con un resumen de cada ejecución asociada al experimento del cuaderno, incluidos los parámetros de ejecución y las métricas. En la parte superior de la barra lateral se encuentra el nombre del experimento en el que se ejecuta el cuaderno registrado más recientemente (un experimento de cuaderno o de área de trabajo).

Vista de parámetros y métricas de ejecución

En la barra lateral, puede ir a la página del experimento o directamente a una ejecución.

  • Para ver el experimento, haga clic en External Link (Vínculo externo) en el extremo derecho, junto a Experiment Runs (Ejecuciones de experimento).
  • Para mostrar una ejecución, haga clic en External Link (Vínculo externo) junto a la fecha y la hora de la ejecución.

Administrar experimentos

Puede cambiar el nombre, eliminar o administrar los permisos de un experimento que tenga desde la página de experimentos, la página del experimento o el menú del área de trabajo.

Cambio de nombre del experimento desde la página de experimentos o la página del experimento

Importante

Esta característica está en versión preliminar pública.

Para cambiar el nombre de un experimento desde la página de experimentos o la página del experimento, haga clic en icono de tres botones y seleccione Rename (Cambiar nombre).

Cambio de nombre del experimento desde el menú del área de trabajo

  1. Haga clic en Icono de área de trabajoWorkspace (Área de trabajo) en la barra lateral.
  2. Vaya a la carpeta que contiene el experimento.
  3. Haga clic en Menú desplegable en el lado derecho del experimento y seleccione Rename (Cambiar nombre).

Copia del nombre del experimento

Para copiar el nombre del experimento, haga clic en Icono de copia en la parte superior de la página del experimento. Puede usar este nombre en el comando set_experiment de MLflow para establecer el experimento de MLflow activo.

Icono del nombre del experimento

También puede copiar el nombre del experimento desde la barra lateral del experimento de un cuaderno.

Eliminación de un experimento de cuaderno

Los experimentos de cuaderno forman parte del cuaderno y no se pueden eliminar por separado. Al eliminar un cuaderno, se elimina el experimento de cuaderno asociado. Si elimina un experimento de cuaderno mediante la API (por ejemplo, MlflowClient.tracking.delete_experiment() en Python) o la interfaz de usuario, también se elimina el cuaderno.

Eliminación del experimento de área de trabajo desde el menú del área de trabajo

  1. Haga clic en Icono de área de trabajoWorkspace (Área de trabajo) en la barra lateral.
  2. Vaya a la carpeta que contiene el experimento.
  3. Haga clic en Menú desplegable en el lado derecho del experimento y seleccione Move to Trash (Mover a la papelera).

Eliminación del experimento de área de trabajo o de cuaderno desde la página de experimentos o de la página del experimento

Importante

Esta característica está en versión preliminar pública.

Para eliminar un experimento desde la página de experimentos o la página del experimento, haga clic en icono de tres botones y seleccione Delete (Eliminar).

Al eliminar un experimento de cuaderno, también se elimina el cuaderno.

Cambio de los permisos del experimento

Para cambiar los permisos de un experimento desde la página del experimento, haga clic en Share.

Botón de permisos de la página de experimentos

Puede cambiar los permisos de un experimento de su propiedad desde la página de experimentos. Haga clic en el icono de tres botones en la columna Acciones y seleccione Permiso.

Para más información sobre los permisos de experimentos, consulte Permisos de experimentos de MLflow.

Copia de experimentos entre áreas de trabajo

Para migrar experimentos de MLflow entre áreas de trabajo, puede usar el proyecto MLflow Export-Import controlado por la comunidad de código abierto.

Con estas herramientas puede realizar lo siguiente:

  • Comparta y colabore con otros científicos de datos en el mismo servidor de seguimiento u otro servidor de seguimiento. Por ejemplo, puede clonar un experimento de otro usuario en el área de trabajo.
  • Copie los experimentos de MLflow y ejecútelos desde el servidor de seguimiento local al área de trabajo de Databricks.
  • Realice una copia de seguridad de experimentos y modelos críticos en otro área de trabajo de Databricks.

Ejecuciones

Todas las ejecuciones de MLflow se registran en el experimento activo. Si no ha establecido explícitamente un experimento como experimento activo, las ejecuciones se registran en el experimento de cuaderno.

Visualización de ejecuciones

Puede acceder a una ejecución desde su página de experimento principal o directamente desde el cuaderno que creó la ejecución.

En la página del experimento, en la tabla de ejecuciones, haga clic en la hora de inicio de una ejecución.

En el cuaderno, haga clic en External Link (Vínculo externo) junto a la fecha y la hora de la ejecución en la barra lateral de ejecuciones de experimento.

La pantalla de ejecución muestra los parámetros usados para la ejecución, las métricas resultantes de la ejecución y las etiquetas o notas. Para mostrar las notas, los parámetros, las métricas o las etiquetas de esta ejecución, haga clic en flecha derecha a la izquierda de la etiqueta.

Desde una ejecución de esta pantalla también se accede a los artefactos guardados.

Vista de ejecución

Fragmentos de código para la predicción

Si registra un modelo desde una ejecución, el modelo aparece en la sección de artefactos de esta página. Para mostrar fragmentos de código que ilustren cómo cargar y usar el modelo para realizar predicciones en DataFrames de Spark y Pandas, haga clic en el nombre del modelo.

Predicción de fragmentos de código

Visualización del cuaderno o el proyecto de Git usados para una ejecución

Para ver la versión del cuaderno que creó una ejecución:

  • En la página del experimento, haga clic en el vínculo de la columna Source (Origen).
  • En la página de ejecución, haga clic en el vínculo situado junto a Source (Origen).
  • En el cuaderno, en la barra lateral de ejecuciones de experimento, haga clic en el icono de CuadernoIcono de versión de cuaderno en el cuadro de esa ejecución de experimento.

La versión del cuaderno asociada a la ejecución aparece en la ventana principal con una barra de resaltado que muestra la fecha y hora de la ejecución.

Si la ejecución se inició de forma remota desde un proyecto de Git, haga clic en el vínculo del campo Git Commit(Confirmación de Git) para abrir la versión específica del proyecto usada en la ejecución. El vínculo del campo Source (Origen) abre la rama principal del proyecto de Git usado en la ejecución.

Adición de una etiqueta a una ejecución

Las etiquetas son pares clave-valor que puede crear y usar más adelante para buscar ejecuciones.

  1. En la página de ejecución, haga clic en Icono de etiqueta si aún no está abierto. Aparece la tabla de etiquetas.

    tabla de etiquetas

  2. Haga clic en los campos Nombre y Valor y escriba la clave y el valor de la etiqueta.

  3. Haga clic en Agregar.

    adición de etiqueta

Edición o eliminación de una etiqueta de una ejecución

Para editar o eliminar una etiqueta existente, use los iconos de la columna Actions (Acciones).

acciones de etiqueta

Reproducción del entorno de software de una ejecución

Puede reproducir el entorno de software exacto para la ejecución haciendo clic en Reproduce Run(Reproducir ejecución). Aparecerá el siguiente cuadro de diálogo:

Reproducción de cuadro de diálogo de ejecución

Con la configuración predeterminada, al hacer clic en Confirm (Confirmar):

  • El cuaderno se clona en la ubicación que se muestra en el cuadro de diálogo.
  • Si el clúster original sigue existiendo, el cuaderno clonado se asocia al clúster original y se inicia el clúster.
  • Si el clúster original ya no existe, se crea e inicia un nuevo clúster con la misma configuración, incluidas las bibliotecas instaladas. El cuaderno está asociado al nuevo clúster.

Puede seleccionar una ubicación diferente para el cuaderno clonado e inspeccionar la configuración del clúster y las bibliotecas instaladas:

  • Para seleccionar otra carpeta para guardar el cuaderno clonado, haga clic en Edit Folder (Editar carpeta).
  • Para ver la especificación del clúster, haga clic en View Spec (Ver especificación). Para clonar solo el cuaderno y no el clúster, desactive esta opción.
  • Para ver las bibliotecas instaladas en el clúster original, haga clic en View Libraries (Ver bibliotecas). Si no le interesa instalar las mismas bibliotecas que en el clúster original, desactive esta opción.

Administración de ejecuciones

Cambio de nombre de una ejecución

Para cambiar el nombre de una ejecución, haga clic en icono de tres botones en la esquina superior derecha de la página de ejecución y seleccione Rename (Cambiar nombre).

Filtrado de ejecuciones

Puede buscar ejecuciones en función de los valores de parámetro o métrica. También puede buscar ejecuciones por etiqueta.

  • Para buscar ejecuciones que coincidan con una expresión que contenga valores de parámetro y métrica, escriba una consulta en el campo de búsqueda y haga clic en Search (Buscar). Algunos ejemplos de sintaxis de consulta son:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

  • Para buscar ejecuciones por etiqueta, escriba etiquetas con el formato: tags.<key>="<value>". Los valores de cadena se deben incluir entre comillas, como se muestra.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Tanto las claves como los valores pueden contener espacios. Si la clave tiene espacios, debe incluirla entre acentos graves, como se muestra.

    tags.`my custom tag` = "my value"
    

También puede filtrar las ejecuciones por su estado (activo o eliminado) y en función de si una versión del modelo está asociada a la ejecución. Para ello, haga clic Filter (Filtrar) a la derecha del cuadro de búsqueda. Aparecen los menús desplegables State (Estado) y Linked Models (Modelos vinculados). Realice las selecciones en los menús desplegables.

Filtrado de ejecuciones

Comparación de ejecuciones

Puede comparar las ejecuciones tanto de un experimento como de varios. La página Comparing Runs presenta información sobre las ejecuciones seleccionadas en los formatos de gráficos y de tablas.

Comparación de ejecuciones de un único experimento
  1. En la página del experimento, seleccione dos o más ejecuciones, para lo que debe hacer clic en la casilla situada a la izquierda de la ejecución, o bien seleccione todas las ejecuciones activando la casilla situada en la parte superior de la columna.
  2. Haga clic en Comparar. Aparece la pantalla Comparing <N> Runs.
Comparación de ejecuciones de varios experimentos
  1. En la página de experimentos, seleccione los experimentos que desea comparar, para lo que debe hacer clic en el cuadro situado a la izquierda del nombre del experimento.
  2. Haga clic en Compare (n) (n es el número de experimentos que ha seleccionado). Aparece una pantalla que muestra todas las ejecuciones de los experimentos seleccionados.
  3. Seleccione dos o más ejecuciones, para lo que debe hacer clic en la casilla situada a la izquierda de la ejecución, o bien seleccione todas las ejecuciones activando la casilla situada en la parte superior de la columna.
  4. Haga clic en Comparar. Aparece la pantalla Comparing <N> Runs.
Use la página Comparing Runs

La página Comparing Runs muestra visualizaciones de los resultados de las ejecuciones y tablas de información de ejecución, parámetros de ejecución y métricas.

Para crear una visualización:

  1. Seleccione el tipo de trazado (Parallel Coordinates Plot, Scatter Plot o Contour Plot).

  2. En el caso de Parallel Coordinates Plot, seleccione los parámetros y las métricas que se van a trazar. En el caso de Scatter Plot o Contour Plot, seleccione el parámetro o la métrica que se va a mostrar en cada eje.

    Comparación de visualización de página de ejecución

Las tablas Parameters y Metrics muestran los parámetros y métricas de ejecución de todas las ejecuciones seleccionadas. Las columnas de estas tablas se identifican mediante la tabla Run details inmediatamente superior. Para simplificar, puede ocultar parámetros y métricas idénticos en todas las ejecuciones seleccionadas alternando Show diff only button.

Comparación de tablas de página de ejecución

Descarga de ejecuciones

  1. Selecciona una o varias ejecuciones.

  2. Haga clic en Download CSV (Descargar CSV). Se descarga un archivo CSV que contiene los campos siguientes:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Eliminación de ejecuciones

  1. En el experimento, seleccione una o varias ejecuciones haciendo clic en la casilla situada a su izquierda.
  2. Haga clic en Eliminar.
  3. Si la ejecución es una ejecución primaria, decida si también desea eliminar ejecuciones descendientes. Esta opción está seleccionada de forma predeterminada.
  4. Haga clic en Delete (Eliminar) para confirmar o en Cancel (Cancelar) para cancelar. Las ejecuciones eliminadas se guardan durante 30 días. Para mostrar las ejecuciones eliminadas, seleccione Deleted (Eliminado) en el campo State (Estado).

Copia de ejecuciones entre áreas de trabajo

Para importar o exportar ejecuciones de MLflow hacia o desde el área de trabajo de Databricks, puede usar el proyecto de código abierto controlado por la comunidad MLflow Export-Import.

Acceso al servidor de seguimiento de MLflow desde fuera de Azure Databricks

También puede escribir y leer en el servidor de seguimiento desde fuera de Azure Databricks, por ejemplo, mediante la CLI de MLflow.

Análisis de ejecuciones de MLflow mediante programación

Puede acceder a los datos de ejecución de MLflow mediante programación con las dos API de DataFrame siguientes:

  • La API search_runs del cliente de Python de MLflow devuelve un objeto DataFrame de Pandas.
  • El origen de datos del experimento de MLflow devuelve un objeto DataFrame de Apache Spark.

En este ejemplo se muestra cómo usar el cliente de Python de MLflow para crear un panel que visualice los cambios en las métricas de evaluación a lo largo del tiempo, realice un seguimiento del número de ejecuciones iniciadas por un usuario específico y mida el número total de ejecuciones entre todos los usuarios:

Ejemplos

En los cuadernos siguientes se muestra cómo entrenar varios tipos de modelos y realizar un seguimiento de los datos de entrenamiento en MLflow y cómo almacenar datos de seguimiento en Delta Lake.