Compartir a través de


Flujos y métricas de evaluación

Los flujos de evaluación son un tipo especial de flujo de avisos que calcula las métricas para evaluar la forma en que las salidas de una ejecución cumplen criterios y objetivos específicos. Puede crear o personalizar flujos de evaluación y métricas adaptados a sus tareas y objetivos, y usarlos para evaluar otros flujo de avisos. En este artículo se explican los flujos de evaluación, cómo desarrollarlos y personalizarlos y cómo usarlos en ejecuciones por lotes de flujo de avisos para evaluar el rendimiento del flujo.

Descripción de los flujos de evaluación

Un flujo de avisos es una secuencia de nodos que procesan la entrada y generan la salida. Los flujos de evaluación también consumen entradas necesarias y generan salidas correspondientes que suelen ser puntuaciones o métricas. Los flujos de evaluación difieren de los flujos estándar en su experiencia de creación y uso.

Los flujos de evaluación normalmente se ejecutan después de la ejecución que están probando mediante la recepción de sus salidas y el uso de las salidas para calcular puntuaciones y métricas. Las métricas de registro de flujos de evaluación usan la función del SDK de flujo de avisos log_metric().

Las salidas del flujo de evaluación son resultados que miden el rendimiento del flujo que se está probando. Los flujos de evaluación pueden tener un nodo de agregación que calcula el rendimiento general del flujo que se está probando en el conjunto de datos de prueba.

En las secciones siguientes se describe cómo definir entradas y salidas en flujos de evaluación.

Entradas

Los flujos de evaluación calculan las métricas o puntuaciones de las ejecuciones por lotes tomando las salidas de la ejecución que están probando. Por ejemplo, si el flujo que se está probando es un flujo de QnA que genera una respuesta basada en una pregunta, podría asignar un nombre a una entrada de evaluación como answer. Si el flujo que se está probando es un flujo de clasificación que clasifica un texto en una categoría, puede asignar un nombre a una entrada de evaluación como category.

Es posible que necesite otras entradas como verdad básica. Por ejemplo, si desea calcular la precisión de un flujo de clasificación, debe proporcionar la columna category del conjunto de datos como verdad básica. Si desea calcular la precisión de un flujo de QnA, debe proporcionar la columna answer del conjunto de datos como la verdad básica. Es posible que necesite otras entradas para calcular métricas, como question y context en escenarios de generación aumentada (RAG) de QnA o recuperación.

Defina las entradas del flujo de evaluación de la misma manera que defina las entradas de un flujo estándar. De forma predeterminada, la evaluación usa el mismo conjunto de datos que la ejecución que se está probando. Sin embargo, si las etiquetas correspondientes o los valores de verdad del suelo de destino están en un conjunto de datos diferente, puede cambiar fácilmente a ese conjunto de datos.

Descripciones de entrada

Para describir las entradas necesarias para calcular las métricas, puede agregar descripciones. Las descripciones aparecen al asignar los orígenes de entrada en envíos de ejecución por lotes.

Para agregar descripciones para cada entrada, seleccione Mostrar descripción en la sección de entrada al desarrollar el método de evaluación y, a continuación, escriba las descripciones.

Captura de pantalla de la evaluación de la precisión de la clasificación con Ocultar descripción resaltado.

Para ocultar las descripciones del formulario de entrada, seleccione Ocultar descripción.

Captura de pantalla de la asignación de entrada de la evaluación con la descripción de las respuestas resaltada.

Salidas y métricas

Las salidas de una evaluación son resultados que muestran el rendimiento del flujo que se está probando. La salida normalmente contiene métricas como puntuaciones y también puede incluir texto para el razonamiento y las sugerencias.

Puntuaciones de salida

Un Flujo de aviso procesa una fila de datos a la vez y genera un registro de salida. Los flujos de evaluación también pueden calcular puntuaciones para cada fila de datos, por lo que puede comprobar cómo funciona un flujo en cada punto de datos individual.

Puede registrar las puntuaciones de cada instancia de datos como salidas de flujo de evaluación si las especifica en la sección de salida del flujo de evaluación. La experiencia de creación es la misma que la definición de una salida de flujo estándar.

Captura de pantalla de la sección de salidas que muestra un nombre y un valor.

Puede ver las puntuaciones individuales en la pestaña Salidas al seleccionar Ver salidas, igual que se comprueban las salidas de una ejecución por lotes de flujo estándar. Puede anexar estas puntuaciones de nivel de instancia a la salida del flujo que ha probado.

Agregación y registro de métricas

El flujo de evaluación también proporciona una evaluación general para la ejecución. Para distinguir los resultados generales de las puntuaciones de salida individuales, estos valores generales de rendimiento de ejecución se denominan métricas.

Para calcular un valor de evaluación general basado en puntuaciones individuales, active la casilla Agregación en un nodo de Python en un flujo de evaluación para convertirlo en un nodo de reducir. A continuación, el nodo toma las entradas como una lista y las procesa como un lote.

Captura de pantalla del encabezado del nodo de Python con la casilla Agregación seleccionada.

Mediante la agregación, puede calcular y procesar todas las puntuaciones de cada salida de flujo y calcular un resultado general mediante cada puntuación. Por ejemplo, para calcular la precisión de un flujo de clasificación, puede calcular la precisión de cada salida de puntuación y, a continuación, calcular la precisión media de todas las salidas de puntuación. A continuación, puede registrar la precisión media como métrica mediante promptflow_sdk.log_metric(). Las métricas deben ser numéricas, como float o int. No se admite el registro de métricas de tipo de cadena.

El siguiente fragmento de código es un ejemplo de cálculo de la precisión general mediante el promedio de puntuación de precisión grades de todos los puntos de datos. La precisión general se registra como una métrica mediante 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

Dado que llama a esta función en el nodo de Python, no es necesario asignarla en otro lugar y puede ver las métricas más adelante. Después de usar este método de evaluación en una ejecución por lotes, puede ver la métrica que muestra el rendimiento general seleccionando la pestaña Métricas al ver las salidas.

Captura de pantalla de la pestaña métricas que muestra las métricas registradas por métricas de registro.

Desarrollo de un flujo de evaluación

Para desarrollar su propio flujo de evaluación, seleccione Crear en la página Flujo de avisos de Azure Machine Learning Studio. En la página Crear un nuevo flujo, puede:

  • Seleccione Crear en la tarjeta flujo de evaluación en Crear por tipo. Esta selección proporciona una plantilla para desarrollar un nuevo método de evaluación.

  • Seleccione Flujo de evaluación en la Galería Explorar, y seleccione uno de los flujos integrados disponibles. Seleccione Ver detalles para obtener un resumen de cada flujo y seleccione Clonar para abrir y personalizar el flujo. El Asistente para la creación de flujos le ayuda a modificar el flujo para su propio escenario.

Captura de pantalla de diferentes formas de crear un nuevo flujo de evaluación.

Calcular puntuaciones para cada punto de datos

Los flujos de evaluación calculan puntuaciones y métricas para los flujos que se ejecutan en conjuntos de datos. El primer paso de los flujos de evaluación es calcular puntuaciones para cada salida de datos individual.

Por ejemplo, en el flujo integrado de evaluación de precisión de clasificación, el grade que mide la precisión de cada salida generada por flujo en su verdad de terreno correspondiente se calcula en el nodo de grado Python.

Si usa la plantilla de flujo de evaluación, calcule esta puntuación en el nodo line_process Python. También puede reemplazar el nodo line_process Python por un nodo de modelo de lenguaje grande (LLM) para usar un LLM para calcular la puntuación o usar varios nodos para realizar el cálculo.

Recorte de pantalla del nodo de proceso de líneas de la plantilla.

Las salidas de este nodo se especifican como salidas del flujo de evaluación, lo que indica que las salidas son las puntuaciones calculadas para cada muestra de datos. También puede generar el razonamiento para obtener más información y es la misma experiencia que definir salidas en un flujo estándar.

Cálculo y registro de métricas

El siguiente paso de la evaluación es calcular las métricas generales para evaluar la ejecución. Las métricas se calculan en un nodo de Python que tiene seleccionada la opción Agregación. Este nodo toma las puntuaciones del nodo de cálculo anterior y los organiza en una lista y, a continuación, calcula los valores generales.

Si usa la plantilla de evaluación, esta puntuación se calcula en el nodo agregado. El siguiente fragmento de código muestra la plantilla para el nodo de agregación.


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

Puede usar su propia lógica de agregación, como calcular la media de puntuación, la mediana o la desviación estándar.

Registre las métricas mediante la función promptflow.log_metric(). Puede registrar varias métricas en un único flujo de evaluación. Las métricas deben ser numéricas (float/int).

Uso de flujos de evaluación

Después de crear su propio flujo de evaluación y métricas, puede usar el flujo para evaluar el rendimiento de un flujo estándar. Por ejemplo, puede evaluar un flujo de QnA para probar cómo funciona en un conjunto de datos grande.

  1. En Azure Machine Learning Studio, abra el flujo que desea evaluar y seleccione Evaluar en la barra de menús superior.

    Recorte de pantalla del botón de evaluación.

  2. En el asistente de Ejecución por lotes y evaluación, complete la Configuración básica y Configuración de ejecución por lotes para cargar el conjunto de datos para probar y configurar la asignación de entrada. Para obtener más información, consulte Enviar ejecución por lotes y evaluar un flujo.

  3. En el paso Seleccionar evaluación, puede seleccionar una o varias de las evaluaciones personalizadas o las evaluaciones integradas que se van a ejecutar. Evaluación personalizada enumera todos los flujos de evaluación que ha creado, clonado o personalizado. Los flujos de evaluación creados por otros usuarios que trabajan en el mismo proyecto no aparecen en esta sección.

    Recorte de pantalla de la selección de la evaluación personalizada.

  4. En la pantalla Configurar la evaluación, especifique los orígenes de los datos de entrada necesarios para el método de evaluación. Por ejemplo, la columna de verdad del suelo podría provenir de un conjunto de datos. Si el método de evaluación no requiere datos de un conjunto de datos, no es necesario seleccionar un conjunto de datos ni hacer referencia a ninguna columna de conjunto de datos en la sección asignación de entrada.

    En la sección Asignación de entrada de evaluación, puede indicar los orígenes de las entradas necesarias para la evaluación. Si el origen de datos procede de la salida de ejecución, establezca el origen como ${run.outputs.[OutputName]}. Si los datos proceden del conjunto de datos de prueba, establezca el origen como ${data.[ColumnName]}. Las descripciones que establezca para las entradas de datos también aparecen aquí. Para obtener más información, consulte Enviar ejecución por lotes y evaluar un flujo.

    Captura de pantalla de la asignación de entrada de evaluación.

    Importante

    Si el flujo de evaluación tiene un nodo LLM o requiere una conexión para consumir credenciales u otras claves, debe escribir los datos de conexión en la sección Conexión de esta pantalla para poder usar el flujo de evaluación.

  5. Seleccione Revisar y enviar y, a continuación, seleccione Enviar para ejecutar el flujo de evaluación.

  6. Una vez completado el flujo de evaluación, puede ver las puntuaciones de nivel de instancia seleccionando Ver ejecuciones por lotes>Ver salidas de ejecución por lotes más recientes en la parte superior del flujo evaluado. Seleccione la ejecución de evaluación en la lista desplegable Anexar resultados relacionados para ver el grado para cada fila de datos.

    Recorte de pantalla de la pestaña