Databricks の外部にデプロイされたアプリを監視する
ベータ版
この機能は ベータ版です。
このページでは、Agent Frameworkの外部にデプロイされた生成AI アプリのモニタリングの設定方法について説明します Mosaic AI 。 結果スキーマ、結果の表示、UI の使用、アラートの追加、モニターの管理など、モニタリングの使用に関する一般的な情報については、「AI アプリのモニター生成」を参照してください。
Lake House Monitoring for 生成AI は、 Mosaic AI Agent Evaluation AI Judgeを使用して、ボリューム、レイテンシー、エラー、コストなどの運用メトリクスと、正確性やガイドラインの遵守などの品質メトリクスを追跡するのに役立ちます。
モニタリングの仕組み:
モニタリング UI は、次のとおりです。
必要条件
- モニタリングを有効にして構成するには、databricks-agents SDKを使用する必要があります。
%pip install databricks-agents>=0.18.1 mlflow>=2.21.2
dbutils.library.restartPython()
本番運用アプリケーションに databricks-agents
がインストールされている必要はありません。 本番運用アプリケーションをインストールするだけで、mlflow
MLflow Tracingインストゥルメンテーションが可能になります。
モニタリングの設定
AI アプリが Databricks の外部にデプロイされている場合、または Databricks アプリを使用している場合は、Databricks ノートブック内の create_external_monitor
メソッドを使用してモニターをセットアップします。
モニターは MLflow エクスペリメント内に作成されます。 モニタリング UI は、エクスペリメント MLflow にタブとして表示されます。 ログトレースへのアクセスは、 MLflow エクスペリメントのACLによって制御されます。
次に、MLFlow のトレースと mlflow.tracing.set_destination を使用してデプロイされたコードをインストルメント化します以下に説明するように。Agent Framework を使用してデプロイされたアプリについては、「 生成AI アプリケーション用のエージェントをデプロイする」を参照してください。
以下の手順は、Databricks ノートブックで作業していることを前提としています。ローカル開発環境 (IDE など) からモニターを作成するには、代わりにこの Python スクリプト をダウンロードして使用します。
このノートブックには、このページの残りの部分に示されている手順が含まれています。
外部モニターのサンプルノートブックを作成する
ステップ 1: MLflow エクスペリメントを作成する
既存のエクスペリメントを使用するか、新しいエクスペリメントを作成できます。 新しいエクスペリメントを作成するには、以下の手順に従ってください。
import mlflow
mlflow_experiment_path = "/Users/your-user-name@company.com/my_monitor_name"
mlflow.set_experiment(experiment_name=mlflow_experiment_path)
# Get the experiment ID to use in the next step
experiment_id = mlflow.tracking.fluent._get_experiment_id()
ステップ 2: 外部モニターを作成する
デフォルトでは、エクスペリメントを明示的に指定せずにDatabricksノートブックからcreate_external_monitor
を実行すると、ノートブックのMLflowエクスペリメントにモニターが作成されます。
create_external_monitor
次の入力を受け取ります。
catalog_name: str
- デルタアーティファクトを書き込むカタログの名前。schema_name: str
- デルタアーティファクトを書き込むスキーマの名前。このスキーマは、上記のカタログに含まれている必要があります。[Optional] experiment_id
: 本番運用トレースが格納されている MLflowexperiment_id
。 これまたはexperiment_name
のいずれかを定義する必要があります。指定しない場合、モニターは、このコマンドが実行されたノートブックのエクスペリメントを使用します。[Optional] experiment_name
: 本番運用トレースが格納されている MLflowexperiment_name
。 これまたはexperiment_id
のいずれかを定義する必要があります。指定しない場合、モニターは、このコマンドが実行されたノートブックのエクスペリメントを使用します。assessments_config: AssessmentsSuiteConfig | dict
- モニターによる評価コンピュートの設定。 次のパラメーターがサポートされています。[Optional] sample: float
- コンピュート評価への要求の割合 (0 から 1 の間)。 デフォルトを 1.0 (コンピュート assessments for all traffic) に設定します。[Optional] paused: str
-PAUSED
またはUNPAUSED
.[Optional] assessments: list[BuiltinJudge | GuidelinesJudge]
組み込みジャッジまたはガイドラインジャッジのいずれかである評価のリスト。
BuiltinJudge
次の引数を取ります。
type: str
モニタリングでサポートされた組み込み審査員の1人:「安全性」、「接地性」、「relevance_to_query」、「chunk_relevance」。 組み込みジャッジの詳細については、「 組み込みジャッジ」を参照してください。
GuidelinesJudge
次の引数を取ります。
guidelines: dict[str, list[str]]
要求/応答をアサートするために使用されるガイドライン名とプレーンテキストのガイドラインを含む辞書。ガイドラインの詳細については、「 ガイドラインの遵守」を参照してください。
詳細については、 Python SDK のドキュメントを参照してください。
例えば:
from databricks.agents.monitoring import create_external_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge
import mlflow
external_monitor = create_external_monitor(
catalog_name='my_catalog',
schema_name='my_schema',
# experiment_id=..., # Replace this line with your MLflow experiment ID. By default, create_external_monitor uses the notebook's MLflow experiment.
assessments_config=AssessmentsSuiteConfig(
sample=1.0,
assessments=[
# Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
BuiltinJudge(name='safety'), # or {'name': 'safety'}
BuiltinJudge(name='groundedness'), # or {'name': 'groundedness'}
BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
# Create custom judges with the guidelines judge.
GuidelinesJudge(guidelines={
"pii": ["The response must not contain personal information."],
"english": ["The response must be in English"]
}),
]
)
# AssessmentsSuiteConfig can also be simple objects:
# assessments_config={
# "sample": 1.0,
# "assessments": [
# {'name': 'safety'},
# {'name': 'groundedness'},
# {'name': 'relevance_to_query'},
# {'name': 'chunk_relevance'},
# {
# 'name': 'guideline_adherence',
# 'guidelines': {
# 'pii': ['The response must not contain personal information.'],
# 'english': ['The response must be in English']
# }
# },
# ]
# }
)
print("experiment_id=", external_monitor.experiment_id)
セル出力にモニタリング UI へのリンクが表示されます。 評価結果はこの UI で表示でき、 monitoring_table
に保存されます。評価された行を表示するには、次のコマンドを実行します。
display(spark.table("cat.schema.monitor_table"))
ステップ 3: MLFlow トレースを使用して Gen AI アプリをインストルメント化する
デプロイされたエージェントに次のパッケージをインストールして開始します。
%pip install "mlflow>=2.21.2"
トークンは、モニターが構成されている MLflow エクスペリメントに対する EDIT アクセス権を持つサービスプリンシパルまたはユーザー用である必要があります。
生成 AI アプリで、以下を追加します。
-
DATABRICKS_HOST
環境変数とDATABRICKS_TOKEN
環境変数を設定します。DATABRICKS_HOST
はワークスペースの URL です (例:https://workspace-url.databricks.com
DATABRICKS_TOKEN
は PAT トークンです。 次の手順に従います。- サービスプリンシパルの PAT トークンを使用する場合は、ノートブックの上部で構成した MLflow エクスペリメントにサービスプリンシパル EDIT 書き込みを必ず付与してください。 これがないと、 MLflow Tracing トレースをログに記録できません。
-
mlflow.tracing.set_destinationをクリックして、トレース先を設定します。
-
MLFlow 自動トレースまたは MLFlow fluent APIs でアプリをトレースできます。MLFlow は、LangChain、Bedrock、DSPy、OpenAI など、多くの一般的なフレームワーク の自動 ログ をサポートしています。
-
MLFlow がトレースを Databricks に記録できるようにするための Databricks 認証トークン。
# Environment variables:
DATABRICKS_TOKEN="..."
DATABRICKS_HOST="..."
import mlflow
from mlflow.tracing.destination import Databricks
# Setup the destination.
mlflow_experiment_id = "..." # This is the experiment_id that is configured in step 2.
mlflow.tracing.set_destination(Databricks(experiment_id=mlflow_experiment_id))
# Your AI app code, instrumented with mlflow.
# MLFlow supports autologging for a variety of
## Option 1: MLFlow autologging
import mlflow
mlflow.langchain.autolog()
# Enable other optional logging
# mlflow.langchain.autolog(log_models=True, log_input_examples=True)
# Your LangChain model code here
# ...
# ...
# Option 2: MLflow Fluent APIs:
# Initialize OpenAI client
# This example uses the databricks-sdk's convenience method to get an OpenAI client
# In your app, you can use any OpenAI client (or other SDKs)
w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()
# These traces will automatically be sent to Databricks.
@mlflow.trace(span_type='AGENT')
def openai_agent(user_input: str):
return openai_client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=[
{
"role": "system",
"content": "You are a helpful assistant that always responds in CAPS!",
},
{"role": "user", "content": user_input},
],
)
# Call the app to generate a Trace
openai_agent("What is GenAI observability?")
ステップ4.モニタリング UI にアクセスして、ログに記録されたトレースを表示します
ステップ 2 で設定した MLflow エクスペリメントに移動します。[モニタリング] タブをクリックし、左上の [ログ] をクリックして、ステップ 3 のログトレースを表示します。
実行とスケジューリングの監視
モニターを作成すると、過去 30 日間のエンドポイントへのリクエストのサンプルを評価するジョブが開始されます。この初期評価は、リクエストの量とサンプリングレートによっては、完了するまでに数分かかる場合があります。
初期評価後、モニターは 15 分ごとに自動的に更新され、新しい要求が評価されます。エンドポイントに対して要求が行われてから、モニターによって評価されるまでには遅延があります。
モニターは Databricks Workflowsによって支えられています。 モニターの更新を手動でトリガーするには、 [<endpoint_name>] Agent Monitoring Job
という名前のワークフローを見つけて、[ 今すぐ実行 ] をクリックします。
制限
以下は、 Databricksの外部にデプロイされたGenAIアプリのレイクハウスモニタリングの制限事項です。