Ler experimentos MLflow
A mlflow-experiment fonte de dados fornece uma API DataFrameReader do Spark para carregar dados de execução de experimentos do MLflow em um DataFrame. Usuários do Databricks comumente o utilizam para analisar resultados de 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
A leitura de dados de execução de experimentos do MLflow requer Databricks Runtime 6,0 ML e acima.
Uso
Os exemplos a seguir mostram como carregar e filtrar dados de experimento do MLflow usando a API do Spark DataFrame.
Carregar dados do experimento do Notebook
Para carregar dados do experimento do Notebook atual, chame load() sem argumentos.
- Python
- Scala
df = spark.read.format("mlflow-experiment").load()
display(df)
val df = spark.read.format("mlflow-experiment").load()
display(df)
Carregar uso de dados IDs de experimentos
Para carregar dados de um ou mais experimentos de workspace, passe os IDs de experimento como uma string separada por vírgulas para 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)
Carregar dados usando um nome de experimento
Para carregar dados por nome de experimento, resolva o nome para um ID usando o cliente MLflow e, em seguida, passe o ID para 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)
Filtrar dados com base em métricas e parâmetros
Após carregar os dados do experimento, use expressões de filtro padrão de DataFrame para consultar métricas e parâmetros.
- 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)
Esquema de saída
O esquema retornado pela fonte de dados mlflow-experiment é 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
- Ler tabelas compartilhadas do OpenSharing usando Apache Spark DataFrames: se seus dados forem compartilhados via Delta Sharing em vez de armazenados no MLflow, use o formato
deltasharingpara ler tabelas compartilhadas com a mesma API DataFrameReader.