Ler experimentos do MLflow

A mlflow-experiment fonte de dados fornece uma API DataFrameReader do Spark para carregar dados de execução de experimento do MLflow em um DataFrame. Os usuários do Azure Databricks geralmente o utilizam para analisar os resultados das execuções de treinamento, comparar métricas entre experimentos e criar painéis com base no histórico de experimentos. Para obter mais informações, consulte Organizar execuções de treinamento com experimentos do MLflow.

Pré-requisitos

Ler dados de execução de experimento do MLflow requer o Databricks Runtime 6.0 ML e superior.

Usage

Os exemplos a seguir mostram como carregar e filtrar dados de experimento do MLflow usando a API de DataFrame do Spark.

Carregar dados do experimento 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 workspace, passe as IDs do experimento como uma cadeia de caracteres 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, resolva o nome para uma ID usando o cliente MLflow e, em seguida, passe a 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

Depois de carregar dados de experimento, use expressões de filtro DataFrame padrão 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 retornado pela mlflow-experiment fonte de dados é corrigido 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