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 |
---|---|---|---|
|
| Entradas para o seu aplicativo (por exemplo, pergunta do usuário, contexto), armazenadas como um JSON-seralizável | Sim |
|
| O rótulo da verdade fundamental, armazenado como um JSON-seralizable | 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 |
---|---|---|
|
| Lista de fatos que devem aparecer |
|
| Saída esperada exata ou similar |
|
| Regras de linguagem natural a serem seguidas |
|
| 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 |
---|---|---|---|
| string | O identificador exclusivo do registro. | Definido automaticamente se não for fornecido. |
| carimbo de data/hora | A hora em que o registro foi criado. | Definido automaticamente ao inserir ou atualizar. |
| string | O usuário que criou o registro. | Definido automaticamente ao inserir ou atualizar. |
| carimbo de data/hora | A hora em que o registro foi atualizado pela última vez. | Definido automaticamente ao inserir ou atualizar. |
| string | O usuário que atualizou o registro pela última vez. | Definido automaticamente ao inserir ou atualizar. |
| struct | A fonte do registro dataset (consulte abaixo). | Opcional |
| 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
{
"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
{
"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 origemcontent
(str, opcional): trecho ou conteúdo completo do documento
3. Fonte de rastreamento - Registro criado a partir de um rastreamento de produção
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
trace_id
(str): O identificador exclusivo do rastreamento de origem
MLflow Conjunto de dados de avaliação 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
-
Instale o site MLflow e o pacote necessário
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" "databricks-connect>=16.1"
-
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
-
CREATE TABLE
permissões em um esquema do Unity Catalog
Isso é necessário para criar uma avaliação dataset. Se estiver usando uma avaliaçãoDatabricks account , o senhor tem permissões CREATE TABLE no esquema Unity Catalog workspace.default
.
create_dataset()
Criar uma nova avaliação dataset em Unity Catalog.
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 datasetexperiment_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.
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.
A chamada desse método excluirá permanentemente o site dataset.
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
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()
.
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.
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
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
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
- Criar conjunto de dados de avaliação - Criação passo a passo do site dataset
- Avalie seu aplicativo - Use o conjunto de dados para avaliação
Conceitos
- Evaluation Harness - Como o conjunto de dados é usado
- Evaluation execution - Resultados da avaliação dataset
- Scorers - métricas aplicadas ao conjunto de dados