Поделиться через


Разработка потока оценки на портале Azure AI Foundry

Это важно

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Потоки оценки — это специальные типы потоков, которые оценивают, насколько хорошо выходные данные выполнения соответствуют определенным критериям и целям.

В рабочем процессе можно настроить или создать собственный оценочный процесс, адаптированный к задачам и целям, а затем использовать его для оценки других рабочих процессов. В этом документе вы узнаете:

  • Как разработать метод оценки.
  • Понимание входных данных, выходных данных и метрик ведения журнала для оценки потоков запросов.

Начало разработки метода оценки

Существует два способа разработки собственных методов оценки:

  • Настройка встроенного потока оценки: Измените встроенный поток оценки.

    1. В разделе "Сборка и настройка" выберите поток запроса.
    2. Выберите "Создать", чтобы открыть мастер создания потока.
    3. В галерее потоков в разделе «Изучение галереи» выберите «Поток оценки», чтобы фильтровать по этому типу. Выберите образец и нажмите "Клонировать", чтобы выполнить настройку.
  • Создайте новый поток оценки с нуля: Разработка нового метода оценки с нуля.

    1. В разделе "Сборка и настройка" выберите поток запроса.
    2. Выберите "Создать", чтобы открыть мастер создания потока.
    3. В коллекции потоков в разделе "Создание по типу " в поле "Поток оценки" выберите "Создать ", а затем можно просмотреть шаблон потока оценки.

Понимание оценки в Prompt flow

В потоке запроса поток — это последовательность узлов, которые обрабатывают входные данные и создают выходные данные. Потоки оценки также принимают необходимые входные данные и создают соответствующие выходные данные.

Ниже приведены некоторые специальные функции методов оценки:

  • Они обычно выполняются после тестируемого запуска и получают выходные данные из этого запуска.
  • Помимо выходных данных тестового запуска, при необходимости они могут получать другой набор данных, который содержит соответствующие эталонные данные.
  • У них может быть узел агрегирования, который вычисляет общую производительность проверяемого потока на основе отдельных показателей.
  • Они могут записывать метрики с помощью log_metric() функции.

Мы представляем, как следует определять входные и выходные данные в разработке методов оценки.

Входные данные

Оценка выполняется после другого запуска, чтобы оценить, насколько хорошо выходные данные выполнения соответствуют определенным критериям и целям. Поэтому оценка получает выходные данные, сгенерированные этим запуском.

Кроме того, могут потребоваться другие входные данные, такие как эталонные данные, которые могут исходить из набора данных. По умолчанию оценка использует тот же набор данных, что и тестовый набор данных, предоставленный для тестового запуска. Однако если соответствующие метки или целевые значения истинности находятся в другом наборе данных, можно легко переключиться на этот.

Поэтому для выполнения оценки необходимо указать источники этих необходимых входных данных. Для этого при отправке оценки отображается раздел "сопоставление входных данных".

  • Если источник данных получен из выходных данных запуска, источник указывается как ${run.output.[OutputName]}
  • Если источник данных находится из тестового набора данных, источник указывается как ${data.[ColumnName]}

Примечание.

Если оценка не требует данных из набора данных, вам не нужно ссылаться на столбцы набора данных в разделе сопоставления входных данных, указывая, что выбор набора данных является необязательной конфигурацией. Выбор набора данных не влияет на результат оценки.

Описание входных данных

Чтобы напомнить, какие входные данные необходимы для вычисления метрик, можно добавить описание для каждого требуемого входного значения. При сопоставлении источников в пакетной отправке отображаются описания.

Чтобы добавить описания для каждого входного ввода, выберите "Показать описание " в разделе входных данных при разработке метода оценки. И вы можете выбрать "Скрыть описание", чтобы скрыть описание.

Затем это описание отображается при использовании этого метода оценки в пакетной отправке.

Выходные данные и метрики

Выходные данные оценки — это результаты, которые измеряют производительность проверяемого потока. Выходные данные обычно содержат метрики, такие как оценки, а также могут содержать текст по соображениям и предложениям.

Выходные данные оценки на уровне экземпляра

В рамках последовательной обработки каждый образец из набора данных обрабатывается по очереди, и создается выходная запись. Аналогичным образом, в большинстве случаев оценки есть метрика для каждого результата, что позволяет проверить, как поток работает для каждого отдельного элемента данных.

Чтобы записать оценку для каждого примера данных, вычислите оценку для каждого вывода и запишите оценку в виде выходных данных потока, задав его в разделе выходных данных. Этот интерфейс разработки совпадает с определением стандартного вывода потока.

Мы вычисляем эту оценку на line_process узле, который можно создать и изменить с нуля при создании по типу. Этот узел Python также можно заменить на узел LLM, чтобы использовать LLM для вычисления оценки.

При применении этого метода для оценки другого потока оценку уровня экземпляра можно просмотреть на вкладке Обзор и результаты.

Узел ведения журнала метрик и агрегирования

Кроме того, важно также предоставить общую оценку выполнения. Вы можете проверить "задать как агрегирование" узла Python в потоке оценки, чтобы превратить его в узел "уменьшить", что позволяет узлу принимать входные данные в виде списка и обрабатывать их в пакетном режиме.

Таким образом, можно вычислить и обработать все оценки каждого выходного потока и вычислить общий результат для каждого варианта.

Метрики можно записывать в узел агрегирования с помощью запроса flow_sdk.log_metrics(). Метрики должны быть числовыми (float/int). Ведение журнала метрик типа строк не поддерживается.

Мы вычисляем эту оценку на aggregate узле, который можно создать и изменить с нуля при создании по типу. Вы также можете заменить этот узел Python на узел LLM, чтобы использовать LLM для вычисления оценки. См. следующий пример использования log_metric API в потоке оценки:

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

Как вы назвали эту функцию на узле Python, ее не нужно назначать в другом месте, и вы можете просмотреть метрики позже. При использовании этого метода оценки в пакетном запуске оценку на уровне экземпляра можно посмотреть на вкладке «Обзор-метрики»>.

Дальнейшие действия