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

生成AIアプリの監視

備考

ベータ版

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

このページでは、生成AI向けレイクハウスモニタリングの各種機能をどのように活用するかを説明します。 モニタリングを有効にするには、 モニタリングの概要にリンクされている手順に従います。

注記

ベータ版製品を使用できない場合は、機能が制限されたダッシュボードベースのバージョンが パブリック プレビューで利用できます。Mosaic AI Agent Evaluationを使用するエージェントに関しては、本番運用トラフィックでエージェントの品質をモニタリングする方法、推論テーブルが有効になっている基盤モデルに送信される本番運用トラフィックをモニタリングするには、本番運用トラフィックの外部モデルの品質をモニタリングする方法を参照してください。

モニタリング結果の表示

モニタリング結果を表示する前に、以下のものが必要です。

  • 稼働中の SQLウェアハウスへのアクセス。 無い場合は、 作成します。
  • モニタリングの設定の手順に従って作成したモニター。

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

  1. 機械学習 セクションの下のサイドバーにある エクスペリメント をクリックします。

  2. モニターに関連付けられている MLflow エクスペリメントをクリックします。

    関連するエクスペリメントの名前を見つける方法がわからない場合は、「 モニターメタデータの取得 」の手順に従って、エクスペリメント ID を取得し、ノートブックでエクスペリメント名を検索する mlflow.get_experiment(experiment_id=$YOUR_EXPERIMENT_ID) を実行してください。

  3. モニタリング タブをクリックします。

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

  5. ページが更新され、モニタリング結果が表示されます。 結果の読み込みには数分かかる場合があります。

モニタリング UI を使用する

モニタリング UI のすべてのデータは、 チャート タブと ログ タブの両方で、時間枠に制限されます。 ウィンドウを変更するには、 時間範囲 ドロップダウンを使用します。

グラフタブ

チャートタブは、リクエスト、メトリクス、レイテンシー、エラー の 4 つのセクションで構成されています。

モニタリング結果をまとめたページのスクリーンショット。

リクエスト セクションには、時間の経過に伴うトレース量が表示されます。

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

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

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

レイテンシー セクションには、MLflow で報告された待機時間から取得された、時間の経過に伴うトレース実行の待機時間が表示されます。

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

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

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

ログタブ

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

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

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

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

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

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

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

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

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

アラートを追加する

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

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

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

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

例えば:

Python
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%
}
)

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

Python
from databricks.agents.evals.monitors import update_monitor

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

モニターのメタデータを取得する

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

Python
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 Catalog モニタリングの評価結果をまとめた表です。

モニターの削除

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

Python
from databricks.agents.evals.monitors import delete_monitor

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

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

エージェント監視におけるカスタムメトリクス

モニタリングでカスタムメトリクスを有効にするこのアプローチは、将来変更される可能性があります。 ご不明な点がございましたら、Databricks の担当者にお問い合わせください。

次の手順に従って、エージェントモニターでカスタムメトリクスの評価を有効にします。

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

  2. このファイルに、メトリクス関数を含む CUSTOM_METRICS というリストを定義します。同じカスタムメトリクスは、 mlflow.evaluateを使用するとオンラインとオフラインで機能します。 カスタムメトリクスを参照してください。

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

    Python
    # 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 でホストされている場合:

Python
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)