メインコンテンツまでスキップ

MLflow評価データセットの構築

GenAI アプリケーションを体系的にテストして改善するには、評価データセットを使用します。評価データセットは、ラベル付き(予想される出力が既知)またはラベルなし(真の回答なし)のいずれかのサンプル入力の選択されたセットです。評価データセットは、次の方法でアプリのパフォーマンスを向上させるのに役立ちます。

  • 本番運用での既知の問題例に対する修正をテストすることで、品質を向上させます。
  • 回帰を防止します。常に正しく動作する例の「ゴールデン セット」を作成します。
  • アプリのバージョンを比較します。同じデータに対して、さまざまなプロンプト、モデル、またはアプリ ロジックをテストします。
  • 特定の機能をターゲットにします。安全性、ドメイン知識、またはエッジケースに特化したデータセットを構築します。
  • LLMOps の一環として、さまざまな環境にわたってアプリを検証します。

MLflow評価データセットはUnity Catalogに保存され、統合されたバージョニング、リネージ、共有、ガバナンスが提供されます。

要件

評価データセットを作成するには、Unity Catalog スキーマに対するCREATE TABLE権限が必要です。

評価データセットの構築方法

評価データセットを作成するには、次の 3 つの方法があります。

このページでは、MLflow 評価データセットを作成する方法について説明します。すぐに開始するために、Pandas DataFrames や辞書のリストなど、他の種類のデータセットを使用することもできます。例については、 GenAI の MLflow 評価例を参照してください。

ステップ 1: データセットを作成する

最初のステップは、MLflow 管理の評価データセットを作成することです。MLflow が管理する評価データセットは、時間の経過に伴う変化を追跡し、個々の評価結果へのリンクを維持します。

次の記録に従って、UI を使用して評価データセットを作成します

UI を使用した評価データセットの作成

ステップ 2: データセットにレコードを追加する

アプローチ 1: 既存のトレースから作成する

関連する評価データセットを構築する最も効果的な方法の 1 つは、MLflow Tracing によってキャプチャされたアプリケーションの過去のインタラクションから直接例をキュレーションすることです。トレースからデータセットを作成するには、 MLflow モニタリング UI または SDKを使用します。

以下の録画に従って、UIを使用して既存の本番運用トレースをデータセットに追加します

trace

アプローチ 2: ドメイン エキスパート ラベルから作成する

MLflow ラベル付けセッションでキャプチャされたドメイン エキスパートからのフィードバックを活用して、評価データセットをグラウンド トゥルース ラベルで強化します。これらの手順を実行する前に、 ドメインの専門家フィードバックの収集 ガイドに従って、ラベル付けセッションを作成してください。

Python
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: ゼロからビルドするか、既存のものをインポートする

既存のデータセットをインポートしたり、例を最初からキュレーションしたりできます。データは 、評価データセットのスキーマと一致する (または一致するように変換される) 必要があります。

Python
# 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: 既存のデータセットを更新する

Python
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 の担当者にお問い合わせください。

次のステップ

リファレンスガイド