Lire des expériences MLflow

La source de données mlflow-experiment fournit une API Spark DataFrameReader permettant de charger les données d’exécution d’expériences MLflow dans un DataFrame. Les utilisateurs d’Azure Databricks l’utilisent couramment pour analyser les résultats des exécutions d’entraînement, comparer les mesures d’une expérience à l’autre et créer des tableaux de bord à partir de l’historique des expériences. Pour plus d’informations, consultez Organiser les exécutions d’entraînement à l’aide des expériences MLflow.

Prérequis

La lecture des données d’exécution d’expérience MLflow nécessite Databricks Runtime 6.0 ML et versions ultérieures.

Utilisation

Les exemples suivants montrent comment charger et filtrer des données d’expérience MLflow à l’aide de l’API DataFrame Spark.

Charger des données à partir de l’expérience du notebook

Pour charger des données à partir de l’expérience du notebook en cours, appelez load() sans aucun argument.

Python

df = spark.read.format("mlflow-experiment").load()
display(df)

Scala

val df = spark.read.format("mlflow-experiment").load()
display(df)

Charger des données à l’aide d’identifiants d’expérience

Pour charger des données à partir d’une ou plusieurs expériences d’espace de travail, transmettez les ID d’expérience sous forme de chaîne séparée par des virgules.load()

Python

df = spark.read.format("mlflow-experiment").load("3270527066281272")
display(df)

Scala

val df = spark.read.format("mlflow-experiment").load("3270527066281272,953590262154175")
display(df)

Charger des données à l’aide d’un nom d’expérience

Pour charger des données par nom d’expérience, résolvez le nom en ID à l’aide du client MLflow, puis transmettez l’ID à load().

Python

expId = mlflow.get_experiment_by_name("/Shared/diabetes_experiment/").experiment_id
df = spark.read.format("mlflow-experiment").load(expId)
display(df)

Scala

val expId = mlflow.getExperimentByName("/Shared/diabetes_experiment/").get.getExperimentId
val df = spark.read.format("mlflow-experiment").load(expId)
display(df)

Filtrer les données en fonction des métriques et des paramètres

Après avoir chargé des données d’expérience, utilisez des expressions de filtre DataFrame standard pour interroger des métriques et des paramètres.

Python

df = spark.read.format("mlflow-experiment").load("3270527066281272")
filtered_df = df.filter("metrics.loss < 0.01 AND params.learning_rate > '0.001'")
display(filtered_df)

Scala

val df = spark.read.format("mlflow-experiment").load("3270527066281272")
val filtered_df = df.filter("metrics.loss < 1.85 AND params.num_epochs > '30'")
display(filtered_df)

Schéma de sortie

Le schéma retourné par la source de données mlflow-experiment est fixe, quelle que soit l’expérience chargée :

root
|-- run_id: string
|-- experiment_id: string
|-- metrics: map
|    |-- key: string
|    |-- value: double
|-- params: map
|    |-- key: string
|    |-- value: string
|-- tags: map
|    |-- key: string
|    |-- value: string
|-- start_time: timestamp
|-- end_time: timestamp
|-- status: string
|-- artifact_uri: string

Ressources additionnelles