Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Registrazione degli Esperimenti con MLflow | Sezione
Practice
Projects
Quizzes & Challenges
Quiz
Challenges
/
Fondamenti di MLOps

bookRegistrazione degli Esperimenti con MLflow

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
import 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}")
copy

Per comprendere come funziona la registrazione degli esperimenti nella pratica, è possibile seguire questa spiegazione passo-passo del codice fornito. Innanzitutto, il codice carica un dataset di esempio utilizzando load_diabetes di scikit-learn, quindi lo suddivide in set di addestramento e di test. L'esperimento viene nominato tramite mlflow.set_experiment, che seleziona un esperimento esistente o ne crea uno nuovo se necessario.

La parte principale del flusso di lavoro inizia con mlflow.start_run(), che inizializza una nuova esecuzione e garantisce che tutti i log successivi siano raggruppati insieme. All'interno di questa esecuzione, viene definito un modello di regressione Ridge con uno specifico parametro alpha e addestrato sui dati di training. Dopo l'addestramento, vengono effettuate le predizioni sul set di test e viene calcolato l'errore quadratico medio (MSE) come metrica di performance.

Le funzioni di logging di MLflow vengono poi utilizzate per registrare gli aspetti chiave dell'esperimento. Il parametro alpha viene registrato con mlflow.log_param, mentre il valore calcolato di mse viene salvato come metrica tramite mlflow.log_metric. Il modello addestrato viene salvato come artefatto con mlflow.sklearn.log_model, facilitando il recupero o il deployment successivo. Per garantire la riproducibilità, il codice registra anche un parametro data_version, che documenta l'origine o la versione del dataset utilizzato per l'addestramento.

Note
Attenzione

Attenzione: registrare sempre metadati rilevanti come la versione dei dati, il seed casuale e le informazioni sull'ambiente. In assenza di questi, riprodurre i risultati o risolvere problemi diventa molto più difficile.

question mark

Quali delle seguenti affermazioni descrivono accuratamente i passaggi del flusso di lavoro di logging degli esperimenti MLflow come illustrato nell'analisi del codice?

Select all correct answers

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookRegistrazione degli Esperimenti con MLflow

Scorri per mostrare il menu

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
import 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}")
copy

Per comprendere come funziona la registrazione degli esperimenti nella pratica, è possibile seguire questa spiegazione passo-passo del codice fornito. Innanzitutto, il codice carica un dataset di esempio utilizzando load_diabetes di scikit-learn, quindi lo suddivide in set di addestramento e di test. L'esperimento viene nominato tramite mlflow.set_experiment, che seleziona un esperimento esistente o ne crea uno nuovo se necessario.

La parte principale del flusso di lavoro inizia con mlflow.start_run(), che inizializza una nuova esecuzione e garantisce che tutti i log successivi siano raggruppati insieme. All'interno di questa esecuzione, viene definito un modello di regressione Ridge con uno specifico parametro alpha e addestrato sui dati di training. Dopo l'addestramento, vengono effettuate le predizioni sul set di test e viene calcolato l'errore quadratico medio (MSE) come metrica di performance.

Le funzioni di logging di MLflow vengono poi utilizzate per registrare gli aspetti chiave dell'esperimento. Il parametro alpha viene registrato con mlflow.log_param, mentre il valore calcolato di mse viene salvato come metrica tramite mlflow.log_metric. Il modello addestrato viene salvato come artefatto con mlflow.sklearn.log_model, facilitando il recupero o il deployment successivo. Per garantire la riproducibilità, il codice registra anche un parametro data_version, che documenta l'origine o la versione del dataset utilizzato per l'addestramento.

Note
Attenzione

Attenzione: registrare sempre metadati rilevanti come la versione dei dati, il seed casuale e le informazioni sull'ambiente. In assenza di questi, riprodurre i risultati o risolvere problemi diventa molto più difficile.

question mark

Quali delle seguenti affermazioni descrivono accuratamente i passaggi del flusso di lavoro di logging degli esperimenti MLflow come illustrato nell'analisi del codice?

Select all correct answers

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 5
some-alt