このガイドでは、GenAI アプリケーションの品質を体系的にテストして改善するために 、評価データセット を作成するさまざまな方法について説明します。 アプリで反復処理を行う際に、一貫性のある反復可能な評価を可能にするデータセットを構築する複数の方法について説明します。
評価データセットは、次の場合に役立ちます。
- 既知の問題を修正する: 運用環境から繰り返しテストする修正プログラムに問題のある例を追加する
- 回帰を防ぐ: 常に正しく機能する必要がある例の "ゴールデン セット" を作成する
- バージョンの比較: 同じデータに対してさまざまなプロンプト、モデル、またはアプリ ロジックをテストする
- ターゲット固有の機能: 安全性、ドメインの知識、またはエッジ ケース用の特殊なデータセットを構築する
1 つの適切にキュレーションされたデータセットから開始し、テストのニーズの拡大に合わせて複数のデータセットに拡張します。
学習内容:
- 実稼働 トレース からデータセットを作成して、実際のシナリオをテストする
- 特定の機能を対象としたテストのためにデータセットをゼロから構築する
- CSV、JSON、またはその他の形式から既存の評価データをインポートする
- 合成テスト データを生成してカバレッジを拡大する
- ドメインエキスパートからのフィードバックからグラウンド・トゥルース・ラベルを追加する
注
このガイドでは、バージョン履歴と系列追跡を提供する MLflow で管理される評価データセットを使用する方法について説明します。 迅速なプロトタイプ作成のために、MLflow で管理されるデータセットの同じスキーマに従う Python ディクショナリまたは Pandas/Spark データフレームとして評価データセットを提供することもできます。 評価データセット スキーマの詳細については、 評価データセットのリファレンス ページを参照してください。
[前提条件]
MLflow と必要なパッケージをインストールする
pip install --upgrade "mlflow[databricks]>=3.1.0"
環境のセットアップのクイックスタートに従って、MLflow 実験を作成します。
評価データセットを作成するための
CREATE TABLE
アクセス許可を持つ Unity カタログ スキーマへのアクセス。
データセットを構築する方法
MLflow には、ニーズに合わせて調整された評価データセットを構築するための柔軟な方法がいくつか用意されています。
- 既存のトレースからのデータセットの作成: MLflow トレースで既にキャプチャされているリッチ データを活用します。
- データセットのインポートまたはデータセットの最初からの構築: 特定の入力例と (必要に応じて) 予想される出力を手動で定義します。
- 合成データを使用した評価データセットのシード処理: 多様な入力を自動的に生成します。
現在のデータ ソースと評価の目標に最も適した方法または方法の組み合わせを選択します。
手順 1: データセットを作成する
選択した方法を無視して、まず、MLflow で管理される評価データセットを作成する必要があります。 この方法を使用すると、時間の経過に伴うデータセットへの変更を追跡し、個々の評価結果をこのデータセットにリンクできます。
UI を使用する
UI を使用して評価データセットを作成するには、次の記録に従います
SDK を使用する
トレースを検索してデータセットに追加することで、プログラムによって評価データセットを作成します。
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(
uc_table_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 を使用して、トレースからデータセットを作成できます。
UI を使用する
UI を使用して既存の運用トレースをデータセットに追加するには、次の記録に従います
SDK を使用する
プログラムによってトレースを検索し、データセットに追加します。
でフィルターを使用する方法の詳細については、search_traces()
のリファレンス ページを参照してください。
import mlflow
# 2. Search for traces
traces = mlflow.search_traces(
filter_string="attributes.status = 'OK'",
order_by=["attributes.timestamp_ms DESC"]
max_results=10
)
print(f"Found {len(traces)} successful traces")
# 3. Add the traces to the evaluation 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.merge_records(evaluation_examples)
方法 4: 合成データを使用してシード処理する
合成データを生成すると、多様な入力をすばやく作成し、エッジ ケースをカバーすることで、テスト作業を拡張できます。 詳細については、 合成評価データセットのリファレンスを 参照してください。
次のステップ
これらの推奨されるアクションとチュートリアルを使用して、体験を続けます。
アプリを評価する - 新しく作成したデータセットを評価に使用する
カスタム スコアラーを作成 する - スコアラーを構築して、地上の真実に照らして評価する
リファレンス ガイド
このガイドで説明されている概念と機能の詳細なドキュメントを確認します。
- 評価データセット - データセットの構造と機能の詳細
-
Evaluation Harness -
mlflow.genai.evaluate()
でデータセットを使用する方法について説明します - トレース データ モデル - 評価データセットのソースとしてのトレースを理解する