Aller au contenu principal

FAQ sur le traçage

Q : Quel est le surcoût de latence introduit par le traçage ?

Les traces sont écrites de manière asynchrone pour minimiser l'impact sur les performances. Cependant, le traçage ajoute toujours une latence minimale, particulièrement lorsque la taille de la trace est importante. MLflow recommande de tester votre application pour comprendre les impacts sur la latence du traçage avant de la déployer en production.

Le tableau suivant fournit des estimations approximatives de l’impact sur la latence en fonction de la taille de la trace :

Taille de la trace par requête

Impact sur la latence de vitesse de réponse (ms)

~10 Ko

~ 1 ms

~ 1 Mo

50 à 100 ms

10 Mo

150 ms ~

Taille de la trace par requête

Impact sur la latence de vitesse de réponse (ms)

~10 Ko

~ 1 ms

~ 1 Mo

50 à 100 ms

10 Mo

150 ms ~

Q : Quelles sont les limites de débit et les quotas pour MLflow Tracing dans Databricks ?

Lors de l'utilisation de MLflow Tracing au sein d'un Workspace Databricks, des quotas et des limites de débit s'appliquent pour assurer la stabilité du service et une utilisation équitable. Voir les limites des Ressources.

Q : Je ne peux pas ouvrir ma trace dans l'interface utilisateur MLflow. Que dois-je faire ?

Il existe plusieurs raisons possibles pour lesquelles une trace peut ne pas être visible dans l'interface utilisateur MLflow.

  1. Le traçage n'est pas encore terminé : si le traçage est toujours en cours de collecte, MLflow ne peut pas afficher les étendues dans l'interface utilisateur. Assurez-vous que toutes les étendues se terminent correctement avec le statut « OK » ou « ERROR ».

  2. Le cache du navigateur est obsolète : Lorsque vous mettez à niveau MLflow vers une nouvelle version, le cache du navigateur peut contenir des données obsolètes et empêcher l'interface utilisateur d'afficher correctement les traces. Videz le cache de votre navigateur (Maj+F5) et refresh la page.

Q : Je ne trouve pas de trace spécifique par ID dans la liste des traces. Que dois-je faire ?

Par default, la liste de traces renvoie les 1 000 traces les plus récentes. Si une trace plus ancienne se situe en dehors de cette fenêtre, elle n'apparaîtra pas dans les résultats de recherche, même si vous correspondez à l'ID de la trace.

Pour trouver une trace plus ancienne, réduisez le filtre de plage horaire afin de créer une fenêtre de résultats plus petite. Une fois que la trace se trouvera parmi les 1 000 entrées les plus récentes pour cette période spécifique, la recherche par ID la trouvera. Si vous connaissez l'ID d'expérience et l'ID de trace, vous pouvez également naviguer directement : <workspace-url>/ml/experiments/<experiment-id>/traces/<trace-id>.

Les expérimentations qui ne sont pas dans Unity Catalog sont également limitées à 100 000 traces au total. Pour un stockage évolutif, gouverné et interrogeable par SQL sans limite de traces, Databricks recommande de stocker les traces dans Unity Catalog. Pour déplacer les traces d’expérimentation existantes, migrer vers les traces dans Unity Catalog.

Q : L'exécution du modèle est bloquée et ma trace est « en cours » indéfiniment.

Parfois, un modèle ou un agent se bloque dans une opération de longue durée ou une boucle infinie, ce qui bloque la trace à l'état "en cours".

Pour éviter cela, vous pouvez définir un délai d’expiration pour la trace à l’aide de la variable d’environnement MLFLOW_TRACE_TIMEOUT_SECONDS. Si la trace dépasse le délai d'expiration, MLflow interrompra automatiquement la trace avec le statut ERROR et l'exportera vers le backend, afin que vous puissiez analyser les spans pour identifier le problème. By default, le délai d'expiration n'est pas défini.

remarque

Le délai d’expiration s’applique uniquement à la trace MLflow. Le programme principal, le modèle ou l'agent continuera de s'exécuter même si la trace est arrêtée.

Par exemple, le code suivant définit le délai d'expiration à 5 secondes et simule la façon dont MLflow gère une Opération de longue durée :

Python
import mlflow
import os
import time

# Set the timeout to 5 seconds for demonstration purposes
os.environ["MLFLOW_TRACE_TIMEOUT_SECONDS"] = "5"


# Simulate a long-running operation
@mlflow.trace
def long_running():
for _ in range(10):
child()


@mlflow.trace
def child():
time.sleep(1)


long_running()
remarque

MLflow surveille le temps d'exécution et l'expiration des traces dans un thread d'arrière-plan. Par défaut, cette vérification est effectuée chaque seconde et la consommation de ressources est négligeable. Si vous souhaitez ajuster l'intervalle, vous pouvez définir la variable d'environnement MLFLOW_TRACE_TIMEOUT_CHECK_INTERVAL_SECONDS.

Q : Ma trace est divisée en plusieurs traces lors de l'exécution multithread. Comment puis-je les combiner en une seule trace ?

Comme MLflow Tracing dépend de Python ContextVar, chaque thread a son propre contexte de trace par default, mais il est possible de générer une trace unique pour les applications multi-threads avec quelques étapes supplémentaires. Pour plus d'informations, consultez la section Multi-threading.

Q : Comment désactiver temporairement le traçage ?

Pour désactiver le traçage, l’API mlflow.tracing.disable cessera la collecte de données de trace depuis MLflow et n’enregistrera aucune donnée dans le service MLflow Tracking concernant les traces.

Pour activer le traçage (s'il avait été temporairement désactivé), l'API mlflow.tracing.enable réactivera la fonctionnalité de traçage pour les modèles instrumentés qui sont invoqués.

Q : Mes résultats de recherche de traces sont trop volumineux pour mlflow.search_traces(). Comment puis-je rechercher des traces à grande échelle ?

L’API MLflow fournit une pagination via la méthode MlflowClient.search_traces(). Cependant, pour les cas d’utilisation ne nécessitant pas de pagination, mlflow.search_traces() est recommandé car il offre plus de fonctionnalités et des valeurs par défaut pratiques.

Pour l'analyse de traces à grande échelle en production, il est généralement préférable d'utiliser le monitoring de production pour enregistrer les traces dans des tables Delta dans Unity Catalog. Consultez Tracer les agents déployés sur Databricks pour des conseils sur le traçage en production.