Entrenamiento y seguimiento de modelos con MLflow y experimentos

Completado

Cada vez que entrene un modelo, quiere que los resultados sean reproducibles. Al realizar un seguimiento del trabajo y registrarlo, puede revisar en cualquier momento el trabajo y decidir cuál es el mejor enfoque para entrenar un modelo.

MLflow es una biblioteca de código abierto para hacer el seguimiento de los experimentos de aprendizaje automático y administrarlos. En concreto, el seguimiento de MLflow es un componente de MLflow que registra todo lo relacionado con el modelo que entrena, como los parámetros, las métricas y los artefactos.

MLflow ya está instalado al abrir un cuaderno en Microsoft Fabric. Para usar MLflow para realizar un seguimiento de los modelos, solo tiene que importar la biblioteca (con import mlflow) e iniciar el registro.

Creación de un experimento

Siempre que quiera realizar un seguimiento del trabajo en Microsoft Fabric, primero debe crear un experimento. Cada vez que entrena un modelo, se realiza un seguimiento como una ejecución de experimento en el área de trabajo. Puede crear un experimento mediante la interfaz de usuario (UI) o ejecutando el código siguiente:

mlflow.set_experiment("<EXPERIMENT_NAME>")

Cuando se ejecuta set_experiment(), se establece el experimento dado como el experimento activo. Si no existe un experimento con el nombre proporcionado, se crea un nuevo experimento.

Una vez establecido el experimento, puede empezar a realizar el seguimiento del trabajo con MLflow mediante:

  • Registro automático: registra automáticamente métricas, parámetros y modelos sin necesidad de instrucciones de registro explícitas.
  • Registro personalizado: registra explícitamente las métricas, parámetros, modelos o artefactos que cree durante el entrenamiento del modelo.

Si desea realizar un seguimiento de los parámetros, métricas o artefactos personalizados, puede usar funciones de registro como:

  • mlflow.log_param(): registra un solo parámetro de clave-valor. Use esta función para un parámetro de entrada que desee registrar.
  • mlflow.log_metric(): registra una sola métrica de clave-valor. El valor debe ser un número. Use esta función para cualquier salida que desee almacenar con la ejecución.
  • mlflow.log_artifact(): registra un archivo. Use esta función para cualquier trazado que desee registrar y guárdelo primero como archivo de imagen.
  • mlflow.log_model(): registra un modelo. Use esta función para crear un modelo de MLflow, que puede incluir una firma personalizada, un entorno y ejemplos de entrada.

Sugerencia

Obtenga más información sobre cómo realizar un seguimiento de los modelos con MLflow consultando la documentación oficial de MLflow.

Para utilizar las funciones de registro en un cuaderno, inicie una ejecución con mlflow.start_run() y registre cualquier métrica que desee:

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
import mlflow

with mlflow.start_run():
    model = XGBClassifier(use_label_encoder=False, eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
    y_pred = model.predict(X_test)

    accuracy = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", accuracy)

Cada vez que entrene un modelo y le haga un seguimiento, se creará una nueva ejecución de experimento dentro de un experimento. Al entrenar varios modelos que desea comparar, se recomienda agruparlos con el mismo nombre de experimento.

Recuperación de métricas con MLflow en un cuaderno

Para revisar las ejecuciones y comparar modelos del experimento, puede utilizar la interfaz de usuario o utilizar la biblioteca MLflow en un cuaderno.

Puede obtener todos los experimentos activos en el área de trabajo mediante MLFlow:

experiments = mlflow.search_experiments(max_results=2)
for exp in experiments:
    print(exp.name)

Para recuperar un experimento específico, puede ejecutar:

exp = mlflow.get_experiment_by_name(experiment_name)
print(exp)

Sugerencia

Exploración de la documentación sobre cómo buscar experimentos con MLflow

Recuperación de ejecuciones

MLflow permite buscar ejecuciones dentro de cualquier experimento. Necesita el id. del experimento o el nombre del experimento.

Por ejemplo, si desea recuperar las métricas de una ejecución específica:

mlflow.search_runs(exp.experiment_id)

De manera predeterminada, los experimentos se ordenan de forma descendente por start_time, que es el momento en el que el experimento se encontraba en la cola en Microsoft Fabric. Sin embargo, puede cambiar este valor predeterminado mediante el parámetro order_by.

Por ejemplo, si desea ordenar por hora de inicio y mostrar solo los dos últimos resultados:

mlflow.search_runs(exp.experiment_id, order_by=["start_time DESC"], max_results=2)

También puede buscar una ejecución con una combinación específica en los hiperparámetros:

mlflow.search_runs(
    exp.experiment_id, filter_string="params.num_boost_round='100'", max_results=2
)

Sugerencia

Exploración de la documentación sobre cómo buscar ejecuciones con MLflow