Registro de Experimentos con MLflow
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import logging import mlflow import mlflow.sklearn from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load sample dataset X, y = load_diabetes(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # Set experiment name (creates if doesn't exist) experiment_name = "DiabetesRegression" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Start an MLflow run with mlflow.start_run() as run: # Define and train model alpha = 0.5 logging.info(f"Training Ridge(alpha={alpha})") model = Ridge(alpha=alpha) model.fit(X_train, y_train) logging.info("Training complete") # Predict and calculate metric predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) logging.info(f"Test MSE: {mse:.6f}") # Log parameter, metric, and model mlflow.log_param("alpha", alpha) mlflow.log_metric("mse", mse) mlflow.sklearn.log_model(model, "model") logging.info("Logged params, metrics, and model to MLflow") # Optionally, log data version or hash for reproducibility mlflow.log_param("data_version", "sklearn_diabetes_v1") # Print run information to stdout run_id = run.info.run_id experiment_id = run.info.experiment_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Experiment ID: {experiment_id}") logging.info(f"Artifact URI: {artifact_uri}")
Para comprender cómo funciona el registro de experimentos en la práctica, se puede seguir este desglose paso a paso del código proporcionado. Primero, el código carga un conjunto de datos de ejemplo utilizando load_diabetes de scikit-learn y luego lo divide en conjuntos de entrenamiento y prueba. El experimento se nombra usando mlflow.set_experiment, que selecciona un experimento existente o crea uno nuevo si es necesario.
La parte principal del flujo de trabajo comienza con mlflow.start_run(), que inicializa una nueva ejecución y asegura que todos los registros posteriores se agrupen juntos. Dentro de esta ejecución, se define un modelo de regresión Ridge con un parámetro alpha específico y se entrena con los datos de entrenamiento. Tras el entrenamiento, se realizan predicciones sobre el conjunto de prueba y se calcula el error cuadrático medio (MSE) como métrica de rendimiento.
Luego, se utilizan las funciones de registro de MLflow para capturar los aspectos clave del experimento. El parámetro alpha se registra con mlflow.log_param y el mse calculado se registra como métrica usando mlflow.log_metric. El modelo entrenado se guarda como artefacto con mlflow.sklearn.log_model, lo que facilita su recuperación o despliegue posterior. Para la reproducibilidad, el código también registra un parámetro data_version, que documenta el origen o la versión del conjunto de datos utilizado para el entrenamiento.
Advertencia: siempre registrar metadatos relevantes como la versión de los datos, la semilla aleatoria y la información del entorno. Sin estos datos, reproducir resultados o depurar problemas se vuelve mucho más difícil.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 6.67
Registro de Experimentos con MLflow
Desliza para mostrar el menú
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import logging import mlflow import mlflow.sklearn from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load sample dataset X, y = load_diabetes(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # Set experiment name (creates if doesn't exist) experiment_name = "DiabetesRegression" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Start an MLflow run with mlflow.start_run() as run: # Define and train model alpha = 0.5 logging.info(f"Training Ridge(alpha={alpha})") model = Ridge(alpha=alpha) model.fit(X_train, y_train) logging.info("Training complete") # Predict and calculate metric predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) logging.info(f"Test MSE: {mse:.6f}") # Log parameter, metric, and model mlflow.log_param("alpha", alpha) mlflow.log_metric("mse", mse) mlflow.sklearn.log_model(model, "model") logging.info("Logged params, metrics, and model to MLflow") # Optionally, log data version or hash for reproducibility mlflow.log_param("data_version", "sklearn_diabetes_v1") # Print run information to stdout run_id = run.info.run_id experiment_id = run.info.experiment_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Experiment ID: {experiment_id}") logging.info(f"Artifact URI: {artifact_uri}")
Para comprender cómo funciona el registro de experimentos en la práctica, se puede seguir este desglose paso a paso del código proporcionado. Primero, el código carga un conjunto de datos de ejemplo utilizando load_diabetes de scikit-learn y luego lo divide en conjuntos de entrenamiento y prueba. El experimento se nombra usando mlflow.set_experiment, que selecciona un experimento existente o crea uno nuevo si es necesario.
La parte principal del flujo de trabajo comienza con mlflow.start_run(), que inicializa una nueva ejecución y asegura que todos los registros posteriores se agrupen juntos. Dentro de esta ejecución, se define un modelo de regresión Ridge con un parámetro alpha específico y se entrena con los datos de entrenamiento. Tras el entrenamiento, se realizan predicciones sobre el conjunto de prueba y se calcula el error cuadrático medio (MSE) como métrica de rendimiento.
Luego, se utilizan las funciones de registro de MLflow para capturar los aspectos clave del experimento. El parámetro alpha se registra con mlflow.log_param y el mse calculado se registra como métrica usando mlflow.log_metric. El modelo entrenado se guarda como artefacto con mlflow.sklearn.log_model, lo que facilita su recuperación o despliegue posterior. Para la reproducibilidad, el código también registra un parámetro data_version, que documenta el origen o la versión del conjunto de datos utilizado para el entrenamiento.
Advertencia: siempre registrar metadatos relevantes como la versión de los datos, la semilla aleatoria y la información del entorno. Sin estos datos, reproducir resultados o depurar problemas se vuelve mucho más difícil.
¡Gracias por tus comentarios!