Développer un flux d’évaluation dans Azure AI Studio
Important
Les éléments marqués (préversion) dans cet article sont actuellement en préversion publique. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Les flux d’évaluation sont des types spéciaux de flux qui évaluent dans quelle mesure les sorties d’une d’exécution s’alignent sur des critères et des objectifs spécifiques.
Dans le flux d’invite, vous pouvez personnaliser ou créer votre propre flux d’évaluation adapté à vos tâches et objectifs, puis l’utiliser pour évaluer d’autres flux. Dans ce document, vous découvrez :
- Comment développer une méthode d’évaluation.
- Comprendre les entrées, les sorties et les métriques de journalisation pour les évaluations de flux de prompt.
Commencer à développer une méthode d’évaluation
Il existe deux façons de développer vos propres méthodes d’évaluation :
Personnaliser un flux d’évaluation intégré : modifiez un flux d’évaluation intégrée.
- Sous Outils sélectionnez Flux d’invite.
- Sélectionnez Créer pour ouvrir l’assistant de création de flux.
- Dans la galerie de flux sous Explorer la galerie sélectionnez Flux d’évaluation pour filtrer ce type de flux. Sélectionnez un exemple et sélectionnez Cloner pour effectuer la personnalisation.
Créer un nouveau flux d’évaluation à partir de zéro : développez une toute nouvelle méthode d’évaluation à partir de zéro.
- Sous Outils sélectionnez Flux d’invite.
- Sélectionnez Créer pour ouvrir l’assistant de création de flux.
- Dans la galerie de flux sous Créer par type dans la zone « Flux d’évaluation », sélectionnez Créer, puis vous pouvez voir un modèle de flux d’évaluation.
Comprendre l’évaluation dans Flux d’invite
Dans Flux d’invite, un flux est une séquence de nœuds qui traitent une entrée et génèrent une sortie. Les flux d’évaluation prennent également en compte les entrées requises et produisent les sorties correspondantes.
Voici quelques caractéristiques spéciales des méthodes d’évaluation :
- Ils s’exécutent généralement après l’exécution à tester et reçoivent des sorties de cette exécution.
- En plus des sorties de l’exécution à tester, elles peuvent éventuellement recevoir un autre jeu de données pouvant contenir des réalités de terrain correspondantes.
- Elles peuvent avoir un nœud d’agrégation qui calcule le niveau de performance globale du flux testé en fonction des scores individuels.
- Elles peuvent journaliser des métriques avec la fonction
log_metric()
.
Nous décrivons comment les entrées et les sorties doivent être définies dans le développement de méthodes d’évaluation.
Entrées
Une évaluation s’exécute après une autre exécution pour évaluer dans quelle mesure les sorties de cette exécution s’alignent sur des critères et des objectifs spécifiques. Par conséquent, l’évaluation reçoit les sorties générées à partir de cette exécution.
D’autres entrées peuvent également être requises, telles que la vérité de terrain, qui peuvent provenir d’un jeu de données. Par défaut, l’évaluation utilise le même jeu de données que le jeu de données test fourni dans l’exécution testée. Toutefois, si les étiquettes correspondantes ou les valeurs de vérité au sol cibles se trouvent dans un jeu de données différent, vous pouvez facilement basculer vers celui-ci.
Par conséquent, pour exécuter une évaluation, vous devez indiquer les sources de ces entrées requises. Pour ce faire, quand vous envoyez une évaluation, vous voyez une section « mappage d’entrée ».
- Si la source de données provient de votre sortie d’exécution, la source est indiquée sous la forme
${run.output.[OutputName]}
- Si la source de données provient de votre jeu de données de test, la source est indiquée sous la forme
${data.[ColumnName]}
Remarque
Si votre évaluation ne nécessite pas de données du jeu de données, vous n’avez pas besoin de référencer des colonnes de jeu de données dans la section de mappage d’entrée, indiquant que la sélection du jeu de données est une configuration facultative. La sélection du jeu de données n’affecte pas le résultat de l’évaluation.
Description des entrées
Pour rappeler quelles entrées sont nécessaires pour calculer les métriques, vous pouvez ajouter une description pour chaque entrée requise. Les descriptions s’affichent lors du mappage des sources dans la soumission d’exécution par lot.
Pour ajouter des descriptions pour chaque entrée, sélectionner Afficher la description dans la section Entrée lors du développement de votre méthode d’évaluation. Vous pouvez également sélectionner « Masquer la description » pour masquer la description.
Ensuite, cette description s’affiche lors de l’utilisation de cette méthode d’évaluation dans la soumission d’exécution par lot.
Sorties et métriques
Les sorties d’une évaluation sont les résultats qui mesurent les performances du flux testé. La sortie contient généralement des métriques telles que des scores et peut également inclure du texte pour la réflexion et les suggestions.
Sorties des scores au niveau de l’instance
Dans le flux d’invite, le flux traite chaque exemple de jeu de données un par un et génère un enregistrement de sortie. De même, dans la plupart des cas d’évaluation, il y a une métrique pour chaque sortie, ce qui vous permet de vérifier comment le flux fonctionne sur chaque donnée individuelle.
Pour enregistrer le score pour chaque échantillon de données, calculer le score pour chaque sortie et consigner le score en tant que sortie de flux en le définissant ainsi dans la section Sortie. Cette expérience de création est identique à la définition d’une sortie de flux standard.
Nous calculons ce score dans un nœud line_process
, que vous pouvez créer et modifier à partir de zéro lors de la création par type. Vous pouvez également remplacer ce nœud Python par un nœud LLM pour utiliser LLM pour calculer le score.
Quand cette méthode d’évaluation est utilisée pour évaluer un autre flux, le score au niveau de l’instance peut être consulté sous l’onglet Vue d’ensemble>Sortie.
Nœud d’agrégation et de journalisation des métriques
En outre, il est également important de fournir un score global de l’exécution. Vous pouvez cocher la case « définir comme agrégation » d’un nœud Python dans un flux d’évaluation pour le transformer dans un nœud « réduire », ce qui permet au nœud de prendre les entrées comme une liste et de les traiter par lots.
De cette façon, vous pouvez calculer et traiter tous les scores de chaque sortie de flux et calculer un résultat global pour chaque variante.
Vous pouvez journaliser les métriques dans un nœud d’agrégation en utilisant Prompt flow_sdk.log_metrics(). Les métriques doivent être numériques (décimaux/entiers). La journalisation des métriques de type chaîne n’est pas prise en charge.
Nous calculons ce score dans le nœud aggregate
, que vous pouvez créer et modifier à partir de zéro dans la création par type. Vous pouvez également remplacer ce nœud Python par un nœud LLM pour utiliser LLM afin de calculer le score. Consultez l’exemple suivant pour utiliser l’API log_metric
dans un flux d’évaluation :
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
Comme vous avez appelé cette fonction dans le nœud Python, vous n’avez pas besoin de l’affecter ailleurs, et vous pouvez afficher les métriques ultérieurement. Lorsque cette méthode d’évaluation est utilisée dans une exécution par lot, le score au niveau de l’instance peut être affiché dans l’onglet Vue d’ensemble ->Métriques.