Fluxos e métricas de avaliação
Os fluxos de avaliação são um tipo especial de prompt flow que calcula métricas para avaliar o quão bem os resultados de uma execução atendem a critérios e metas específicos. Você pode criar ou personalizar fluxos de avaliação e métricas adaptados às suas tarefas e objetivos e usá-los para avaliar outros prompt flow. Esse artigo explica fluxos de avaliação, como desenvolvê-los e personalizá-los e como usá-los em execuções em lote de prompt flow para avaliar o desempenho do fluxo.
Entenda os fluxos de avaliação
Um prompt flow é uma sequência de nós que processam entrada e geram saída. Os fluxos de avaliação também consomem entradas necessárias e produzem saídas correspondentes, que geralmente são pontuações ou métricas. Os fluxos de avaliação diferem dos fluxos padrão em sua experiência de criação e uso.
Os fluxos de avaliação geralmente são executados após a execução que estão testando, recebendo suas saídas e usando as saídas para calcular pontuações e métricas. Os fluxos de avaliação registram métricas usando a função SDK log_metric()
de prompt flow.
As saídas do fluxo de avaliação são resultados que medem o desempenho do fluxo que está sendo testado. Os fluxos de avaliação podem ter um nó de agregação que calcula o desempenho geral do fluxo que está sendo testado no conjunto de dados de teste.
As próximas seções descrevem como definir entradas e saídas em fluxos de avaliação.
Entradas
Os fluxos de avaliação calculam métricas ou pontuações para execuções em lote considerando as saídas da execução que estão testando. Por exemplo, se o fluxo que está sendo testado for um fluxo de perguntas e respostas que gera uma resposta com base em uma pergunta, você pode nomear uma entrada de avaliação como answer
. Se o fluxo testado for um fluxo de classificação que classifica um texto em uma categoria, você pode nomear uma entrada de avaliação como category
.
Você pode precisar de outras informações como base. Por exemplo, se você quiser calcular a precisão de um fluxo de classificação, precisará fornecer a coluna category
do conjunto de dados como verdade básica. Se você quiser calcular a precisão de um fluxo de QnA, precisará fornecer a coluna answer
do conjunto de dados como a verdade básica. Você pode precisar de outras entradas para calcular métricas, como question
e context
em cenários de QnA ou geração aumentada de recuperação (RAG).
Você define as entradas do fluxo de avaliação da mesma forma que define as entradas de um fluxo padrão. Por padrão, a avaliação usa o mesmo conjunto de dados da execução que está sendo testada. No entanto, se os rótulos correspondentes ou os valores de verdade do alvo estiverem em um conjunto de dados diferente, você poderá alternar facilmente para esse conjunto de dados.
Descrições de entrada
Para descrever as entradas necessárias para calcular métricas, você pode adicionar descrições. As descrições aparecem quando você mapeia as fontes de entrada em envios de execução em lote.
Para adicionar descrições para cada entrada, selecione Mostrar descrição na seção de entrada ao desenvolver seu método de avaliação e, em seguida, insira as descrições.
Para ocultar as descrições do formulário de entrada, selecione Ocultar descrição.
Saídas e métricas
As saídas de uma avaliação são resultados que mostram o desempenho do fluxo que está sendo testado. A saída geralmente contém métricas como pontuações e também pode incluir texto para raciocínio e sugestões.
Pontuações de saída
Um prompt flow processa uma linha de dados por vez e gera um registro de saída. Os fluxos de avaliação também podem calcular pontuações para cada linha de dados, para que você possa verificar o desempenho de um fluxo em cada ponto de dados individual.
Você pode registrar as pontuações para cada instância de dados como saídas do fluxo de avaliação especificando-as na seção de saída do fluxo de avaliação. A experiência de criação é a mesma que definir uma saída de fluxo padrão.
Você pode visualizar as pontuações individuais na guia Saídas ao selecionar Exibir saídas, da mesma forma que você verifica as saídas de uma execução em lote de fluxo padrão. Você pode anexar essas pontuações em nível de instância à saída do fluxo testado.
Agregação e registro de métricas
O fluxo de avaliação também fornece uma avaliação geral da execução. Para distinguir os resultados gerais das pontuações de saída individuais, esses valores gerais de desempenho de execução são chamados de métricas.
Para calcular um valor de avaliação geral com base em pontuações individuais, marque a caixa de seleção Agregação em um nó Python em um fluxo de avaliação para transformá-lo em um nó de redução. O nó então recebe as entradas como uma lista e as processa como um lote.
Ao usar a agregação, você pode calcular e processar todas as pontuações de cada saída de fluxo e calcular um resultado geral usando cada pontuação. Por exemplo, para calcular a precisão de um fluxo de classificação, você pode calcular a precisão de cada saída de pontuação e, em seguida, calcular a precisão média de todas as saídas de pontuação. Então, você pode registrar a precisão média como uma métrica usando promptflow_sdk.log_metric()
. As métricas devem ser numéricas, como float
ou int
. Não há suporte para o registro em log de métricas de tipo de cadeia de caracteres.
O trecho de código a seguir é um exemplo de cálculo da precisão geral pela média da pontuação de precisão grades
de todos os pontos de dados. A precisão geral é registrada como uma métrica usando promptflow_sdk.log_metric()
.
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str]): # Receive a list of grades from a previous node
# calculate accuracy
accuracy = round((grades.count("Correct") / len(grades)), 2)
log_metric("accuracy", accuracy)
return accuracy
Como você chama essa função no nó Python, não precisa atribuí-la em outro lugar e pode visualizar as métricas mais tarde. Depois de usar esse método de avaliação em uma execução em lote, você pode visualizar a métrica que mostra o desempenho geral selecionando a guia Métricas ao visualizar as saídas.
Desenvolver um fluxo de avaliação
Para desenvolver seu próprio fluxo de avaliação, selecione Criar na página Prompt flow do Estúdio do Azure Machine Learning. Na página Criar um novo fluxo, você pode:
Selecione Criar no cartão Fluxo de avaliação em Criar por tipo. Essa seleção fornece um modelo para o desenvolvimento de um novo método de avaliação.
Selecione Fluxo de avaliação na Galeria Explorar e selecione um dos fluxos integrados disponíveis. Selecione Exibir detalhes para obter um resumo de cada fluxo e selecione Clonar para abrir e personalizar o fluxo. O assistente de criação de fluxo ajuda você a modificar o fluxo para seu próprio cenário.
Calcular pontuações para cada ponto de dados
Os fluxos de avaliação calculam pontuações e métricas para fluxos executados em conjuntos de dados. O primeiro passo nos fluxos de avaliação é calcular pontuações para cada saída de dados individual.
Por exemplo, no fluxo de Avaliação de Precisão de Classificação integrado, o grade
que mede a precisão de cada saída gerada pelo fluxo em relação à sua verdade básica correspondente é calculado no nó grade Python.
Se você usar o modelo de fluxo de avaliação, calcule essa pontuação no nó Python line_process. Você também pode substituir o nó python line_process por um nó de modelo de linguagem grande (LLM) para usar um LLM para calcular a pontuação ou usar vários nós para executar o cálculo.
Especifique as saídas desse nó como as saídas do fluxo de avaliação, o que indica que as saídas são as pontuações calculadas para cada amostra de dados. Você também pode gerar um raciocínio para obter mais informações, e é a mesma experiência de definir saídas em um fluxo padrão.
Calcular e registrar métricas
O próximo passo na avaliação é calcular métricas gerais para avaliar a execução. Você calcula métricas em um nó Python que tem a opção Agregação selecionada. Esse nó recebe as pontuações do nó de cálculo anterior e as organiza em uma lista, depois calcula os valores gerais.
Se você usar o modelo de avaliação, essa pontuação será calculada no nó agregado. O trecho de código a seguir mostra o modelo para o nó de agregação.
from typing import List
from promptflow import tool
@tool
def aggregate(processed_results: List[str]):
"""
This tool aggregates the processed result of all lines and log metric.
:param processed_results: List of the output of line_process node.
"""
# Add your aggregation logic here
aggregated_results = {}
# Log metric
# from promptflow import log_metric
# log_metric(key="<my-metric-name>", value=aggregated_results["<my-metric-name>"])
return aggregated_results
Você pode usar sua própria lógica de agregação, como calcular a média da pontuação, a mediana ou o desvio padrão.
Registre as métricas usando a função promptflow.log_metric()
. Você pode registrar várias métricas em um único fluxo de avaliação. As métricas devem ser numéricas (float
/int
).
Use fluxos de avaliação
Depois de criar seu próprio fluxo de avaliação e métricas, você pode usá-lo para avaliar o desempenho de um fluxo padrão. Por exemplo, você pode avaliar um fluxo de perguntas e respostas para testar seu desempenho em um grande conjunto de dados.
No Estúdio do Azure Machine Learning, abra o fluxo que você deseja avaliar e selecione Avaliar na barra de menu superior.
No assistente Execução e avaliação em lote, conclua as Configurações básicas e Configurações de execução em lote para carregar o conjunto de dados para teste e configurar o mapeamento de entrada. Para obter mais informações, veja Enviar execução em lote e avaliar um fluxo.
Na etapa Selecionar avaliação, você pode selecionar uma ou mais de suas avaliações personalizadas ou avaliações integradas para executar. Avaliação personalizada lista todos os fluxos de avaliação que você criou, clonou ou personalizou. Fluxos de avaliação criados por outras pessoas trabalhando no mesmo projeto não aparecem nessa seção.
Na tela Configurar avaliação, especifique as fontes de quaisquer dados de entrada necessários para o método de avaliação. Por exemplo, a coluna de informações básicas pode vir de um conjunto de dados. Se o seu método de avaliação não exigir dados de um conjunto de dados, você não precisará selecionar um conjunto de dados ou referenciar nenhuma coluna do conjunto de dados na seção de mapeamento de entrada.
Na seção Mapeamento de entrada de avaliação, você pode indicar as fontes de entradas necessárias para a avaliação. Se a fonte de dados for da sua saída de execução, defina a fonte como
${run.outputs.[OutputName]}
. Se os dados forem do seu conjunto de dados de teste, defina a fonte como${data.[ColumnName]}
. Todas as descrições que você definir para as entradas de dados também aparecerão aqui. Para obter mais informações, veja Enviar execução em lote e avaliar um fluxo.Importante
Se o seu fluxo de avaliação tiver um nó LLM ou exigir uma conexão para consumir credenciais ou outras chaves, você deverá inserir os dados de conexão na seção Conexão dessa tela para poder usar o fluxo de avaliação.
Selecione Revisar + enviar e depois selecione Enviar para executar o fluxo de avaliação.
Após a conclusão do fluxo de avaliação, você poderá ver as pontuações no nível da instância selecionando Exibir execuções em lote>Exibir saídas das últimas execuções em lote na parte superior do fluxo avaliado. Selecione sua execução de avaliação na lista suspensa Anexar resultados relacionados para ver a nota de cada linha de dados.