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

本番運用 トレース をアプリのバージョンにリンクする

アプリケーション バージョンの追跡ガイドでは、開発中に LoggedModel を使用してアプリケーション バージョンを追跡する方法を示しました。

LoggedModelを本番運用にデプロイする場合、モニタリングとデバッグのために、が生成するトレースを特定のバージョンにリンクする必要があります。このガイドでは、本番運用トレースにバージョン情報を含めるようにデプロイメントを設定する方法について説明します。

ヒント

Databricksモデルサービングにデプロイしますか? トレースリンクは自動的に設定されます。詳しくはDatabricksモデルサービングのトレースリンクへスキップしてください。

前提 条件

  1. Databricksモデルサービングの外部で 本番運用デプロイメントを行う場合は、mlflow-tracingパッケージをインストールします。

    Bash
    pip install --upgrade "mlflow-tracing>=3.1.0"

    このパッケージは、本番運用環境に特化して、以下の機能を提供しています。

    • 最小限の依存関係 により、より迅速で無駄のないデプロイを実現

    • 大容量トレーシングのための パフォーマンス最適化

注記

MLflow 3は本番運用のトレースに必要です。 MLflow 2.x は、パフォーマンスの制限と本番運用用の機能がないため、本番運用デプロイメントではサポートされていません。

  1. MLflow エクスペリメントを作成するには、環境のセットアップに関するクイックスタートに従ってください。

環境変数の設定

  1. バージョン タブに移動して、LoggedModel ID を取得します。CI/CD パイプラインでは、次に示すように、create_external_model() を使用して新しいLoggedModelを生成できます。を使用することをお勧めします。
Python
import mlflow
import subprocess

# Define your application and its version identifier
app_name = "customer_support_agent"

# Get current git commit hash for versioning
try:
git_commit = (
subprocess.check_output(["git", "rev-parse", "HEAD"])
.decode("ascii")
.strip()[:8]
)
version_identifier = f"git-{git_commit}"
except subprocess.CalledProcessError:
version_identifier = "local-dev" # Fallback if not in a git repo

logged_model_name = f"{app_name}-{version_identifier}"

# Create a new LoggedModel
model = mlflow.create_external_model(name=logged_model_name)
  1. LoggedModel ID を MLFLOW_ACTIVE_MODEL_ID 環境変数の本番運用環境設定に追加し、環境の設定クイックスタートの標準 MLflow トレース変数とともに追加します。
Bash
# Standard MLflow tracing configuration
export DATABRICKS_HOST="https://your-workspace.databricks.com"
export DATABRICKS_TOKEN="your-databricks-token"
export MLFLOW_TRACKING_URI=databricks
# Either use MLFLOW_EXPERIMENT_NAME or MLFLOW_EXPERIMENT_ID
export MLFLOW_EXPERIMENT_NAME="/Shared/production-genai-app"

# Add LoggedModel version tracking by specifying your LoggedModel ID
# Ensure this matches a LoggedModel in your MLFlow Experiment
export MLFLOW_ACTIVE_MODEL_ID="customer_support_agent-git-98207f02"

自動トレースリンク

important

MLFLOW_ACTIVE_MODEL_ID環境変数を設定すると、 すべてのトレースが自動的にそのLoggedModelにリンクされます 。トレースに手動でタグを付ける必要はありません - MLflow がこれを処理します。

アプリケーション・コードは、開発中とまったく同じです。

Python
import mlflow
from fastapi import FastAPI, Request

app = FastAPI()

@mlflow.trace
def process_message(message: str) -> str:
# Your actual application logic here
# This is just a placeholder
return f"Processed: {message}"

@app.post("/chat")
def handle_chat(request: Request, message: str):
# Your traces are automatically linked to the LoggedModel
# specified in MLFLOW_ACTIVE_MODEL_ID

# Your application logic here
response = process_message(message)
return {"response": response}

トレースにコンテキスト (ユーザー ID、セッション ID、カスタムメタデータなど) を追加するには、本番運用トレースガイドの 本番運用トレースへのコンテキストの追加 を参照してください。

デプロイメント例

Docker

Docker を使用してデプロイする場合は、必要なすべての環境変数をコンテナ構成に渡します。

Dockerfile
# Dockerfile
FROM python:3.9-slim

# Install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt

# Copy application code
COPY . /app
WORKDIR /app

# Declare required environment variables (no defaults)
ENV DATABRICKS_HOST
ENV DATABRICKS_TOKEN
ENV MLFLOW_TRACKING_URI
ENV MLFLOW_EXPERIMENT_NAME
ENV MLFLOW_ACTIVE_MODEL_ID

CMD ["python", "app.py"]

環境変数を使用してコンテナを実行します。

Bash
docker run -d \
-e DATABRICKS_HOST="https://your-workspace.databricks.com" \
-e DATABRICKS_TOKEN="your-databricks-token" \
-e MLFLOW_TRACKING_URI=databricks \
-e MLFLOW_EXPERIMENT_NAME="/Shared/production-genai-app" \
-e MLFLOW_ACTIVE_MODEL_ID="customer_support_agent-git-98207f02" \
-e APP_VERSION="1.0.0" \
your-app:latest

Kubernetes

Kubernetes デプロイメントの場合は、ConfigMaps と Secrets を使用して構成を管理します。

YAML
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mlflow-config
data:
DATABRICKS_HOST: 'https://your-workspace.databricks.com'
MLFLOW_TRACKING_URI: 'databricks'
MLFLOW_EXPERIMENT_NAME: '/Shared/production-genai-app'
MLFLOW_ACTIVE_MODEL_ID: 'customer_support_agent-git-98207f02'

---
# secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: databricks-secrets
type: Opaque
stringData:
DATABRICKS_TOKEN: 'your-databricks-token'

---
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: genai-app
spec:
replicas: 2
selector:
matchLabels:
app: genai-app
template:
metadata:
labels:
app: genai-app
spec:
containers:
- name: app
image: your-app:latest
ports:
- containerPort: 8000
envFrom:
- configMapRef:
name: mlflow-config
- secretRef:
name: databricks-secrets
env:
- name: APP_VERSION
value: '1.0.0'
resources:
requests:
memory: '256Mi'
cpu: '250m'
limits:
memory: '512Mi'
cpu: '500m'

バージョン固有のトレースのクエリ

デプロイしたら、MLflow トレース UI でトレースを表示したり、SDK でモデル バージョンごとにトレースをクエリしたりできます。

Python
import mlflow

# Get the experiment ID
experiment = client.get_experiment_by_name("/Shared/production-genai-app")

# Find all traces from a specific model version
traces = mlflow.search_traces(
experiment_ids=[experiment.experiment_id],
model_id="customer_support_agent-git-98207f02",
)

# View the results
print(f"Found {len(traces)} traces for this model version")

Databricks モデルサービングでのトレースリンク

Agent Frameworkを使用してDatabricksモデルサービングにLoggedModelをデプロイし、開発環境にMLflow 3をインストールすると、トレースリンクが自動的に設定されます

Databricks モデルサービングエンドポイントからのトレースを表示するには:

  1. 電話をかけたときにアクティブだった MLflow エクスペリメントに移動します agents.deploy()
  2. [トレース ] タブをクリックして、トレースを表示します
  3. すべてのトレースは、リクエストを提供する特定のモデルバージョンに自動的にリンクされます

唯一の要件は、アプリケーション コードで MLflow トレースを使用することです (自動ログ記録または @mlflow.traceを使用した手動インストルメンテーションを使用)。

次のステップ

モデルサービング以外のデプロイメントの認証、モニタリング、フィードバック収集など、完全な本番運用トレース設定 Databricks 、 トレースによる本番運用オブザーバビリティを参照してください。