Activez le traçage distribué pour surveiller les performances des applications LLM, visualiser les chaînes d'appels et identifier les goulots d'étranglement.
Présentation
EAS s'intègre à ARMS pour ajouter de l'observabilité aux applications LLM, ce qui vous permet de tracer les chaînes d'appels, d'identifier les goulots d'étranglement en matière de performances et de détecter les erreurs.
Le traçage offre les fonctionnalités suivantes :
Visualisation des chaînes d'appels : cartographie du parcours complet des requêtes avec des journaux clairs.
Surveillance des performances : suivi du temps de réponse, de la consommation de jetons et du nombre d'erreurs pour identifier les goulots d'étranglement.
Identification des problèmes : localisation précise des problèmes via les ID de trace avec une analyse contextuelle des causes racines.
Évaluation : validation de la précision et de la fiabilité des sorties LLM à l'aide des données de trace.
Concepts clés
-
Trace
Chemin d'exécution complet d'une requête dans un système distribué, composé de plusieurs spans. Chaque trace possède un TraceID unique permettant de suivre les flux de requêtes et d'identifier les goulots d'étranglement ou les erreurs.
-
Span
Unité de base d'une trace représentant une opération spécifique. Enregistre le nom de l'opération, l'heure de début et l'heure de fin.
-
Sonde Python
Collecte automatiquement les données de la chaîne d'appels et les métriques de performance des applications Python. Installez une sonde Python lors du déploiement d'un service EAS pour activer le traçage.
-
Évaluation
Évalue les réponses des applications LLM selon plusieurs dimensions. Contactez votre gestionnaire de compte pour confirmer les noms spécifiques des dimensions d'évaluation.
Limites
Cette fonctionnalité prend uniquement en charge les applications LLM basées sur Python développées avec LangChain, LlamaIndex ou DashScope.
Prérequis
Activez la surveillance des applications ARMS. Pour plus d'informations, consultez Activation d'ARMS.
Activez LangStudio en suivant la procédure décrite dans Autorisation du compte de service PAI.
Si vous utilisez un utilisateur RAM ou un rôle RAM, accordez l'autorisation
AliyunPAILLMTraceFullAccessà l'utilisateur ou au rôle. Pour plus d'informations, consultez les rubriques Gestion des autorisations d'un rôle RAM et Gestion des autorisations des utilisateurs RAM.
Étape 1 : Préparer l'exemple de code
Cette procédure pas à pas utilise un service de prédiction simple pour illustrer le déploiement, l'invocation et la consultation des traces.
Cet exemple utilise l'API DashScope avec Flask pour créer un service web qui appelle Generation.call afin de générer du texte. Activez DashScope et obtenez une clé API comme décrit dans Premier appel à l'API Tongyi Qianwen. Définissez DASHSCOPE_API_KEY comme variable d'environnement lors du déploiement du service. Voici un exemple de fichier app.py :
import os
import json
import flask
import dashscope
app = flask.Flask(__name__)
def run_query(query):
"""Run a query."""
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-plus",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': query}
],
result_format='message'
)
return response
@app.route('/api/trace_demo', methods=['POST'])
def query():
"""
Post data example:
{
"query": "capital of china"
}
"""
data = flask.request.get_data("utf-8")
query = json.loads(data).get('query', '')
response = run_query(query)
return response.output.choices[0].message.content
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
Étape 2 : Activer le traçage
Lors du déploiement d'un service EAS, activez l'option Tracing dans la section Service Features. Si votre image ne contient pas de composant de traçage intégré, configurez les commandes d'installation et de démarrage de la sonde. Consultez la rubrique Installation manuelle d'une sonde Python.
Image avec traçage intégré : activez l'option Tracing. Aucune configuration supplémentaire n'est requise.
-
Image sans traçage intégré : activez l'option Tracing et configurez les bibliothèques tierces ainsi que la commande de démarrage.
Paramètre
Description
Command to Run
Ajoutez
aliyun-bootstrap -a install && aliyun-instrument python app.py. Cette commande installe et démarre la sonde Python ARMS. app.py est le fichier principal du service de prédiction. Ajoutez également aliyun-bootstrap aux bibliothèques tierces pour l'installateur de la sonde.Third-party Library Settings
Ajoutez
aliyun-bootstrappour télécharger l'installateur de la sonde depuis PyPI.
Cet exemple utilise une image sans traçage intégré. Les principaux paramètres de déploiement sont répertoriés ci-dessous. Consultez la rubrique Déploiement d'un service dans la console. Après le déploiement :
Consultez l'état du déploiement du service sur la page EAS.
Consultez l'application enregistrée sur la page Application List de la console ARMS. Le nom de l'application est identique au nom du service EAS.
|
Paramètre |
Description |
|
|
Environment Information |
Deployment Method |
Sélectionnez Image-based Deployment. |
|
Image Configuration |
Cette rubrique utilise l'image par défaut : . Vous pouvez également saisir une image personnalisée préparée dans l'onglet Image Address. |
|
|
Directly Mount |
Montez l'exemple de code sur l'instance de service. Pour cet exemple, cliquez sur OSS et configurez les éléments suivants :
Ignorez cette étape si votre image personnalisée inclut déjà le fichier de service de prédiction. |
|
|
Command |
Cette rubrique définit la commande comme suit : |
|
|
Environment Variables |
L'exemple de code appelle l'API DashScope. Cliquez sur Add et ajoutez la variable d'environnement suivante :
|
|
|
Third-party Library Settings |
Définissez les bibliothèques tierces sur |
|
|
Service Access |
VPC |
Pour utiliser la fonctionnalité de traçage, vous devez configurer un réseau privé virtuel (VPC). Sélectionnez un VPC, un vSwitch et un Security group dans la région. Par défaut, les services EAS ne peuvent pas accéder à Internet. L'exemple de code nécessite un accès Internet pour les appels à l'API DashScope. Configurez l'accès en suivant le Scénario 1 : Autoriser un service EAS à accéder à Internet. |
|
vSwitch |
||
|
Security Group Name |
||
|
Features |
Tracing Analysis |
Activez le commutateur Tracing et configurez les bibliothèques tierces ainsi que la commande de démarrage dans la section Environment Context. |
Étape 3 : Consulter les traces
Un outil d'évaluation basé sur les traces aide les développeurs à vérifier la précision et la fiabilité des sorties des applications LLM :
Appeler le service EAS
Cet exemple utilise le débogage en ligne. Vous pouvez également invoquer le service via des appels API.
Sur la page Elastic Algorithm Service (EAS), recherchez le service cible et cliquez sur
> Online Debugging dans la colonne Actions.-
Dans l'onglet Body, envoyez les données de requête à l'adresse spécifiée en fonction de votre service de prédiction défini.
Cette rubrique utilise l'interface de service définie dans l'exemple de fichier app.py. Voici un exemple de requête et de réponse :
Dans l'onglet Online Debugging, définissez la méthode de requête sur POST, définissez l'URL sur
http://xxx.com/api/predict/xxx/api/trace_demoet saisissez le corps de requête suivant :{"query": "capital of china"}. Cliquez sur Send Request. La réponse renvoie un code d'état 200 et le contenu de corps suivant :The capital of China is Beijing.
Afficher les informations de trace
Par défaut, les données de trace sont stockées pendant 30 jours à compter de leur génération. Pour prolonger la période de stockage, contactez l'équipe ARMS pour une configuration personnalisée.
Basculez vers l'onglet Trace Query de l'onglet Tracing Analysis pour afficher les informations de trace.
-
Recherchez la trace cible et cliquez sur View Traces dans la colonne Actions pour accéder à la page Trace details.
Consultez l'entrée, la sortie et les détails des journaux du service sur cette page.
Remarque : si vous utilisez un utilisateur RAM ou un rôle RAM, vous devez accorder l'autorisation
AliyunARMSReadOnlyAccesspour utiliser cette fonctionnalité.La page Trace details affiche les informations complètes de la chaîne d'appels pour l'invocation LLM, notamment :
L'onglet Content : la zone INPUT à gauche affiche l'invite système et le message de l'utilisateur ; la zone OUTPUT à droite affiche la réponse de l'assistant.
Le Waterfall Chart : affiche la durée du span LLM et les statistiques relatives aux jetons.
Le panneau Span Details : affiche les informations de base telles que le nom de l'application, le nom de l'interface, l'adresse IP, l'heure de début et de fin, l'ID du span et le code d'état.
La zone Additional Information : contient les onglets Attributes, Resources et Details, qui affichent le nom du modèle (par exemple,
qwen-plus) et le contenu complet des Input Messages et Output Messages.
-
Pour partager les détails de la trace, cliquez sur l'icône de partage
pour générer une adresse à usage unique.Remarque : si vous utilisez un utilisateur RAM ou un rôle RAM, vous devez accorder l'autorisation
cms:CreateTicketavant de pouvoir utiliser cette fonctionnalité.
Étape 4 : Évaluer les performances de l'application
EAS prend en charge deux méthodes d'évaluation basées sur les traces :
Méthode 1 : Évaluer une seule trace : sélectionnez manuellement une trace du service EAS pour l'évaluation. Cette méthode convient aux phases de développement ou de test pour déboguer une trace spécifique et vérifier sa logique et ses performances.
Méthode 2 : Évaluer les traces par lots en ligne : évaluez périodiquement les traces échantillonnées du service EAS en cours d'exécution. Cette méthode convient aux tests de performances à grande échelle ou à la validation des fonctionnalités pour comprendre l'état global du système.
Par défaut, les données de trace sont stockées pendant 30 jours à compter de leur génération. Pour prolonger la période de stockage, contactez l'équipe ARMS pour une configuration personnalisée.
Méthode 1 : Évaluer une seule trace
-
Dans l'onglet Trace Query de l'onglet Tracing Analysis, recherchez la trace cible et cliquez sur Evaluate dans la colonne Actions. Ensuite, dans le panneau de configuration Evaluate, configurez les paramètres suivants.
-
Evaluation Metrics : il s'agit d'une configuration fixe qui ne peut pas être modifiée. L'évaluation est effectuée selon les dimensions suivantes.
Métrique d'évaluation
Description
Correctness
Détermine si la réponse traite correctement la question en fonction de l'entrée et du texte de référence.
Faithfulness
Détermine si la réponse est générée en fonction de l'entrée et du texte de référence, et si elle contient des hallucinations.
Retrieval Relevance
Détermine si les résultats récupérés sont pertinents par rapport à la question d'entrée. Cela inclut les quatre métriques suivantes :
-
nDCG : Normalized Discounted Cumulative Gain
-
Hit Rate
-
Precision@K
-
MRR : Mean Reciprocal Rank
-
-
Model Settings : le LLM utilisé pour évaluer la trace. Après la configuration initiale, ce paramètre est automatiquement renseigné pour les évaluations suivantes.
Paramètre
Description
Model Selection
Les deux modèles suivants sont pris en charge :
-
PAI Judge Model
-
qwen-max (modèle Model Studio)
Remarque-
Pour utiliser un modèle Model Studio, configurez une connexion Internet pour EAS.
-
Les appels aux modèles Model Studio sont facturés séparément. Consultez la rubrique Facturation.
-
Model Token
Saisissez le jeton du modèle sélectionné :
-
Modèle Judge : accédez à la page Judge Model, activez le modèle PAI judge et obtenez un jeton.
-
qwen-max : obtenez un jeton via la rubrique Premier appel à l'API Tongyi Qianwen.
-
-
Extraction Configuration : dans les sections Query Extraction Configuration, Answer Extraction Configuration et Context Extraction Configuration, configurez les paramètres du tableau suivant pour extraire le contenu correspondant :
Query Extraction Configuration : extrait le contenu de la requête de l'utilisateur (entrée).
Answer Extraction Configuration : extrait la réponse générée par le système (sortie).
Context Extraction Configuration : extrait le texte ou les informations contextuelles fournies au système (documents).
Paramètre
Description
SpanName
Recherche un span correspondant au SpanName.
JsonPathInSpan
Le format est a.b.c. Ce paramètre ne peut pas être vide. Il extrait une valeur d'un élément spécifié du span correspondant.
JsonPathInSpanValue
Le format est a.b.c. Ce paramètre peut être vide. Une fois l'élément correspondant à JsonPathInSpan trouvé, si le contenu de l'élément est une chaîne JSON, JsonPathInSpanValue est utilisé pour extraire la valeur correspondante.
Vous pouvez cliquer sur View Traces dans la colonne Actions pour obtenir le contenu de configuration à partir de la page Trace details. Le tableau suivant présente des exemples de configuration :
Configuration d'extraction
Comment obtenir
Valeur d'exemple
Configuration d'extraction de la requête
Cette rubrique fournit un exemple où JsonPathInSpanValue n'a aucune valeur. Sur la page des détails de la trace, obtenez la valeur de JsonPathInSpan comme suit :
-
Dans le graphique en cascade à gauche, sélectionnez le span LLM pour afficher le contenu INPUT et OUTPUT ainsi que la durée de la chaîne d'appels.
-
Dans le panneau Span Details à droite, cliquez sur l'onglet Attributes pour développer la liste des attributs liés à GenAI.
-
Vérifiez le champ
input.value. Sa valeur est un tableau JSON contenant role et content, par exemple :[{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "capital of china"}].
Pour un exemple où JsonPathInSpanValue a une valeur, consultez la colonne Valeur d'exemple.
-
JsonPathInSpanValue n'a aucune valeur
-
SpanName : LLM
-
JsonPathInSpan : attributes.input.value
-
JsonPathInSpanValue : étant donné que le contenu de l'élément JsonPathInSpan n'est pas une chaîne JSON, ce paramètre est vide.
-
-
JsonPathInSpanValue a une valeur
-
SpanName : LLM
-
JsonPathInSpan :
attributes.input.value -
JsonPathInSpanValue : étant donné que le contenu de l'élément JsonPathInSpan est une chaîne JSON, saisissez
text[0]ici.
-
Configuration d'extraction de la réponse
Sur la page Trace details, dans le graphique en cascade, cliquez sur le span LLM (la source de
SpanName). Ensuite, dans le panneau Span Details à droite, ouvrez l'onglet Attributes et recherchez le champoutput.value(le chemin correspondant àJsonPathInSpan). Ce champ contient la réponse JSON complète renvoyée par le modèle.-
SpanName : LLM
-
JsonPathInSpan :
attributes.output.value -
JsonPathInSpanValue : ce paramètre est vide.
Configuration d'extraction du contexte
Le service exemple de cette rubrique n'inclut pas de configuration d'extraction du contexte. Pour un exemple, consultez la colonne Valeur d'exemple.
-
SpanName : retrieve
-
JsonPathInSpan :
attributes.retrieval.documents[*].document.contentImportantSeule la configuration du contexte prend en charge l'utilisation d'un astérisque (*).
-
JsonPathInSpanValue : étant donné que le contenu de l'élément JsonPathInSpan n'est pas une chaîne JSON, ce paramètre est vide.
-
-
Une fois les paramètres configurés, cliquez sur Confirm.
Lorsqu'un résultat de score (par exemple, les scores pour les dimensions Correctness et Faithfulness) apparaît dans la colonne Evaluation Result, l'évaluation est terminée. Cliquez sur le résultat pour afficher ses détails.
Méthode 2 : Évaluer les traces par lots en ligne
Dans l'onglet Online Evaluation de l'onglet Tracing Analysis, cliquez sur New Assessment.
-
Sur la page Create Evaluation Task, configurez les paramètres suivants, puis cliquez sur Confirm.
Paramètre
Description
Configuration de base
Nom de la tâche
Saisissez un nom de tâche personnalisé.
Configuration de l'évaluation
Métriques d'évaluation
Il s'agit d'une configuration fixe qui ne peut pas être modifiée. L'évaluation est effectuée selon les dimensions suivantes :
-
Correctness : détermine si la réponse traite correctement la question en fonction de l'entrée et du texte de référence.
-
Faithfulness : détermine si la réponse est générée en fonction de l'entrée et du texte de référence, et si elle contient des hallucinations.
-
Retrieval Relevance : détermine si le contenu récupéré est pertinent par rapport à la question d'entrée. Cela inclut les quatre métriques suivantes :
-
nDCG : Normalized Discounted Cumulative Gain
-
Hit Rate
-
Precision@K
-
MRR : Mean Reciprocal Rank
-
Sélection du modèle
Les deux modèles suivants sont pris en charge :
-
PAI Judge Model
-
qwen-max (modèle Model Studio)
Remarque-
Pour utiliser un modèle Model Studio, configurez une connexion Internet pour EAS.
-
Les appels aux modèles Model Studio sont facturés séparément. Consultez la rubrique Facturation.
-
Jeton du modèle
Saisissez le jeton du modèle sélectionné :
-
Modèle Judge : accédez à la page Judge Model, activez le modèle PAI judge et obtenez un jeton.
-
qwen-max : obtenez un jeton via la rubrique Premier appel à l'API Tongyi Qianwen.
Heure de début et de fin de l'échantillonnage
Sélectionnez les dates de début et de fin de l'échantillonnage.
Politique d'échantillonnage
Les politiques d'échantillonnage suivantes sont disponibles :
-
Échantillonnage basé sur une fenêtre temporelle : capture une trace à intervalles réguliers (toutes les x minutes).
-
Échantillonnage basé sur la probabilité : capture aléatoirement un pourcentage spécifié de traces.
Configuration d'extraction QCA : les données de trace sont formatées sous forme de chaîne JSON. La configuration d'extraction QCA définit le chemin vers le QCA au sein de cette structure JSON. La valeur à ce chemin représente le contenu QCA spécifique.
Configuration d'extraction de la requête
-
Configuration d'extraction de la requête : extrait le contenu de la requête de l'utilisateur (entrée).
-
Configuration d'extraction de la réponse : extrait la réponse générée par le système (sortie).
-
Configuration d'extraction du contexte : extrait le texte ou les informations contextuelles fournies au système (documents).
Configurez SpanName, JsonPathInSpan et JsonPathInSpanValue pour extraire le contenu correspondant. Détails de la configuration : Configuration d'extraction.
Configuration d'extraction de la réponse
Configuration d'extraction du contexte
Lorsque le Status de la tâche indique Completed, toutes les évaluations sont terminées et aucun nouveau résultat ne sera généré.
-
-
Une fois l'évaluation terminée, vous pouvez consulter les résultats dans la colonne Evaluation Result de la tâche d'évaluation. Vous pouvez également cliquer sur le nom de la tâche pour afficher ses détails.
Afficher les résultats de l'évaluation : le système calcule et affiche la note moyenne de toutes les évaluations réussies. Une note proche de 1 indique une qualité supérieure.
-
Afficher les détails de l'évaluation : cliquez sur le nom de la tâche d'évaluation pour afficher les détails. La page de détails contient les sections suivantes :
Informations de base : nom de la tâche, ID de la tâche, statut et heure de création.
Informations de configuration de l'évaluation : métriques d'évaluation (Faithfulness, Correctness, Retrieval Relevance), sélection du modèle (modèle PAI judge), heure de début et de fin de l'échantillonnage, politique d'échantillonnage (taux d'échantillonnage) et configuration d'extraction de la requête/du contexte/de la réponse (incluant le chemin SpanName).
Résumé des résultats de l'évaluation : la note moyenne pour chaque métrique (telle que Faithfulness, Correctness, nDCG, Hit Rate, MRR et Precision@K), ainsi que le nombre total de traces échantillonnées et le nombre de traces évaluées avec succès.
Liste TraceId : affiche l'entrée, la sortie et les résultats d'évaluation par trace (tels que « no hallucination » pour Faithfulness, « correct » pour Correctness et les étiquettes Retrieval Relevance) ainsi que l'heure d'évaluation pour chaque trace, et prend en charge les actions View Trace et Re-evaluate.
Après la création, gérez la tâche en la mettant à jour, en l'arrêtant, en la supprimant ou en la clonant. Le clonage duplique la configuration dans une nouvelle tâche.