共用方式為


建置 MLflow 評估數據集

本指南說明建立 評估數據集 的各種方式,以便有系統地測試及改善 GenAI 應用程式的品質。 您將瞭解多種方法來建立資料集,以在不斷改進應用程式的過程中啟用一致且可重複進行的評估。

評估資料集可協助您:

  • 修正已知問題:從生產環境新增有問題的範例以重複測試修正
  • 防止回歸:建立一組必須一律正常運作的「黃金集」範例
  • 比較版本:針對相同的數據測試不同的提示、模型或應用程式邏輯
  • 目標特定功能:針對安全、領域知識或邊緣案例建置特製化數據集

從單一精心策劃的數據集開始,然後在測試需求成長時擴充至多個數據集。

您將學到的內容:

  • 從生產 追蹤 建立數據集,以測試真實世界的案例
  • 從頭開始建構資料集,以針對性測試特定功能
  • 從 CSV、JSON 或其他格式匯入現有的評估數據
  • 產生綜合測試數據以擴充涵蓋範圍
  • 從領域專家意見反應新增地面真相標籤

備註

本指南說明如何使用 MLflow 管理的評估數據集,提供版本歷程記錄和歷程追蹤。 為了快速建立原型,您也可以提供評估數據集做為 Python 字典或 Pandas/Spark 數據框架,其遵循 MLflow 受控數據集的相同架構。 若要深入瞭解評估數據集架構,請參閱 評估數據集參考 頁面。

先決條件

  1. 安裝 MLflow 和必要套件

    pip install --upgrade "mlflow[databricks]>=3.1.0"
    
  2. 按照 設定環境的快速入門指南,來建立 MLflow 實驗。

  3. 具有 CREATE TABLE 許可權以建立評估數據集的 Unity Catalog 架構存取權。

建置數據集的方法

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:從現有的追蹤建立

建置相關評估數據集的最有效方式之一是直接從您的應用程式歷程記錄中擷取範例,這些歷程記錄是由 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:使用綜合數據植入

產生綜合數據可以藉由快速建立各種輸入並涵蓋邊緣案例,來擴展測試工作。 若要深入瞭解,請瀏覽 合成評估數據集 參考資料。

後續步驟

使用這些建議的動作和教學課程繼續您的旅程。

參考指南

查看本指南中提到的概念和功能的詳細文件。