MLflow評価データセットの構築
GenAI アプリケーションを体系的にテストして改善するには、評価データセットを使用します。評価データセットは、ラベル付き(予想される出力が既知)またはラベルなし(真の回答なし)のいずれかのサンプル入力の選択されたセットです。評価データセットは、次の方法でアプリのパフォーマンスを向上させるのに役立ちます。
- 本番運用での既知の問題例に対する修正をテストすることで、品質を向上させます。
- 回帰を防止します。常に正しく動作する例の「ゴールデン セット」を作成します。
- アプリのバージョンを比較します。同じデータに対して、さまざまなプロンプト、モデル、またはアプリ ロジックをテストします。
- 特定の機能をターゲットにします。安全性、ドメイン知識、またはエッジケースに特化したデータセットを構築します。
- LLMOps の一環として、さまざまな環境にわたってアプリを検証します。
MLflow評価データセットはUnity Catalogに保存され、統合されたバージョニング、リネージ、共有、ガバナンスが提供されます。
要件
評価データセットを作成するには、Unity Catalog スキーマに対するCREATE TABLE権限が必要です。
評価データセットの構築方法
評価データセットを作成するには、次の 3 つの方法があります。
- 既存のトレースからデータセットを作成する: GenAI アプリケーションからすでにトレースをキャプチャしている場合は、それらを使用して、実際のシナリオに基づいた評価データセットを作成できます。
- データセットをインポートするか、データセットを最初から構築する: 既存のデータセットを使用するか、評価データセットを最初から構築します。これは、迅速なプロトタイピングや特定の機能を対象としたテストに役立ちます。
- 合成データによる評価データセットのシード: Databricks はドキュメントから代表的な評価セットを自動的に生成できるため、テスト ケースを十分にカバーしてエージェントを迅速に評価できます。
このページでは、MLflow 評価データセットを作成する方法について説明します。すぐに開始するために、Pandas DataFrames や辞書のリストなど、他の種類のデータセットを使用することもできます。例については、 GenAI の MLflow 評価例を参照してください。
ステップ 1: データセットを作成する
最初のステップは、MLflow 管理の評価データセットを作成することです。MLflow が管理する評価データセットは、時間の経過に伴う変化を追跡し、個々の評価結果へのリンクを維持します。
- Using the UI
- Using the SDK
次の記録に従って、UI を使用して評価データセットを作成します

評価データセットをプログラムで作成するには、トレースを検索し、それらをデータセットに追加します。
import mlflow
import mlflow.genai.datasets
import time
from databricks.connect import DatabricksSession
# 0. If you are using a local development environment, connect to Serverless Spark which powers MLflow's evaluation dataset service
spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()
# 1. Create an evaluation dataset
# Replace with a Unity Catalog schema where you have CREATE TABLE permission
uc_schema = "workspace.default"
# This table will be created in the above UC schema
evaluation_dataset_table_name = "email_generation_eval"
eval_dataset = mlflow.genai.datasets.create_dataset(
    name=f"{uc_schema}.{evaluation_dataset_table_name}",
)
print(f"Created evaluation dataset: {uc_schema}.{evaluation_dataset_table_name}")
ステップ 2: データセットにレコードを追加する
アプローチ 1: 既存のトレースから作成する
関連する評価データセットを構築する最も効果的な方法の 1 つは、MLflow Tracing によってキャプチャされたアプリケーションの過去のインタラクションから直接例をキュレーションすることです。トレースからデータセットを作成するには、 MLflow モニタリング UI または SDKを使用します。
- Using the UI
- Using the SDK
以下の録画に従って、UIを使用して既存の本番運用トレースをデータセットに追加します

プログラムでトレースを検索し、データセットに追加します。search_traces()でフィルターを使用する方法の詳細については、クエリ トレースのリファレンス ページを参照してください。フィルターを使用すると、成功、失敗、本番運用での使用、またはその他のプロパティによってトレースを識別できます。
import mlflow
# 2. Search for traces
traces = mlflow.search_traces(
    filter_string="attributes.status = 'OK'",
    order_by=["attributes.timestamp_ms DESC"],
    tags.environment = 'production',
    max_results=10
)
print(f"Found {len(traces)} successful traces")
# 3. Add the traces to the evaluation dataset
eval_dataset = eval_dataset.merge_records(traces)
print(f"Added {len(traces)} records to evaluation dataset")
# Preview the dataset
df = eval_dataset.to_df()
print(f"\nDataset preview:")
print(f"Total records: {len(df)}")
print("\nSample record:")
sample = df.iloc[0]
print(f"Inputs: {sample['inputs']}")
アプローチ 2: ドメイン エキスパート ラベルから作成する
MLflow ラベル付けセッションでキャプチャされたドメイン エキスパートからのフィードバックを活用して、評価データセットをグラウンド トゥルース ラベルで強化します。これらの手順を実行する前に、 ドメインの専門家フィードバックの収集 ガイドに従って、ラベル付けセッションを作成してください。
import mlflow.genai.labeling as labeling
# Get a labeling sessions
all_sessions = labeling.get_labeling_sessions()
print(f"Found {len(all_sessions)} sessions")
for session in all_sessions:
    print(f"- {session.name} (ID: {session.labeling_session_id})")
    print(f"  Assigned users: {session.assigned_users}")
# Sync from the labeling session to the dataset
all_sessions[0].sync(dataset_name=f"{uc_schema}.{evaluation_dataset_table_name}")
アプローチ 3: ゼロからビルドするか、既存のものをインポートする
既存のデータセットをインポートしたり、例を最初からキュレーションしたりできます。データは 、評価データセットのスキーマと一致する (または一致するように変換される) 必要があります。
# Define comprehensive test cases
evaluation_examples = [
    {
        "inputs": {"question": "What is MLflow?"},
        "expected": {
            "expected_response": "MLflow is an open source platform for managing the end-to-end machine learning lifecycle.",
            "expected_facts": [
                "open source platform",
                "manages ML lifecycle",
                "experiment tracking",
                "model deployment"
            ]
        },
    },
]
eval_dataset = eval_dataset.merge_records(evaluation_examples)
アプローチ 4: 合成データを使用したシード
合成データを生成すると、多様な入力を迅速に作成し、エッジケースをカバーすることで、テストの取り組みを拡大できます。評価セットの合成を参照してください。
ステップ 3: 既存のデータセットを更新する
import mlflow.genai.datasets
import pandas as pd
# Load existing dataset
dataset = mlflow.genai.datasets.get_dataset(name="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)
制限事項
- 顧客管理キー (CMK) はサポートされていません。
- 評価データセットごとに最大 2,000 行。
- データセット レコードあたりの期待値は最大 20 件です。
ユースケースに合わせてこれらの制限を緩和する必要がある場合は、Databricks の担当者にお問い合わせください。
次のステップ
- アプリの評価 - 新しく作成したデータセットを評価に使用します
- カスタムスコアラーの作成 - グラウンドトゥルースに照らして評価するスコアラーを構築します
リファレンスガイド
- 評価データセット - データセット構造と能力へのディープダイブ
- 評価ハーネス- mlflow.genai.evaluate()データセットをどのように使用するかを学びます
- トレーシングデータモデル - 評価データセットのソースとしてのトレースを理解する
- スコアラー- 各スコアラーを適用して、評価データセットに対して新しいアプリを実行したときの出力の品質を評価します。