MLflow Tracing pour les agents
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article décrit MLflow Tracing et les scénarios dans lesquels il est utile pour évaluer des applications d’IA générative dans votre système d’IA.
Dans le développement de logiciels, le traçage implique l’enregistrement de séquences d’événements comme les sessions utilisateur ou les flux de requêtes. Dans le contexte des systèmes d’IA, le traçage fait souvent référence aux interactions que vous avez avec un système d’IA. Un exemple de traçage d’un système IA peut ressembler à l’instrumentation des entrées et des paramètres d’une application RAG qui inclut un message utilisateur avec une invite, une recherche vectorielle et une interface avec le modèle d’IA générative.
Qu’est-ce que le MLflow Tracing ?
À l’aide de MLflow Tracing, vous pouvez journaliser, analyser et comparer des traces entre différentes versions d’applications d’IA générative. Il vous permet de déboguer votre code Python IA générative ainsi que de suivre les entrées et les réponses. Cela peut vous aider à découvrir les conditions ou les paramètres qui nuisent au bon fonctionnement de votre application. MLflow Tracing est étroitement intégré aux outils et à l’infrastructure Databricks, ce qui vous permet de stocker et d’afficher toutes vos traces dans les notebooks Databricks ou l’interface utilisateur de l’expérience MLflow lorsque vous exécutez votre code.
Lorsque vous développez des systèmes d’IA sur Databricks en utilisant des bibliothèques telles que LangChain, LlamaIndex, OpenAI, ou PyFunc personnalisé, MLflow Tracing vous permet de voir tous les événements et les résultats intermédiaires de chaque étape de votre agent. Vous pouvez facilement voir les invites, les modèles et les extracteurs utilisés, les documents récupérés pour compléter la réponse, le temps nécessaire et le résultat final. Par exemple, si votre modèle hallucine, vous pouvez rapidement inspecter chaque étape qui a conduit à l’hallucination.
Pourquoi utiliser MLflow Tracing ?
MLflow Tracing offre plusieurs avantages pour vous aider à suivre votre flux de développement. Par exemple, vous pouvez :
- Examinez une visualisation interactive des traces et utilisez l’outil d’investigation pour diagnostiquer les problèmes de développement.
- Vérifiez que les modèles d’invites et les garde-fous produisent des résultats raisonnables.
- Explorez et réduisez l’impact de la latence des différentes infrastructures, modèles, tailles de blocs et pratiques de développement logiciel.
- Mesurez les coûts des applications en effectuant le traçage de l’utilisation des jetons par différents modèles.
- Établissez des jeux de données de référence (« golden ») pour évaluer les performances des différentes versions.
- Stockez les traces des points de terminaison de modèle de production pour déboguer des problèmes et effectuer une révision ainsi qu’une évaluation hors connexion.
Installer MLflow Tracing
MLflow Tracing est disponible dans les versions 2.13.0 et ultérieures de MLflow.
%pip install mlflow>=2.13.0 -qqqU
%restart_python
Vous pouvez également %pip install databricks-agents
pour installer la dernière version de databricks-agents
qui inclut une version compatible de MLflow.
Utiliser le suivi MLflow dans le développement
Le suivi MLflow vous aide à analyser les problèmes de performances et à accélérer le cycle de développement de l’agent. Les sections suivantes supposent que vous effectuez le développement d’agents et le suivi MLflow à partir d’un notebook.
Remarque
Dans l’environnement de notebook, le suivi MLflow peut ajouter jusqu’à quelques secondes de traitement au temps d’exécution de l’agent. Cela est principalement dû à la latence de l’enregistrement des traces dans l’expérience MLflow. Dans le point de terminaison du modèle de production, le suivi MLflow a un impact beaucoup plus petit sur les performances. Consultez Utiliser le suivi MLflow en production.
Remarque
À partir de Databricks Runtime 15.4 LTS ML, le suivi MLflow est activé par défaut dans les notebooks. Pour désactiver le suivi, par exemple avec LangChain, vous pouvez exécuter mlflow.langchain.autolog(log_traces=False)
dans votre notebook.
Ajouter des traces à votre agent
MLflow Tracing offre trois façons différentes d’utiliser des traces avec votre application d’IA générative. Consultez Ajouter des traces à vos agents pour obtenir des exemples d’utilisation de ces méthodes. Pour des exemples de référence API, consultez la documentation sur MLflow.
API | Cas d’usage recommandé | Description |
---|---|---|
Journalisation automatique MLflow | Développement sur des bibliothèques GenAI intégrées | La journalisation automatique instrumente automatiquement les traces pour les frameworks open source populaires tels que LangChain, LlamaIndex et OpenAI. Lorsque vous ajoutez mlflow.<library>.autolog() au début du notebook, MLflow enregistre automatiquement les traces pour chaque étape de l’exécution de votre agent. |
API Fluent | Agent personnalisé avec Pyfunc | API à faible code pour instrumenter des systèmes d’IA sans vous soucier de la structure d’arborescence de la trace. MLflow détermine la structure d’arborescence parent-enfant appropriée (étendues) en fonction de la pile Python. |
API clients MLflow | Cas d’usage avancés tels que le multithreading | MLflowClient implémente des API plus granulaires et thread-safe pour les cas d’usage avancés. Ces API ne gèrent pas la relation parent-enfant des étendues. Vous devez donc le spécifier manuellement pour construire la structure de trace souhaitée. Cela nécessite davantage de code, mais vous offre un meilleur contrôle sur le cycle de vie des traces, en particulier pour les cas d’usage multithread.Recommandé pour les cas d’usage qui nécessitent davantage de contrôle, comme les applications multithreads ou l’instrumentation basée sur le rappel. |
Examen des traces
Après avoir exécuté l’agent instrumenté, vous pouvez passer en revue les traces générées de différentes manières :
- La visualisation des traces est affichée en ligne dans la sortie de la cellule.
- Les traces sont consignées dans votre expérience MLflow. Vous pouvez consulter la liste complète des traces historiques et les rechercher dans l’onglet
Traces
de la page Expérience. Lorsque l’agent s’exécute sous une exécution MLflow active, vous pouvez également trouver les traces dans la page Exécuter. - Récupérez les traces par programmation à l’aide de l’API search_traces().
Utiliser MLflow Tracing en production
MLflow Tracing est également intégré à Mosaic AI Model Serving, ce qui vous permet de déboguer efficacement les problèmes, de surveiller les performances et de créer un jeu de données golden pour une évaluation hors ligne. Lorsque le suivi MLflow est activé pour votre point de terminaison de service, les traces sont enregistrées dans unetable d’inférence sous la colonne response
.
Pour activer le suivi MLflow pour votre point de terminaison de service, vous devez définir la variable d’environnement ENABLE_MLFLOW_TRACING
sur True
dans la configuration du point de terminaison. Consultez Ajouter des variables d’environnement de texte brut pour savoir comment déployer un point de terminaison avec des variables d’environnement personnalisées. Si vous avez déployé votre agent à l’aide de l’API deploy()
, les traces sont automatiquement enregistrées dans une table d’inférence. Consultez Déployer un agent pour une application d’IA générative.
Remarque
L’écriture de traces dans une table d’inférence s’effectue de façon asynchrone. Elle n’ajoute donc pas la même surcharge que dans l’environnement de notebook pendant le développement. Cependant, cela peut encore entraîner une certaine surcharge au niveau de la vitesse de réponse du point de terminaison, en particulier lorsque la taille de la trace pour chaque demande d’inférence est importante. Databricks ne garantit aucun contrat de niveau de service (SLA) pour l’impact réel de la latence sur votre point de terminaison de modèle, car il dépend fortement de l’environnement et de l’implémentation du modèle. Databricks vous recommande de tester les performances de votre point de terminaison et d’obtenir des insights sur la surcharge de suivi avant le déploiement sur une application de production.
Le tableau suivant fournit une indication approximative de l’impact sur la latence d’inférence pour différentes tailles de trace.
Taille de trace par requête | Impact sur la latence (ms) |
---|---|
~10 Ko | ~ 1 ms |
~ 1 Mo | 50 ~ 100 ms |
10 Mo | 150 ms ~ |
Limites
Le suivi MLflow est disponible dans les notebooks Databricks et les tâches de notebooks et la mise en service de modèle.
L’enregistrement automatique LangChain peut ne pas prendre en charge toutes les API de prédiction LangChain. Consultez la documentation sur MLflow pour obtenir la liste complète des API prises en charge.