Compartir a través de


Seguimiento de las ejecuciones de entrenamiento de aprendizaje automático y aprendizaje profundo

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 o aprendizaje profundo. Para empezar a trabajar con MLflow, pruebe uno de los tutoriales de inicio rápido de MLflow.

Seguimiento de MLflow con experimentos y ejecuciones

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

Nota:

A partir del 27 de marzo de 2024, MLflow impone un límite de cuota en el número de parámetros totales, etiquetas y pasos de métrica para todas las ejecuciones existentes y nuevas, y el número de ejecuciones totales para todos los experimentos existentes y nuevos, consulte Límites de recursos. Si alcanza la cuota de ejecuciones por experimento, Databricks le recomienda que elimine las ejecuciones que ya no necesite usando la API de eliminación de ejecuciones en Python. Si alcanza otros límites de cuota, Databricks recomienda ajustar la estrategia de registro para mantener el límite. Si necesita un aumento de este límite, póngase en contacto con el equipo de la cuenta de Databricks con una breve explicación del caso de uso, por qué los enfoques de mitigación sugeridos no funcionan y el nuevo límite que solicita.

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.

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).

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")

Si está ejecutando experimentos localmente y desea registrar los resultados del experimento en el servidor de seguimiento de MLflow de Databricks, proporcione la instancia del área de trabajo de Databricks (DATABRICKS_HOST) y el token de acceso personal de Databricks (DATABRICKS_TOKEN). A continuación, puede establecer el URI de seguimiento para hacer referencia al área de trabajo con mlflow.set_tracking_uri() y establecer la ruta de acceso al experimento mediante mlflow.set_experiment(). Consulte Realizar la autenticación de tokens de acceso personal de Azure Databricks para más información sobre dónde encontrar valores para las variables de entorno de DATABRICKS_HOST y DATABRICKS_TOKEN.

En el ejemplo de código siguiente se muestra cómo establecer estos valores:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Cuaderno de ejemplo de registros

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 ejemplo de MLflow.

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. Vea Acceso al servidor de seguimiento de MLflow desde fuera de Azure Databricks.

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:

Por qué las salidas y métricas de entrenamiento de modelos podrían variar

Muchos de los algoritmos usados en ML tienen un elemento aleatorio, como el muestreo o las condiciones iniciales aleatorias dentro del propio algoritmo. Al entrenar un modelo con uno de estos algoritmos, es posible que los resultados no sean los mismos con cada ejecución, incluso si se iniciase la ejecución con las mismas condiciones. Muchas bibliotecas ofrecen un mecanismo de propagación para corregir las condiciones iniciales de estos elementos estocásticos. Sin embargo, podría haber otras fuentes de variación que no estén controladas por semillas. Algunos algoritmos son sensibles al orden de los datos, y los algoritmos de ML distribuidos también podrían verse afectados por cómo se particionan los datos. Por lo general, esta variación no es significativa y no es importante en el proceso de desarrollo del modelo.

Para controlar la variación causada por diferencias en el orden y la creación de particiones, use las funciones de PySpark repartition y sortWithinPartitions.

Ejemplos de seguimiento de MLflow

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.