Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Protokollierung von Experimenten mit MLflow | Abschnitt
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
MLOps-Grundlagen

bookProtokollierung von Experimenten mit 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

Um zu verstehen, wie das Protokollieren von Experimenten in der Praxis funktioniert, folgt hier eine schrittweise Erläuterung des bereitgestellten Codes. Zunächst lädt der Code einen Beispieldatensatz mit load_diabetes aus scikit-learn und teilt diesen anschließend in Trainings- und Testdaten auf. Das Experiment wird mit mlflow.set_experiment benannt, wodurch entweder ein bestehendes Experiment ausgewählt oder bei Bedarf ein neues erstellt wird.

Der Hauptteil des Workflows beginnt mit mlflow.start_run(), das einen neuen Lauf initialisiert und sicherstellt, dass alle nachfolgenden Protokolle zusammengefasst werden. Innerhalb dieses Laufs wird ein Ridge-Regressionsmodell mit einem bestimmten alpha-Parameter definiert und auf den Trainingsdaten trainiert. Nach dem Training werden Vorhersagen für den Testdatensatz erstellt und der mittlere quadratische Fehler (MSE) als Leistungskennzahl berechnet.

Die Protokollierungsfunktionen von MLflow werden anschließend verwendet, um die wichtigsten Aspekte des Experiments zu erfassen. Der alpha-Parameter wird mit mlflow.log_param protokolliert und der berechnete mse als Metrik mit mlflow.log_metric gespeichert. Das trainierte Modell selbst wird als Artefakt mit mlflow.sklearn.log_model abgelegt, was eine spätere Wiederverwendung oder Bereitstellung erleichtert. Zur Reproduzierbarkeit wird außerdem ein data_version-Parameter protokolliert, der die Herkunft oder Version des für das Training verwendeten Datensatzes dokumentiert.

Note
Warnung

Warnung: Immer relevante Metadaten wie Datenversion, Zufallszahlengenerator und Umgebungsinformationen protokollieren. Ohne diese wird die Reproduzierbarkeit von Ergebnissen oder das Debuggen von Problemen erheblich erschwert.

question mark

Welche der folgenden Aussagen beschreiben die Schritte im MLflow-Experimentprotokollierungs-Workflow, wie sie in der Code-Aufschlüsselung demonstriert werden, korrekt?

Select all correct answers

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookProtokollierung von Experimenten mit MLflow

Swipe um das Menü anzuzeigen

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

Um zu verstehen, wie das Protokollieren von Experimenten in der Praxis funktioniert, folgt hier eine schrittweise Erläuterung des bereitgestellten Codes. Zunächst lädt der Code einen Beispieldatensatz mit load_diabetes aus scikit-learn und teilt diesen anschließend in Trainings- und Testdaten auf. Das Experiment wird mit mlflow.set_experiment benannt, wodurch entweder ein bestehendes Experiment ausgewählt oder bei Bedarf ein neues erstellt wird.

Der Hauptteil des Workflows beginnt mit mlflow.start_run(), das einen neuen Lauf initialisiert und sicherstellt, dass alle nachfolgenden Protokolle zusammengefasst werden. Innerhalb dieses Laufs wird ein Ridge-Regressionsmodell mit einem bestimmten alpha-Parameter definiert und auf den Trainingsdaten trainiert. Nach dem Training werden Vorhersagen für den Testdatensatz erstellt und der mittlere quadratische Fehler (MSE) als Leistungskennzahl berechnet.

Die Protokollierungsfunktionen von MLflow werden anschließend verwendet, um die wichtigsten Aspekte des Experiments zu erfassen. Der alpha-Parameter wird mit mlflow.log_param protokolliert und der berechnete mse als Metrik mit mlflow.log_metric gespeichert. Das trainierte Modell selbst wird als Artefakt mit mlflow.sklearn.log_model abgelegt, was eine spätere Wiederverwendung oder Bereitstellung erleichtert. Zur Reproduzierbarkeit wird außerdem ein data_version-Parameter protokolliert, der die Herkunft oder Version des für das Training verwendeten Datensatzes dokumentiert.

Note
Warnung

Warnung: Immer relevante Metadaten wie Datenversion, Zufallszahlengenerator und Umgebungsinformationen protokollieren. Ohne diese wird die Reproduzierbarkeit von Ergebnissen oder das Debuggen von Problemen erheblich erschwert.

question mark

Welche der folgenden Aussagen beschreiben die Schritte im MLflow-Experimentprotokollierungs-Workflow, wie sie in der Code-Aufschlüsselung demonstriert werden, korrekt?

Select all correct answers

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5
some-alt