評価データセット
生成AIアプリを体系的に評価するための厳選されたテストデータ。入力、オプションのグラウンド トゥルース (期待値)、およびメタデータが含まれます。
評価データを提供する2つの方法
評価データは、次の 2 つの方法で MLflow 評価ハーネスに提供できます。
1. MLflow 評価データセット (推奨)
Unity Catalog に保存された専用のデータセットには、次のものが含まれています。
- バージョニング : データセットの経時的な変化の追跡
- リネージ : データセットレコードをその入力にリンクし (ソース トレース) し、その使用状況を追跡します (評価実行とアプリのバージョン)
- コラボレーション : チーム間でデータセットを共有する
- 統合 :MLflow UIとAPIsによるシームレスなワークフロー
- ガバナンス : Unity Catalog のセキュリティとアクセス制御
- トレース変換 :UIやSDKを使用して、本番運用トレースを評価データセットレコードに簡単に変換できます
- 視覚化 : MLflow UI で直接データセットの内容を検査および編集します
使用する場合 :本番運用 評価ワークフロー、回帰テスト、データセット管理機能が必要な場合
2. 任意のデータセット(クイックプロトタイピング)
次のような既存のデータ構造を使用します。
- 辞書一覧
- Pandas DataFrame
- Spark DataFrame
使用する場合 : Quick エクスペリメント、プロトタイピング、またはこれらの形式の評価データが既にある場合。
評価データセット スキーマ
評価データセットは、 MLflowの評価データセットの抽象化を使用するか、データを直接 mlflow.genai.evaluate()
に渡すかにかかわらず、一貫した構造に従います。
コアフィールド
次のフィールドは、評価データセットの抽象化と、データを直接渡す場合の両方で使用されます。
列 | データ型 | 説明 | 必須 |
---|---|---|---|
|
| アプリの入力 (ユーザーの質問、コンテキストなど) は、JSON 形式で選択可能な | Yes |
|
| グラウンド トゥルース ラベルは、JSON シリアル化可能な | オプション |
expectations
予約済みキー
expectations
には、事前構築済みの LLM スコアラーによって使用されるいくつかの予約済みキー ( guidelines
、 expected_facts
、および expected_response
があります。
フィールド | 使用者 | 説明 |
---|---|---|
|
| 表示すべき事実のリスト |
|
| 正確または類似の期待出力 |
|
| 従うべき自然言語のルール |
|
| 取得する必要があるドキュメント |
追加フィールド
次のフィールドは、Evaluation データセット 抽象化によってリネージとバージョン履歴を追跡するために使用されます。
列 | データ型 | 説明 | 必須 |
---|---|---|---|
| string | レコードの一意の識別子。 | 指定しない場合は自動的に設定されます。 |
| timestamp | レコードが作成された時刻。 | 挿入時や更新時に自動的に設定されます。 |
| string | レコードを作成したユーザー。 | 挿入時や更新時に自動的に設定されます。 |
| timestamp | レコードが最後に更新された時刻。 | 挿入時や更新時に自動的に設定されます。 |
| string | レコードを最後に更新したユーザー。 | 挿入時や更新時に自動的に設定されます。 |
| struct | データセットレコードのソース(以下を参照)。 | オプション |
| dict[str, 任意] | データセット レコードのキーと値のタグ。 | オプション |
ソースフィールド
source
フィールドは、データセット レコードの取得元を追跡します。各レコードは、次の 1 つの ソースタイプのみを持つことができます。
1. Human ソース - Record created manually by a person
{
"source": {
"human": {
"user_name": "jane.doe@company.com"
}
}
}
user_name
(str):レコードを作成したユーザー
2. ドキュメントソース - ドキュメントから合成されたレコード
{
"source": {
"document": {
"doc_uri": "s3://bucket/docs/product-manual.pdf",
"content": "The first 500 chars of the document..." # Optional
}
}
}
doc_uri
(str): ソースドキュメントへの URI/パスcontent
(str、オプション):ドキュメントからの抜粋または完全なコンテンツ
3. Trace ソース - 本番運用トレースから作成されたレコード
{
"source": {
"trace": {
"trace_id": "tr-abc123def456"
}
}
}
trace_id
(str): ソーストレースの一意の識別子
MLflow 評価データセット UI
MLflow 評価データセット SDK リファレンス
評価データセット SDK は、生成AI アプリの評価用のデータセットを作成、管理、使用するためのプログラムによるアクセスを提供します。
例を実行するための前提条件
-
MLflow と必要なパッケージをインストールする
Bashpip install --upgrade "mlflow[databricks]>=3.1.0" "databricks-connect>=16.1"
-
MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。
-
CREATE TABLE
Unity Catalog スキーマのアクセス許可
これは、評価データセットを作成するために必要です。Databricks 試用版アカウントを使用している場合は、Unity Catalog スキーマ workspace.default
に対する CREATE TABLE 権限があります。
create_dataset()
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"]
)
パラメーター:
uc_table_name
(str): データセットの Unity Catalog テーブル名experiment_id
(str または list、オプション): データセットに関連付けるエクスペリメント ID
戻り値: EvaluationDataset
object
get_dataset()
既存の評価データセットを 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}")
パラメーター:
uc_table_name
(str): データセットの Unity Catalog テーブル名
戻り値: EvaluationDataset
object
delete_dataset()
Unity Catalog から評価データセットを削除します。
このメソッドを呼び出すと、データセットが完全に削除されます。
import mlflow.genai.datasets
# Delete a dataset
mlflow.genai.datasets.delete_dataset(
uc_table_name="catalog.schema.evaluation_dataset"
)
パラメーター:
uc_table_name
(str): 削除するデータセットの Unity Catalog テーブル名
収益: 何一つ
EvaluationDataset
クラス
EvaluationDataset
クラスは、評価データセットと対話し、評価データセットを変更するためのメソッドを提供します。
プロパティ
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()
データセット内のレコードを追加または更新します。データセット レコードを直接渡すか、MLflow trace_idsの一覧を渡すか、 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)
パラメーター:
records
(リスト[dict]、PD。DataFrame、または PySpark.sql。DataFrame): マージするレコード
収益: 更新された EvaluationDataset
オブジェクト
to_df()
データセットを Pandas DataFrame に変換して、ローカル分析を行います。
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()}")
戻り値: pd.データフレーム
一般的なパターン
本番運用 traces からデータセットを作成
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)
既存のデータセットを更新する
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)