Aller au contenu principal

Affichez les traces dans l'interface utilisateur de Databricks MLflow

Toutes les traces capturées sont enregistrées dans une Experimentation MLflow. Vous pouvez y accéder via l'interface utilisateur MLflow dans votre Workspace Databricks.

astuce

Les traces sont stockées et servies par le service MLflow Tracking géré dans votre Workspace Databricks lorsque MLFLOW_TRACKING_URI est défini sur databricks. Ce backend prêt pour la production ne nécessite aucun hébergement supplémentaire. Voir les agents de suivi déployés sur Databricks.

  1. **Accédez à votre expérimentation** : accédez à l'expérimentation où vos traces sont Logs. Par exemple, l'expérimentation définie par mlflow.set_experiment("/Shared/my-genai-app-traces").

  2. Open the Traces tab : Dans la vue de l'expérimentation, cliquez sur le Traces tab pour voir une liste de toutes les traces enregistrées pour cette expérimentation.

    Vue de la liste des traces

Comprendre la liste des traces

La liste des traces vous donne un aperçu général de vos traces, avec des colonnes triables qui comprennent généralement :

  • **ID de trace** : L'identifiant unique pour chaque trace.
  • **Requête** : Un aperçu de l'entrée initiale qui a Trigger la trace.
  • Réponse : Un aperçu du résultat final de la trace.
  • Session : l'identifiant de session, s'il est fourni, regroupant les traces associées (par exemple, dans une conversation).
  • Utilisateur : L’identifiant de l’utilisateur, s’il est fourni.
  • Temps d'exécution : Temps total nécessaire à l'achèvement de la trace.
  • Heure de la requête : Le Timestamp auquel la trace a été initiée.
  • Nom de l'exécution : Si la trace est associée à une exécution MLflow, son nom s'affichera ici, les liant.
  • Source : l'origine de la trace, indiquant souvent la bibliothèque ou le composant instrumenté (par exemple, openai, langchain, ou un nom de trace personnalisé).
  • État : le statut actuel de la trace (par exemple, OK, ERROR, IN_PROGRESS).
  • Nom de la trace : nom spécifique attribué à cette trace, souvent le nom de l'étendue racine.
  • Évaluations : colonnes individuelles pour chaque type d'évaluation (par exemple, my_scorer, professional). L'interface utilisateur affiche également souvent une section récapitulative au-dessus de la liste, montrant les métriques d'évaluation agrégées (comme les moyennes ou les taux de réussite/échec) sur les traces actuellement visibles.
  • **Tags** : Les tags individuels peuvent être affichés sous forme de colonnes (parpersona styleexemple,,). Un nombre récapitulatif des tags peut également être présent.

Rechercher et filtrer les traces

L’interface utilisateur offre plusieurs façons de trouver et de se concentrer sur les traces pertinentes :

  • Barre de recherche (souvent étiquetée « Recherche d'évaluations par demande » ou similaire) : cela vous permet de trouver rapidement des traces en recherchant le contenu de leur champ Request (entrée).

  • Menu déroulant des filtres : Pour un filtrage plus structuré, utilisez le menu déroulant « Filtres ». Cela vous permet généralement de créer des queries basées sur :

    • Attributs : tels que le contenu Request, Session time, Execution time, ou Request time.
    • Évaluations : Filtrer par la présence ou des valeurs spécifiques d'évaluations comme my_scorer ou professional.
    • Autres champs comme State, Trace name, Session, User et Tags (par exemple, tags.persona = 'expert').
  • Menu déroulant de tri : Utilisez le menu déroulant « Trier » pour classer les traces par différentes colonnes comme Request time, Execution time, etc.

  • Menu déroulant Colonnes : Personnalisez les colonnes visibles dans la liste des traces, y compris des balises spécifiques ou des métriques d'évaluation.

Filtre de la liste des traces

Filtres de métadonnées

Dans l'interface utilisateur de MLflow (tab Traces), vous pouvez consulter les métadonnées jointes :

métadonnées de trace

Filtrez les traces dans l’interface utilisateur MLflow à l’aide de ces queries de recherche :

# Find all traces for a specific user
metadata.`mlflow.trace.user` = 'user-123'

# Find all traces in a session
metadata.`mlflow.trace.session` = 'session-abc-456'

# Find traces for a user within a specific session
metadata.`mlflow.trace.user` = 'user-123' AND metadata.`mlflow.trace.session` = 'session-abc-456'

# Find traces from production environment
metadata.`mlflow.source.type` = 'production'

# Find traces from a specific app version
metadata.app_version = '1.0.0'

Explorer une trace individuelle

Pour explorer une trace spécifique, cliquez sur son Request ou Trace Name dans la liste. Cela ouvre la vue détaillée de la trace, qui contient deux principales tabs :

  • Résumé : un aperçu de haut niveau de la trace. Cette tab affiche les entrées et sorties de la portée racine, toutes les portées intermédiaires clés et toutes les exceptions levées pendant la trace. Utilisez les boutons bascule **Default**, **JSON** et **Tableau** pour modifier la façon dont la tab affiche les entrées et les sorties.
  • Détails & Chronologie : la ventilation complète des spans avec les détails par span. La section suivante décrit cette vue.

Aperçu du détail de la trace

L'onglet Détails & Chronologie comprend quelques panneaux principaux :

  1. Répartition de la trace (panneau de gauche) :

    • Ce panneau (souvent intitulé « Analyse de trace ») affiche la **hiérarchie des spans** sous forme d'arborescence ou de graphique en cascade. Il affiche toutes les opérations (spans) au sein de la trace, leurs relations parent-enfant, ainsi que leur ordre d'exécution et leur durée.
    • Vous pouvez sélectionner des spans individuels à partir de cette répartition pour en examiner les détails spécifiques.
  2. Détails de la portée (Panneau central) :

    • Lorsqu'un span est sélectionné dans la répartition de la Trace, ce panneau affiche ses informations détaillées, généralement organisées en tab telles que :

      • Chat : Pour les interactions LLM basées sur le chat, cette tab offre souvent une vue rendue du flux de conversation (messages utilisateur, assistant, outil).

      Tab de discussion des détails de l'étendue

      • Entrées / Sorties : Affiche les données d’entrée brutes transmises à l’Opération et les données de sortie brutes qu’elle a renvoyées. Pour les contenus volumineux, un bouton « Voir plus » / « Voir moins » peut être disponible pour développer ou réduire la vue.

      Tab E/S des détails de l'étendue

      • Attributs : Affiche les métadonnées clé-valeur spécifiques à la portée (par exemple, nom model, temperature pour un appel LLM ; doc_uri pour une portée de récupérateur).

      tab Attributs de détail d'étendue

      • Événements : pour les étendues qui ont rencontré des erreurs, ce tab affiche généralement les détails des exceptions et les traces de pile. Pour les étendues de streaming, il peut afficher les blocs de données individuels tels qu'ils ont été générés.

      • Certains champs de sortie peuvent également disposer d'un bouton bascule Markdown pour basculer entre les vues brutes et rendues si le contenu est au format Markdown.

  3. Évaluations (Panneau de droite) :

    • Ce panneau affiche toutes les évaluations (commentaires d'utilisateurs ou évaluations) qui ont été consignées pour la trace entière ou pour le span actuellement sélectionné .
    • Essentiellement, ce panneau comprend souvent un bouton « + Ajouter une nouvelle évaluation » , vous permettant d'enregistrer de nouveaux commentaires ou scores d'évaluation directement depuis l'interface utilisateur tout en examinant une trace. Ceci est très utile pour les workflows de révision et d'étiquetage manuels.

    Détail de la trace Ajouter une évaluation

Informations au niveau de la trace : Au-delà des détails de portée individuelle, la vue donne également accès aux informations globales de la trace. Cela inclut les balises au niveau de la trace et toutes les évaluations enregistrées pour l'ensemble de la trace (souvent visibles dans le panneau Évaluations lorsqu'aucune portée spécifique ou la portée racine n'est sélectionnée), qui peuvent provenir de commentaires directs des utilisateurs ou d'évaluations systématiques.

Scénarios de debugging courants

Voici comment vous pouvez utiliser l'interface utilisateur de MLflow Tracing pour répondre aux besoins courants de debugging et d'observabilité :

  1. Identifier les traces lentes (goulets d'étranglement de latence) :

    • Dans la vue de liste des traces : Utilisez le menu déroulant « Sort » pour trier les traces par « Execution time » dans l'ordre décroissant. Cela fera remonter les traces les plus lentes en tête.
    • Dans la vue détaillée de la trace : Une fois que vous ouvrez une trace lente, examinez le panneau « Répartition de la trace ». L'affichage en cascade des étendues mettra visuellement en évidence les opérations qui ont pris le plus de temps, vous aidant à identifier les goulots d'étranglement de latence au sein du flux de votre application.

    Identification de l'interface utilisateur des traces lentes

  2. Rechercher les traces d'un utilisateur particulier :

    • Utilisez les filtres : Si vous disposez d'informations utilisateur suivies et qu'elles sont disponibles en tant qu'option de filtre (par exemple, sous « Attributs » ou un filtre « Utilisateur » dédié dans le menu déroulant « Filtres »), vous pouvez sélectionner ou saisir l'ID utilisateur spécifique.
    • Utiliser la recherche et les balises : Alternativement, si les ID utilisateur sont stockés sous forme de balises (par exemple, mlflow.trace.user), utilisez la barre de recherche avec une query telle que tags.mlflow.trace.user = 'user_example_123'.

    Recherche d'interface utilisateur de traces utilisateur

  3. Localiser les traces présentant des échecs (Erreurs) :

    • Utiliser les filtres : Dans le menu déroulant « Filtres », sélectionnez l’attribut State et choisissez ERROR pour afficher uniquement les traces qui ont échoué.
    • Dans la vue détaillée de la trace : pour une trace d'erreur, sélectionnez le span marqué d'une erreur dans la « ventilation de la trace ». Accédez à son tab « Events » dans le panneau de détails du span pour afficher le message d'exception et la trace de la pile, qui sont cruciaux pour diagnostiquer la cause première de la défaillance.

    Localisation de l'interface utilisateur des traces d'erreur

  4. Identifier les traces avec des retours négatifs ou des problèmes :

    • Utiliser les filtres d'évaluation : si vous collectez les commentaires des utilisateurs ou exécutez des évaluations qui débouchent sur des évaluations (par exemple, un booléen is_correct ou un numérique relevance_score), le menu déroulant « Filtres » pourrait vous permettre de filtrer par ces noms d'évaluation et leurs valeurs (par exemple, filtrer pour is_correct = false ou relevance_score < 0.5).
    • Afficher les évaluations : ouvrez une trace et vérifiez le panneau « Évaluations » (à droite dans la vue détaillée) ou les évaluations de spans individuelles. Ceci affichera tout feedback enregistré, les scores et les justifications, vous aidant à comprendre pourquoi une réponse a été marquée comme de mauvaise qualité.

    Identification de l&#39;interface utilisateur des commentaires négatifs.

Ces exemples montrent comment les informations détaillées capturées par MLflow Tracing, combinées aux capacités d'affichage et de filtrage de l'interface utilisateur, vous permettent de déboguer efficacement les problèmes et d'observer le comportement de votre application.

Traçage dans les Notebooks Databricks

MLflow Tracing offre une expérience transparente au sein des Notebooks Databricks, vous permettant de visualiser les traces directement dans le cadre de votre workflow de développement et d'expérimentation.

remarque

L'intégration du Notebook Databricks MLflow Tracing est disponible dans MLflow 2.20 et versions ultérieures.

Interface utilisateur de trace des Notebooks Databricks

Lorsque vous travaillez dans un Notebook Databricks et que votre URI de MLflow Tracking est définie sur "databricks" (ce qui est souvent le « default » ou peut être défini à l'aide de mlflow.set_tracking_uri("databricks")), l'interface utilisateur de trace peut être affichée automatiquement dans la sortie d'une cellule.

Cela se produit généralement lorsque :

  1. L'exécution du code d'une cellule génère une trace (par exemple, en appelant une fonction décorée avec @mlflow.trace ou un appel de bibliothèque auto-instrumenté).
  2. Vous appelez explicitement mlflow.search_traces() et le résultat est affiché.
  3. Un objet mlflow.entities.Trace (par exemple, de mlflow.get_trace() est la dernière expression d'une cellule ou est passé à display().

Cette vue dans le Notebook fournit les mêmes riches capacités d'exploration interactive des traces que celles de l'interface utilisateur principale des Experimentations MLflow, vous aidant à itérer plus rapidement sans changer de contexte.

Contrôler l'affichage du Notebook

Pour activer ou désactiver l'affichage automatique des traces dans les sorties des cellules de Notebook, exécutez : mlflow.tracing.disable_notebook_display() ou mlflow.tracing.enable_notebook_display()

Limitations

  • La liste des traces renvoie au maximum 1 000 traces. Les filtres et la recherche d'ID de trace s'appliquent uniquement à cet ensemble, pas à l'expérimentation complète, de sorte que les traces plus anciennes dans les grandes expérimentations pourraient ne pas apparaître. Pour trouver une trace plus ancienne, réduisez la plage horaire pour l'inclure.
  • Les expérimentations non présentes dans Unity Catalog sont limitées à 100 000 traces. Pour un stockage évolutif et régi sans limite de trace, 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.

Ressources supplémentaires