Lire les expérimentations MLflow
La source de données mlflow-experiment fournit une API Spark DataFrameReader pour charger les données d'exécution d'Experimentation MLflow dans un DataFrame. Les utilisateurs de Databricks l’utilisent couramment pour analyser les résultats d’exécution d’entraînement, comparer les métriques entre les expérimentations et créer des tableaux de bord sur l’historique des expérimentations. Pour plus d'informations, consultez Organiser les exécutions d'entraînement avec les expérimentations MLflow.
Prérequis
La lecture des données d'exécution d'Experimentation MLflow nécessite Databricks Runtime 6.0 ML et versions supérieures.
Utilisation
Les exemples suivants montrent comment charger et filtrer des données d'expérimentation MLflow à l'aide de l'API Spark DataFrame.
Charger les données de l'Experimentation du Notebook
Pour charger des données à partir de l'expérimentation du notebook actuel, appelez load() sans arguments.
- Python
- Scala
df = spark.read.format("mlflow-experiment").load()
display(df)
val df = spark.read.format("mlflow-experiment").load()
display(df)
Charger des données à l'aide d'ID d'Experimentation
Pour charger des données à partir d'une ou plusieurs expérimentations de workspace, transmettez les ID d'expérimentation sous forme de chaîne séparée par des virgules à load().
- Python
- Scala
df = spark.read.format("mlflow-experiment").load("3270527066281272")
display(df)
val df = spark.read.format("mlflow-experiment").load("3270527066281272,953590262154175")
display(df)
Charger des données à l'aide d'un nom d'Experimentation
Pour charger des données par nom d’expérience, résolvez le nom en un ID à l’aide du client MLflow, puis transmettez l’ID à load().
- Python
- Scala
expId = mlflow.get_experiment_by_name("/Shared/diabetes_experiment/").experiment_id
df = spark.read.format("mlflow-experiment").load(expId)
display(df)
val expId = mlflow.getExperimentByName("/Shared/diabetes_experiment/").get.getExperimentId
val df = spark.read.format("mlflow-experiment").load(expId)
display(df)
Filtrer des données selon les mesures et les paramètres
Après avoir chargé les données d'Experimentation, utilisez des expressions de filtre de DataFrame standard pour query les métriques et les parameters.
- Python
- Scala
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)
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 renvoyé par la source de données mlflow-experiment est fixe quelle que soit l'expérimentation 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 supplémentaires
- Lire les tables partagées OpenSharing à l'aide des DataFrames Apache Spark: Si vos données sont partagées via Delta Sharing plutôt que stockées dans MLflow, utilisez le format
deltasharingpour lire les tables partagées avec la même API DataFrameReader.