Ler experiências do MLflow

A fonte de dados mlflow-experiment fornece uma API Spark DataFrameReader para carregar dados de execuções de experiências do MLflow num DataFrame. Os utilizadores do Azure Databricks usam-no frequentemente para analisar resultados de treinos, comparar métricas entre experiências e construir dashboards sobre o histórico dos experimentos. Para mais informações, consulte Organizar execuções de treino com experiências do MLflow.

Pré-requisitos

A leitura de dados de execuções de experiências do MLflow requer o Databricks Runtime 6.0 ML ou superior.

Usage

Os exemplos seguintes mostram como carregar e filtrar dados de experiências MLflow usando a API Spark DataFrame.

Carregar dados da experiência do notebook

Para carregar dados do experimento do notebook atual, chame load() sem argumentos.

Python

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

Scala

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

Carregar dados usando IDs de experimento

Para carregar dados de um ou mais experimentos de espaço de trabalho, passe os IDs dos experimentos como uma cadeia separada por vírgulas para 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)

Carregar dados usando um nome de experimento

Para carregar dados pelo nome do experimento, resolve o nome para um ID usando o cliente MLflow, depois passa o ID para 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)

Filtrar dados com base em métricas e parâmetros

Após carregar os dados do experimento, utilize expressões padrão de filtro DataFrame para consultar entre métricas e parâmetros.

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)

Esquema de saída

O esquema devolvido pela mlflow-experiment fonte de dados é fixo independentemente do experimento carregado:

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

Recursos adicionais