Compartir a través de


Desarrollo de un flujo de evaluación en Inteligencia artificial de Azure Studio

Importante

Algunas de las características descritas en este artículo solo pueden estar disponibles en versión preliminar. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Los flujos de evaluación son tipos especiales de flujos que evalúan cómo se alinean las salidas de un flujo con criterios y objetivos específicos.

En el flujo de avisos, puede personalizar o crear un flujo de evaluación propio adaptado a las tareas y objetivos, y después usarlo para evaluar otros flujos. En este documento obtendrá información sobre lo siguiente:

  • Cómo desarrollar un método de evaluación.
  • Comprenda las entradas, las salidas y las métricas de registro para las evaluaciones de flujo de solicitud.

Empezar a desarrollar un método de evaluación

Hay dos maneras de desarrollar sus propios métodos de evaluación:

  • Personalización de un flujo de evaluación integrado: modifique un flujo de evaluación integrado.

    1. En Herramientas seleccione Flujo de avisos.
    2. Seleccione Crear para abrir el asistente para la creación de recursos.
    3. En la galería de flujos en Explorar galería seleccione Flujo de evaluación para filtrar por ese tipo. Elija un ejemplo y seleccione Clonar para realizar la personalización.
  • Crear un nuevo flujo de evaluación desde cero: desarrolle un nuevo método de evaluación desde cero.

    1. En Herramientas seleccione Flujo de avisos.
    2. Seleccione Crear para abrir el asistente para la creación de recursos.
    3. En la galería de flujos de Crear por tipo en el cuadro "Flujo de evaluación" seleccione Crear; después podrá ver una plantilla de flujo de evaluación.

Descripción de la evaluación en el flujo de mensajes

En el flujo de solicitudes, un flujo es una secuencia de nodos que procesan una entrada y generan una salida. Los flujos de evaluación también toman las entradas necesarias y generan las salidas correspondientes.

Algunas características especiales de los métodos de evaluación son:

  • Normalmente se ejecutan después de la ejecución de prueba y reciben salidas de esa ejecución.
  • Además de las salidas de la ejecución que se van a probar, opcionalmente pueden recibir otro conjunto de datos que pueda contener las verdades del suelo correspondientes.
  • Pueden tener un nodo de agregación que calcule el rendimiento general del flujo que se está probando en función de las puntuaciones individuales.
  • Pueden registrar métricas mediante la función log_metric().

Se presentará cómo deben definirse las entradas y salidas en el desarrollo de métodos de evaluación.

Entradas

Una evaluación se ejecuta después de otra ejecución para evaluar cómo se alinean las salidas de esa ejecución con los criterios y objetivos específicos. Por tanto, la evaluación recibe las salidas generadas a partir de esa ejecución.

También pueden ser necesarias otras entradas, como la verdad fundamental, que pueden provenir de un conjunto de datos. De manera predeterminada, la evaluación usa el mismo conjunto de datos que el conjunto de datos de prueba proporcionado a la ejecución probada. Pero si las etiquetas correspondientes o los valores de verdad fundamental de destino están en otro conjunto de datos, puede cambiar fácilmente a ese.

Por tanto, para ejecutar una evaluación, debe indicar los orígenes de estas entradas necesarias. Para ello, al enviar una evaluación, verá una sección "asignación de entrada".

  • Si el origen de datos procede de la salida de la ejecución, el origen se indica como ${run.output.[OutputName]}
  • Si el origen de datos procede del conjunto de datos de prueba, el origen se indica como ${data.[ColumnName]}

Nota:

Si la evaluación no necesita datos del conjunto de datos, no es necesario hacer referencia a ninguna columna del conjunto de datos de la sección de asignación de entradas, lo que indica que la selección del conjunto de datos es una configuración opcional. La selección del conjunto de datos no afectará al resultado de la evaluación.

Descripción de la entrada

Para recordar qué entradas son necesarias para calcular las métricas, puede agregar una descripción para cada entrada necesaria. Las descripciones se muestran al asignar los orígenes en el envío de la ejecución por lotes.

Para agregar descripciones para cada entrada, seleccione Mostrar descripción en la sección de entradas cuando desarrolle su método de evaluación. Y puede seleccionar "Ocultar descripción" para ocultar la descripción.

Después, esta descripción se muestra al usar este método de evaluación en el envío de la ejecución por lotes.

Salidas y métricas

Las salidas de una evaluación son los resultados que miden 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 nivel de instancia: salidas

En el flujo de avisos, el flujo procesa cada conjunto de datos de muestra de uno en uno y genera un registro de salida. De forma similar, en la mayoría de los casos de evaluación, habrá una métrica para cada salida, lo que le permite comprobar cómo funciona el flujo en cada dato individual.

Para registrar la puntuación de cada muestra de datos, calcule la puntuación de cada salida y registre la puntuación como salida de flujo estableciéndola en la sección de salidas. Esta experiencia de creación es la misma que definir una salida de flujo estándar.

Esta puntuación se calcula en el nodo line_process, que puede crear y editar desde cero al realizar la creación por tipo. También puede reemplazar este nodo de Python por un nodo de LLM a fin de usar LLM para calcular la puntuación.

Cuando se utiliza este método de evaluación para evaluar otro flujo, la puntuación a nivel de instancia se puede ver en la pestaña Salida>general.

Registro de métricas y nodo de agregación

Además, también es importante proporcionar una puntuación general para la ejecución. Puede marcar la opción "establecer como agregación" de un nodo de Python de un flujo de evaluación para convertirlo en un nodo de "reducción" y así permitir que el nodo tome las entradas como una lista y las procese por lotes.

De este modo, puede calcular y procesar todas las puntuaciones de cada salida de flujo y calcular un resultado general para cada variante.

Puede registrar métricas en un nodo de agregación mediante prompt flow_sdk.log_metrics() . Las métricas deben ser numéricas (float/int). No se admite el registro de métricas de tipo de cadena.

Esta puntuación se calcula en el nodo aggregate, que puede crear y editar desde cero al realizar la creación por tipo. También puede sustituir este nodo Python por un nodo LLM para utilizar el LLM para calcular la puntuación. Consulte el siguiente ejemplo para utilizar la API log_metric en un flujo de evaluación:

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

Como ha llamado a esta función en el nodo de Python, no es necesario asignarla en ninguna otra parte y puede ver las métricas más adelante. Cuando se usa este método de evaluación en una ejecución por lotes, la puntuación de nivel de instancia se puede ver en la pestaña Información general->Métricas.

Pasos siguientes