Pular para o conteúdo principal

Conjunto de dados de avaliação

Dados de teste selecionados para avaliação sistemática do aplicativo GenAI. Inclui entradas, informações básicas opcionais (expectativas) e metadados.

Duas maneiras de fornecer dados de avaliação

O senhor pode fornecer dados de avaliação para o chicote de avaliação do MLflow de duas maneiras:

1. MLflow Conjunto de dados de avaliação (recomendado)

Conjunto de dados criado para fins específicos armazenado em Unity Catalog com:

  • Controle de versão : Acompanhe as alterações do site dataset ao longo do tempo
  • Linhagem : Vincule os registros do dataset às suas entradas (rastreamentos de origem) e acompanhe seu uso (execução de avaliação e versões de aplicativos)
  • Colaboração : Compartilhe o conjunto de dados entre as equipes
  • Integração : Fluxo de trabalho contínuo com MLflow UI e APIs
  • Governança : Segurança do Unity Catalog e controles de acesso
  • Conversão de traços : Converta facilmente os traços de produção em registros de avaliação dataset usando a interface do usuário ou SDK
  • Visualização : Inspecione e edite o conteúdo do site dataset diretamente na UI do site MLflow

Quando usar : Fluxo de trabalho de avaliação da produção, testes de regressão e quando o senhor precisar de recursos de gerenciamento do dataset.

2. Conjunto de dados arbitrário (prototipagem rápida)

Use estruturas de dados existentes, como:

  • Lista de dicionários
  • Pandas DataFrame
  • DataFrame do Spark

Quando usar : experimentos rápidos, prototipagem ou quando você já tem dados de avaliação nesses formatos.

Esquema do conjunto de dados de avaliação

O conjunto de dados de avaliação segue uma estrutura consistente, quer o senhor use a abstração do conjunto de dados de avaliação do MLflow ou passe os dados diretamente para o mlflow.genai.evaluate().

Campos principais

Os campos a seguir são usados na abstração do conjunto de dados de avaliação ou se o senhor passar os dados diretamente.

Coluna

Tipo de dados

Descrição

Obrigatório

inputs

dict[Any, Any]

Entradas para o seu aplicativo (por exemplo, pergunta do usuário, contexto), armazenadas como um JSON-seralizável dict.

Sim

expectations

dict[Str, Any]

O rótulo da verdade fundamental, armazenado como um JSON-seralizable dict.

Opcional

expectations chave reservada

expectations tem várias chaves reservadas que são usadas pelos avaliadores LLM pré-construídos: guidelines, expected_facts e expected_response.

campo

Usado por

Descrição

expected_facts

correctness juiz

Lista de fatos que devem aparecer

expected_response

is_correct marcador

Saída esperada exata ou similar

guidelines

meets_guidelines marcador

Regras de linguagem natural a serem seguidas

expected_retrieved_context

document_recall marcador

Documentos que devem ser recuperados

Campos adicionais

Os campos a seguir são usados pela abstração do conjunto de dados de avaliação para rastrear a linhagem e o histórico de versões.

Coluna

Tipo de dados

Descrição

Obrigatório

dataset_record_id

string

O identificador exclusivo do registro.

Definido automaticamente se não for fornecido.

create_time

carimbo de data/hora

A hora em que o registro foi criado.

Definido automaticamente ao inserir ou atualizar.

created_by

string

O usuário que criou o registro.

Definido automaticamente ao inserir ou atualizar.

last_update_time

carimbo de data/hora

A hora em que o registro foi atualizado pela última vez.

Definido automaticamente ao inserir ou atualizar.

last_updated_by

string

O usuário que atualizou o registro pela última vez.

Definido automaticamente ao inserir ou atualizar.

source

struct

A fonte do registro dataset (consulte abaixo).

Opcional

tags

dict [str, Qualquer]

tags de valor-chave para o registro dataset.

Opcional

Campo de origem

O campo source rastreia de onde veio um registro dataset. Cada registro pode ter somente um tipo de fonte:

1. Fonte humana - Registro criado manualmente por uma pessoa

Python
{
"source": {
"human": {
"user_name": "jane.doe@company.com"
}
}
}
  • user_name (str): O usuário que criou o registro

2. Fonte do documento - Registro sintetizado a partir de um documento

Python
{
"source": {
"document": {
"doc_uri": "s3://bucket/docs/product-manual.pdf",
"content": "The first 500 chars of the document..." # Optional
}
}
}
  • doc_uri (str): URI/caminho para o documento de origem
  • content (str, opcional): trecho ou conteúdo completo do documento

3. Fonte de rastreamento - Registro criado a partir de um rastreamento de produção

Python
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
  • trace_id (str): O identificador exclusivo do rastreamento de origem

MLflow Conjunto de dados de avaliação UI

eval dataset ui

MLflow Conjunto de dados de avaliação reference SDK

O conjunto de dados de avaliação SDK fornece acesso programático para criar, gerenciar e usar o conjunto de dados para avaliação do aplicativo GenAI.

Pré-requisitos para executar os exemplos

  1. Instale o site MLflow e o pacote necessário

    Bash
    pip install --upgrade "mlflow[databricks]>=3.1.0" "databricks-connect>=16.1"
  2. Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.

  3. CREATE TABLE permissões em um esquema do Unity Catalog

create_dataset()

Criar uma nova avaliação dataset em Unity Catalog.

Python
import mlflow.genai.datasets

# Create a dataset with auto-inferred experiment
dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.evaluation_dataset"
)

# Create a dataset associated with specific experiment(s)
dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.evaluation_dataset",
experiment_id="1213947645336731"
)

# Associate with multiple experiments
dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.evaluation_dataset",
experiment_id=["1213947645336731", "3231394764336731"]
)

Parâmetros:

  • uc_table_name (str): Unity Catalog nome da tabela para o dataset
  • experiment_id (str ou lista, opcional): ID(s) de experimento a ser(em) associado(s) ao dataset

Retorna: objeto EvaluationDataset

get_dataset()

Carregar uma avaliação existente dataset de Unity Catalog.

Python
import mlflow.genai.datasets

# Load existing dataset
dataset = mlflow.genai.datasets.get_dataset(
uc_table_name="catalog.schema.evaluation_dataset"
)

# Access dataset properties
print(f"Dataset ID: {dataset.dataset_id}")
print(f"Created by: {dataset.created_by}")
print(f"Last updated: {dataset.last_update_time}")

Parâmetros:

  • uc_table_name (str): Unity Catalog nome da tabela do dataset

Retorna: objeto EvaluationDataset

delete_dataset()

Excluir uma avaliação dataset de Unity Catalog.

perigo

A chamada desse método excluirá permanentemente o site dataset.

Python
import mlflow.genai.datasets

# Delete a dataset
mlflow.genai.datasets.delete_dataset(
uc_table_name="catalog.schema.evaluation_dataset"
)

Parâmetros:

  • uc_table_name (str): Unity Catalog nome da tabela dataset a ser excluída

Devoluções: Nenhuma

ClasseEvaluationDataset

A classe EvaluationDataset fornece métodos para interagir e modificar o conjunto de dados de avaliação.

Propriedades

Python
import mlflow.genai.datasets

dataset = mlflow.genai.datasets.get_dataset("catalog.schema.eval_dataset")

# Access dataset metadata
dataset_id = dataset.dataset_id # Unique identifier
name = dataset.name # UC table name
schema = dataset.schema # Dataset schema
profile = dataset.profile # Summary statistics
source = dataset.source # Source information
source_type = dataset.source_type # Source type (e.g., "databricks-uc-table")
digest = dataset.digest # Hash of the dataset

# Access audit information
created_by = dataset.created_by # Creator user
create_time = dataset.create_time # Creation timestamp
last_updated_by = dataset.last_updated_by # Last updater
last_update_time = dataset.last_update_time # Last update timestamp

merge_records()

Adicione ou atualize registros no site dataset. Passe diretamente os registros de dataset, passe uma lista de MLflow trace_ids ou os resultados de mlflow.search_traces().

Python
import mlflow.genai.datasets
import pandas as pd

dataset = mlflow.genai.datasets.get_dataset("catalog.schema.eval_dataset")

# Merge from list of dictionaries
records = [
{
"inputs": {"question": "What is MLflow?"},
"expectations": {
"expected_facts": ["open-source platform", "ML lifecycle"],
"guidelines": "Response should be concise and technical"
}
},
{
"inputs": {"question": "How to track experiments?"},
"expectations": {
"expected_response": "Use mlflow.start_run() to track experiments..."
}
}
]
dataset = dataset.merge_records(records)

# Merge from Pandas DataFrame
df = pd.DataFrame(records)
dataset = dataset.merge_records(df)

# Merge from Spark DataFrame
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark_df = spark.createDataFrame(records)
dataset = dataset.merge_records(spark_df)

# Create from existing traces
traces = mlflow.search_traces()
dataset.merge_records(traces)

Parâmetros:

  • records (list[dict], pd.DataFrame ou PySpark.sql.DataFrame): Registros para merge

Retorna: objeto EvaluationDataset atualizado

to_df()

Converta o site dataset em um Pandas DataFrame para análise local.

Python
import mlflow.genai.datasets

dataset = mlflow.genai.datasets.get_dataset("catalog.schema.eval_dataset")

# Convert to DataFrame
df = dataset.to_df()

# Analyze the data
print(f"Total records: {len(df)}")
print(f"Columns: {df.columns.tolist()}")

Retorna: pd.Dataframe

Padrões comuns

Criar conjunto de dados a partir de traços de produção

Python
import mlflow
import mlflow.genai.datasets
import pandas as pd

# Search for production traces
traces = mlflow.search_traces(
experiment_names=["production"],
filter_string="attributes.feedback_score > 0.8",
max_results=100
)

# Create dataset from traces
dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.production_golden_set"
)
dataset = dataset.merge_records(records)

Atualizar o conjunto de dados existente

Python
import mlflow.genai.datasets
import pandas as pd

# Load existing dataset
dataset = mlflow.genai.datasets.get_dataset("catalog.schema.eval_dataset")

# Add new test cases
new_cases = [
{
"inputs": {"question": "What are MLflow models?"},
"expectations": {
"expected_facts": ["model packaging", "deployment", "registry"],
"min_response_length": 100
}
}
]

# Merge new cases
dataset = dataset.merge_records(new_cases)

Próximas etapas

Guia de instruções

Conceitos