Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El seguimiento de MLflow permite registrar cuadernos y conjuntos de datos de entrenamiento, parámetros, métricas, etiquetas y artefactos relacionados con el entrenamiento de un modelo de aprendizaje automático o aprendizaje profundo. Para obtener un cuaderno de ejemplo para empezar a trabajar con MLflow, consulte Tutorial: Modelos de ML clásicos de un extremo a otro en Azure Databricks.
Seguimiento de MLflow con experimentos, ejecuciones y modelos
El proceso de desarrollo del modelo es iterativo y puede ser difícil realizar un seguimiento del trabajo a medida que desarrolla y optimiza un modelo. En Azure Databricks, puede usar el seguimiento de MLflow para ayudarle a realizar un seguimiento del proceso de desarrollo del modelo, incluida la configuración de parámetros o combinaciones que ha probado y cómo han afectado el rendimiento del modelo.
El seguimiento de MLflow usa experimentos, ejecuciones y modelos para registrar y realizar un seguimiento del desarrollo de modelos de aprendizaje profundo y aprendizaje automático. Una ejecución es una ejecución única del código de modelo. Durante una ejecución de MLflow, puede registrar los parámetros y los resultados del modelo. Un experimento es una colección de ejecuciones relacionadas. En un experimento, puede comparar y filtrar ejecuciones para comprender cómo funciona el modelo y cómo su rendimiento depende de la configuración de parámetros, los datos de entrada, etc. Un modelo es una colección de artefactos que representan un modelo de aprendizaje automático entrenado.
Con MLflow 3, LoggedModels
eleva el concepto de un modelo generado por una ejecución, estableciéndolo como una entidad distinta distinta para realizar un seguimiento del ciclo de vida del modelo en diferentes ejecuciones de entrenamiento y evaluación.
- Organización de ejecuciones de entrenamiento con experimentos de MLflow
- Seguimiento y comparación de modelos mediante modelos registrados de MLflow
- Ver los resultados del entrenamiento con ejecuciones de MLflow
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.
API de seguimiento de MLflow
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.
MLflow está preinstalado en clústeres de Databricks Runtime ML. 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. Para usar MLflow 3 y sus funcionalidades de seguimiento de última generación, asegúrese de actualizar a la versión más reciente (consulte Instalación de MLflow 3).
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:
- Use el comando mlflow.set_experiment().
- Use el parámetro
experiment_id
del comando mlflow.start_run(). - Establezca una de las variables de entorno de MLflow: MLFLOW_EXPERIMENT_NAME o MLFLOW_EXPERIMENT_ID.
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")
Registrar ejecuciones y modelos en un experimento
MLflow puede registrar automáticamente el código de entrenamiento escrito en muchos marcos de aprendizaje automático y aprendizaje profundo. Esta es la manera más fácil de empezar a usar el seguimiento de MLflow. Consulte el cuaderno de ejemplo.
Para obtener más control sobre qué parámetros y métricas se registran o para registrar artefactos adicionales, como archivos CSV o trazados, use la API de registro de MLflow. Consulte el cuaderno de ejemplo.
Uso del registro automático para realizar un seguimiento del desarrollo de modelos
En este cuaderno de ejemplo se muestra cómo usar el registro automático con scikit-learn. Para obtener información sobre el registro automático con otras bibliotecas de Python, consulte la documentación sobre el registro automático de MLflow.
MLflow 3
Cuaderno de Python de registro automático de MLflow para MLflow 3
MLflow 2.x
Cuaderno de Python de registro automático de MLflow
Uso de la API de registro para realizar un seguimiento del desarrollo de modelos
En este cuaderno de ejemplo se muestra cómo usar la API de registro de Python. MLflow también tiene API REST, R y Java.
MLflow 3
Cuaderno de Python de la API de registro de MLflow para MLflow 3
MLflow 2.x
Cuaderno de Python de la API de registro de MLflow
Ejecuciones de registro en un experimento de área de trabajo
De forma predeterminada, al entrenar un modelo en un cuaderno de Databricks, las ejecuciones se registran en el experimento del cuaderno. 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 registrar ejecuciones en un experimento del espacio de trabajo, utilice un código similar al siguiente en su bloc de notas o llamada a la API.
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)
Para obtener instrucciones sobre cómo crear un experimento de área de trabajo, consulte Creación de 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.
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 realizar un seguimiento del desarrollo de modelos mediante MLflow.