Разработка потока оценки в Azure AI Studio
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Потоки оценки — это специальные типы потоков, которые оценивают, насколько хорошо выходные данные выполнения соответствуют определенным критериям и целям.
В потоке запросов можно настроить или создать собственный поток оценки, адаптированный к задачам и целям, а затем использовать его для оценки других потоков. В этом документе вы узнаете:
- Как разработать метод оценки.
- Общие сведения о входных данных, выходных данных и метриках ведения журнала для оценки потока запроса.
Начало разработки метода оценки
Существует два способа разработки собственных методов оценки:
Настройка встроенного потока оценки: изменение встроенного потока оценки.
- В разделе "Сервис" выберите поток запроса.
- Выберите "Создать", чтобы открыть мастер создания потока.
- В коллекции потоков в разделе "Изучение коллекции " выберите поток оценки для фильтрации по такому типу. Выберите пример и выберите "Клонировать ", чтобы выполнить настройку.
Создание нового потока оценки с нуля: разработка нового метода оценки с нуля.
- В разделе "Сервис" выберите поток запроса.
- Выберите "Создать", чтобы открыть мастер создания потока.
- В коллекции потоков в разделе "Создание по типу " в поле "Поток оценки" выберите "Создать ", а затем можно просмотреть шаблон потока оценки.
Общие сведения об оценке в потоке запросов
В потоке запроса поток — это последовательность узлов, которые обрабатывают входные данные и создают выходные данные. Потоки оценки также принимают необходимые входные данные и создают соответствующие выходные данные.
Ниже приведены некоторые специальные функции методов оценки:
- Они обычно выполняются после проверки выполнения и получают выходные данные из этого запуска.
- Помимо выходных данных тестового запуска, при необходимости они могут получать другой набор данных, который может содержать соответствующие истины земли.
- У них может быть узел агрегирования, который вычисляет общую производительность проверяемого потока на основе отдельных показателей.
- Они могут записывать метрики с помощью
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, ее не нужно назначать в другом месте, и вы можете просмотреть метрики позже. При использовании этого метода оценки в пакетном запуске оценка уровня экземпляра можно просмотреть на вкладке "Обзор-метрики>".