次の方法で共有


生成 AI アプリの監視 (MLflow 2)

重要

この機能はベータ版です。

重要

このページでは、MLflow 2 でのエージェント評価バージョン 0.22 の使用方法について説明します。 Databricks では、エージェント評価 >1.0と統合された MLflow 3 を使用することをお勧めします。 MLflow 3 では、エージェント評価 API が mlflow パッケージの一部になりました。

このトピックの詳細については、「 運用品質の監視 (スコアラーを自動的に実行する)」を参照してください。

このページでは、GenAI の Lakehouse Monitoring のさまざまな機能を使用する方法について説明します。 監視を有効にするには、監視の 概要にリンクされている手順に従います。

監視結果の表示

監視結果を表示する前に、次のものが必要です。

  • 実行中の SQL ウェアハウスへのアクセス。 それ以外の場合は、1 つ作成します
  • 「監視の設定」の手順に従って作成した モニター

これらの前提条件が満たされたら、次の手順に従って、モニターによって生成された結果を要約したページを表示できます。

  1. [AI/ML] セクションの下のサイドバーで [実験] をクリックします。

  2. モニターに関連付けられている MLflow 実験をクリックします。

    関連する実験の名前を見つける方法がわからない場合は、「 監視メタデータの取得 」の手順に従って実験 ID を取得し、ノートブックで mlflow.get_experiment(experiment_id=$YOUR_EXPERIMENT_ID) 実行して実験名を見つけます。

  3. [ 監視 ] タブをクリックします。

  4. SQL Warehouse の選択 ドロップダウンを使用して、SQL ウェアハウスを選択します。

  5. ページが更新され、監視結果が表示されます。 結果の読み込みに数分かかることがあります。

監視 UI を使用する

監視 UI のすべてのデータは、[ グラフ ] タブと [ ログ ] タブの両方で、時間枠に制限されます。 ウィンドウを変更するには、[ 時間範囲 ] ドロップダウンを使用します。

[グラフ] タブ

[グラフ] タブは、要求、メトリック、待機時間、エラーの 4 つのセクションで構成されます。

監視結果を要約したページのスクリーンショット。

[要求] セクションには、時間の経過に伴うトレース ボリュームが表示されます。

[要求] セクションのスクリーンショット。

[メトリック] セクションには、LLM ジャッジによって評価された応答の数が表示されます。 緑は成功した応答を示し、赤は失敗した応答を示します。 このセクションに示すメトリックは、 モニターの作成時 に定義されたメトリックと、全体的な合格/失敗品質スコアに対応している必要があります。

[メトリック] セクションのスクリーンショット。

[待ち時間] セクションには、MLflow の報告された待機時間から取得された、トレース実行の待機時間が時間の経過と同時に表示されます。

[待機時間] セクションのスクリーンショット。

[ エラー ] セクションには、時間の経過に伴うモデル エラーが表示されます。 エラーが発生しなかった場合は、次のように "データなし" インジケーターが表示されます。

[エラー] セクションのスクリーンショット。

ログタブ

[ログ] タブのスクリーンショット。

[ ログ ] タブには、選択したモデルに送信された要求と、LLM 評価の結果 (ある場合) が一覧表示されます。 選択した期間から最大 10,000 件の要求が UI に表示されます。 要求数がこのしきい値を超えた場合、要求はモニター構成で指定されたサンプル レートとは異なるレートでサンプリングされます。

送信された要求に含まれるテキストに基づいて要求ログをフィルター処理するには、検索ボックスを使用します。 [ フィルター ] ドロップダウン メニューを使用して、関連する評価の結果によってログをフィルター処理することもできます。

ログ フィルターのスクリーンショット。

要求にカーソルを合わせ、チェックボックスをクリックして要求を選択します。 その後、[ トレースのエクスポート ] をクリックして、これらの要求を評価データセットに追加できます。 データセットは、モニターと同じ MLflow 実験を使用してログに記録されている必要があります。

[トレースのエクスポート] ダイアログのスクリーンショット。

リクエストをクリックしてその詳細を表示します。 モーダルには、評価結果、入力、応答、要求に応答するために取得されたドキュメント (存在する場合) が表示されます。 タイミング情報など、要求の詳細については、モーダルの右上にある [詳細なトレース ビューを表示 ] をクリックします。

リクエスト詳細モーダルのスクリーンショット。

要求の詳細なトレース ビューのスクリーンショット。

アラートを追加する

Databricks SQL アラートを使用して、評価されたトレース テーブルが期待値と一致しない場合 (有害とマークされた要求の割合がしきい値を超えた場合など) にユーザーに通知します。

モニターを更新または一時停止する

モニターの構成を更新するには、次の入力を受け取る update_monitorを呼び出します。

  • endpoint_name: str - 監視対象のエンドポイントの名前
  • monitoring_config: dict - モニターの構成。 サポートされているパラメーターについては、「 監視の設定 」を参照してください。

例えば次が挙げられます。

from databricks.agents.evals.monitors import update_monitor

monitor = update_monitor(
    endpoint_name = "model-serving-endpoint-name",
    monitoring_config = {
        "sample": 0.1,  # Change sampling rate to 10%
    }
)

同様に、モニターを一時停止するには:

from databricks.agents.evals.monitors import update_monitor

monitor = update_monitor(
    endpoint_name = "model-serving-endpoint-name",
    monitoring_config = {
        "paused": True,
    }
)

監視メタデータを取得する

get_monitor関数を使用して、デプロイされたエージェントのモニターの現在の構成を取得します。

from databricks.agents.evals.monitors import get_monitor

get_monitor('model-serving-endpoint-name')

この関数は、次の属性を含む Monitor オブジェクトを返します。

  • endpoint_name - 監視対象のエンドポイントの名前。
  • monitoring_config - モニターの構成。 構成パラメーターの 監視の設定 を参照してください。
  • experiment_id - 監視結果が表示される MLflow 実験。 監視結果の表示を参照してください。
  • evaluated_traces_table - 監視評価結果を含む Unity カタログ テーブル。

モニターを削除する

エンドポイントからモニターを削除するには、 delete_monitorを呼び出します。

from databricks.agents.evals.monitors import delete_monitor

monitor = delete_monitor(
    endpoint_name = "model-serving-endpoint-name",
)

モニターによって生成された評価されたトレース テーブルは、 delete_monitorの呼び出しによって削除されません。

エージェント監視のカスタム メトリック

監視でカスタム メトリックを有効にするこの方法は、今後変更される可能性があります。 ご質問がある場合は、Databricks の担当者にお問い合わせください。

エージェント モニターでカスタム メトリックに対する評価を有効にするには、次の手順に従います。

  1. ワークスペースに Python (.py) ファイルを作成し、カスタム メトリックを定義します。 これは、Databricks ノートブックではなく Python ファイルである必要があります。 Databricks ワークスペースで Python ファイルを作成する手順については、「ワークスペース ファイルの 基本的な使用方法 」を参照してください。

  2. このファイルで、メトリック関数を含む CUSTOM_METRICS という名前のリストを定義します。 mlflow.evaluateを使用すると、同じカスタム メトリックがオンラインとオフラインで動作します。 カスタム メトリック (MLflow 2) を参照してください。

    ファイルの例を次に示します。

    # custom_metrics.py
    
    import mlflow
    import pandas as pd
    from databricks.agents.evals import metric
    
    @metric
    def response_mentions_llm(response):
      return "LLM" in response
    
    @metric
    def request_too_long(request):
      return len(request) > 1000
    
    
    CUSTOM_METRICS = [response_mentions_llm, request_too_long]
    
  3. [ ワークフロー ] タブに移動します。

    • エージェントが Databricks でホストされている場合は、 [<your agent name>] Agent Monitoring Jobというタイトルのワークフローを見つけます。
    • エージェントが Databricks の外部でホストされている場合は、monitor_<monitoring table name>というタイトルのワークフローを見つけて、置き換えてください。 テーブル名に含まれる文字には「-」を使用します。
  4. ワークフローを編集してジョブ パラメーターを追加します。 「ジョブ パラメーターを構成する」を参照してください。

  5. CUSTOM_METRICS_NOTEBOOK_PATHという名前のパラメーターを作成します。 このパラメーターの値は、カスタム メトリック Python ファイルへの完全なパスである必要があります。

カスタム メトリックは、モニターの次の実行時に評価されます。

カスタム メトリックをモニターに含める前に反復処理するには、トレースのサブセットに対して mlflow.evaluate を実行します。

エージェントが Databricks でホストされている場合:

import mlflow
import pandas as pd
from databricks.agents.evals import metric

@metric
def response_mentions_llm(response):
  return "LLM" in response

df = spark.table("<your-monitoring-table>")
pdf = df.toPandas()[['request','response','trace']]

import mlflow
result = mlflow.evaluate(
  data = pdf,
  model_type="databricks-agent",
  extra_metrics=[response_mentions_llm]
)
display(result)