Aller au contenu principal

Suivre les agents déployés en dehors de Databricks

MLflow Tracing offre une observabilité complète pour les agents d'IA en production déployés en dehors de Databricks en capturant les détails d'exécution et en les envoyant à votre workspace Databricks, où vous pouvez les consulter dans l'interface utilisateur de MLflow.

Traçage MLflow de production pour le déploiement externe

Cette page traite du déploiement d’agents en dehors de Databricks avec le traçage activé. Si votre agent est déployé sur Databricks, consultez Tracer les agents déployés sur Databricks.

Stocker les traces dans Unity Catalog

Les traces de votre agent hébergé en externe sont envoyées à votre Workspace Databricks et Log dans une Expérimentation MLflow, qui est le point d'entrée pour les consulter dans l'interface utilisateur MLflow. Ce qui diffère, c'est l' emplacement de stockage qui prend en charge l'Experimentation. Vous avez deux choix :

  • **Stockage Unity Catalog (recommandé pour la production) :** Liez l’expérimentation à un emplacement de trace Unity Catalog afin que les traces se retrouvent dans les tables Delta de Unity Catalog. Cela nécessite une certaine configuration avant que vous ne déployiez. En retour, vous bénéficiez d’une conservation à long terme de grands volumes de traces sans limite par expérimentation. Les traces sont régies par les autorisations de catalogue, de schéma et de table de Unity Catalog, et vous pouvez les query directement avec SQL via un warehouse Databricks SQL.
  • Stockage basé sur l’expérimentation (default) : Si vous ne configurez pas d’emplacement de trace, les traces sont stockées en tant qu’artefacts d’expérimentation. Ceci est pratique pour le développement, mais il existe une limite de trace par expérimentation et ce n’est pas optimisé pour l’interrogation de grands volumes de traces de production.

Étant donné que le stockage Unity Catalog s’exécute ici en dehors de Databricks, créez l’expérimentation sauvegardée par Unity Catalog à partir d’un notebook Databricks, puis référencez-la par nom ou par ID dans les variables d’environnement ci-dessous. Consultez Stocker des traces OpenTelemetry dans Unity Catalog pour connaître l’ensemble de la configuration, des prérequis et des autorisations.

Prérequis

Installez les packages requis. Le tableau suivant décrit vos options :

Package

Cas d'usage recommandé

Avantages

mlflow-tracing SDK Python ou SDK TypeScript

Déploiements en production

Dépendances minimales pour des déploiements légers et rapides

Performances optimisées pour le traçage à haut volume

Axé sur le traçage côté client pour le monitoring de la production

mlflow[databricks]

Développement et expérimentation

Ensemble complet de fonctionnalités d'expérimentation MLflow (IU, LLM-as-a-judge, outils de développement et plus encore)

Inclut tous les outils et utilitaires de développement.

Package

Cas d'usage recommandé

Avantages

mlflow-tracing SDK Python ou SDK TypeScript

Déploiements en production

Dépendances minimales pour des déploiements légers et rapides

Performances optimisées pour le traçage à haut volume

Axé sur le traçage côté client pour le monitoring de la production

mlflow[databricks]

Développement et expérimentation

Ensemble complet de fonctionnalités d'expérimentation MLflow (IU, LLM-as-a-judge, outils de développement et plus encore)

Inclut tous les outils et utilitaires de développement.

Python
## Install mlflow-tracing for production deployment tracing
%pip install --upgrade "mlflow-tracing==3.1.0"

## Install mlflow for experimentation and development
%pip install --upgrade "mlflow[databricks]==3.1.0"

Configuration de base du traçage

Configurez le déploiement de votre application pour qu'il se connecte à votre workspace Databricks afin que Databricks puisse collecter les traces.

Configurez les variables d'environnement suivantes :

Bash
# Required: Set the Databricks workspace host and authentication token
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-databricks-token"

# Required: Set MLflow Tracking URI to "databricks" to log to Databricks
export MLFLOW_TRACKING_URI=databricks

# Required: Configure the experiment name for organizing traces (must be a workspace path)
export MLFLOW_EXPERIMENT_NAME="/Shared/production-genai-app"

Exemples de déploiement

Une fois les variables d'environnement définies, transmettez-les à votre application. Cliquez sur les onglets pour voir comment transmettre les détails de connexion à différents frameworks.

Pour les déploiements Docker, transmettez les variables d'environnement via la configuration du conteneur :

Dockerfile
# Dockerfile
FROM python:3.11-slim

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

# Copy application code
COPY . /app
WORKDIR /app

# Set default environment variables (can be overridden at runtime)
ENV DATABRICKS_HOST=""
ENV DATABRICKS_TOKEN=""
ENV MLFLOW_TRACKING_URI=databricks
ENV MLFLOW_EXPERIMENT_NAME="/Shared/production-genai-app"

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

Exécutez le conteneur avec des variables d'environnement :

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

Vérifiez la collecte de traces.

Après le déploiement de votre application, vérifiez que les traces sont correctement collectées :

Python
import mlflow
from mlflow.client import MlflowClient
import os

# Ensure MLflow is configured for Databricks
mlflow.set_tracking_uri("databricks")

# Check connection to MLflow server
client = MlflowClient()
try:
# List recent experiments to verify connectivity
experiments = client.search_experiments()
print(f"Connected to MLflow. Found {len(experiments)} experiments.")

# Check if traces are being logged
traces = mlflow.search_traces(
experiment_names=[os.getenv("MLFLOW_EXPERIMENT_NAME", "/Shared/production-genai-app")],
max_results=5
)
print(f"Found {len(traces)} recent traces.")
except Exception as e:
print(f"Error connecting to MLflow: {e}")
print(f"Check your authentication and connectivity")

Ressources supplémentaires