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


Мониторинг качества и использования токенов в развернутых приложениях с потоковой обработкой.

Это важно

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

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

Примечание.

Для более эффективного выполнения непрерывного мониторинга развернутых приложений, помимо prompt flow, рассмотрите возможность использования онлайн-оценок Azure AI.

С помощью мониторинга Azure AI для генеративных AI приложений можно отслеживать приложения в продакшене для использования токенов, качества генерации и операционных метрик.

Интеграция для мониторинга развертывания потока запросов позволяет выполнять следующие действия.

  • Соберите данные вывода рабочей среды из развернутого приложения потока запроса.
  • Применяйте метрики оценки ответственного искусственного интеллекта, такие как обоснованность, согласованность, беглость и релевантность, которые совместимы с метриками оценки потока запросов.
  • Мониторинг подсказок, завершения и общего использования токенов в каждом развертывании модели в потоке подсказок.
  • Отслеживайте операционные метрики, такие как количество запросов, задержка и частота ошибок.
  • Используйте предварительно настроенные оповещения и значения по умолчанию для выполнения мониторинга на регулярной основе.
  • Использование визуализаций данных и настройка расширенного поведения на портале Microsoft Foundry.

Предпосылки

Примечание.

Этот документ относится только к порталу Microsoft Foundry (классическая модель ).

Для этой функции необходимо использовать центральный проект . Проект Foundry не поддерживается. Узнайте , как узнать, какой тип проекта у меня есть? И создать центральный проект.

  • Поток команд, готовый к развертыванию. Если у вас его нет, см. статью "Разработка потока запроса".
  • Управление доступом на основе ролей Azure используется для предоставления доступа к операциям на портале Foundry. Для этой статьи вашей учетной записи пользователя должна быть назначена роль разработчика Azure AI в соответствующей группе ресурсов. Дополнительные сведения см. в разделе "Управление доступом на основе ролей" для Foundry.

Требования к метрикам мониторинга

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

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

Следующие модели GPT создают метрики мониторинга. Эти модели GPT поддерживаются с мониторингом и настроены в качестве ресурса Azure OpenAI:

  • GPT-3.5 Turbo
  • GPT-4
  • GPT-4-32k

Поддерживаемые метрики для мониторинга

Для мониторинга поддерживаются следующие метрики.

Метрика Описание
Заземленность Измеряет, насколько хорошо созданные модели ответы соответствуют данным из исходных данных (определяемый пользователем контекст).)
Уместность Измеряет степень, в которой созданные моделью ответы относятся к заданным вопросам и непосредственно связаны с заданными вопросами.
Согласованность Измеряет степень, в которой ответы, сгенерированные моделью, логически согласованы и связаны.
Беглость Измеряет грамматическую корректность ответа, предсказанного генеративным искусственным интеллектом.

Сопоставление имен столбцов

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

Имя входного столбца Определение Обязательный или необязательный
Вопрос Исходный запрос, который также называется входными данными или вопросом. Обязательно
Ответ Окончательное завершение вызова API, который возвращается, также называется выходными данными или ответами. Обязательно
Контекст Все данные контекста, отправляемые вызову API, вместе с исходным запросом. Например, если вы надеетесь получить результаты поиска только из определенных сертифицированных источников информации или веб-сайтов, можно определить этот контекст в шагах оценки. Необязательно

Параметры, необходимые для метрик

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

Метрика Вопрос Ответ Контекст
Согласованность Обязательно Обязательно -
Беглость Обязательно Обязательно -
Заземленность Обязательно Обязательно Обязательно
Уместность Обязательно Обязательно Обязательно

Сведения о конкретных требованиях к сопоставлению данных для каждой метрики см. в разделе "Требования к метрику запроса и ответа".

Настройка мониторинга для потока подсказок

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

Разверните ваше приложение процесса подсказок с инферентным анализом данных.

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

Подсказка

Так как вы можете настроить левую панель на портале Microsoft Foundry, вы можете увидеть другие элементы, отличные от указанных в этих шагах. Если вы не видите, что вы ищете, выберите ... Подробнее в нижней части левой панели.

  1. Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).

  2. Если вы еще не находитесь в проекте, выберите его.

    Примечание.

    Этот документ относится только к порталу Microsoft Foundry (классическая модель ).

    Для этой функции необходимо использовать центральный проект . Проект Foundry не поддерживается. Узнайте , как узнать, какой тип проекта у меня есть? И создать центральный проект.

  3. На левой панели выберите поток запроса.

  4. Выберите созданный ранее поток запроса.

    В этой статье предполагается, что вы создали поток запроса, готовый к развертыванию. Если у вас его нет, см. статью "Разработка потока запроса".

  5. Убедитесь, что поток выполняется успешно, и что необходимые входные и выходные данные настроены для метрик, которые необходимо оценить.

    Минимально необходимые параметры: вопрос/входные данные и ответ/выходные данные. Предоставление минимальных параметров обеспечивает только две метрики: согласованность и беглость. Настройте поток, как описано в разделе "Требования к метрикам мониторинга". В этом примере в качестве входных данных потока используется question (вопрос) и chat_history (контекст) и answer (Ответ) в качестве выходных данных потока.

  6. Выберите "Развернуть" , чтобы начать развертывание потока.

    Снимок экрана редактора потока сообщений с кнопкой

  7. В окне развертывания убедитесь в том, что сбор данных для вывода включен. Используйте этот параметр, чтобы бесшовно собирать данные вывода вашего приложения в Azure Blob Storage. Эта коллекция данных требуется для мониторинга.

    Снимок экрана: основные параметры мастера развертывания.

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

  9. На странице Проверка просмотрите конфигурацию развертывания и выберите Создать, чтобы развернуть поток.

    Снимок экрана: страница проверки в мастере развертывания со всеми параметрами завершена.

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

  10. Перейдите на вкладку "Тест" на странице развертывания. Затем протестируйте развертывание, чтобы убедиться, что оно работает правильно.

    Снимок экрана: страница тестирования развертывания.

    Для мониторинга требуется, чтобы по крайней мере одна точка данных была получена из источника, отличного от вкладки "Тест " в развертывании. Мы рекомендуем использовать REST API, доступный на вкладке "Использование, чтобы отправлять тестовые запросы в ваше развертывание. Дополнительные сведения о том, как отправить примеры запросов в развертывание, см. в статье Создание онлайн-развертывания.

Настройка мониторинга

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

  1. На левой панели перейдите в раздел "Мои активы>" Модели и конечные точки".

  2. Выберите развертывание потока подсказок, которое вы создали.

  3. В поле "Включить мониторинг качества генерации" выберите "Включить".

    Снимок экрана, показывающий страницу развертывания с акцентом на мониторинг качества генерации.

  4. Начните настраивать мониторинг, выбрав нужные метрики.

  5. Убедитесь, что имена столбцов сопоставляются из потока, как определено в сопоставлении имен столбцов.

  6. Выберите значения подключения Azure OpenAI и развертывания, которые вы хотите использовать для мониторинга вашего приложения с потоками подсказок.

  7. Выберите дополнительные параметры , чтобы просмотреть дополнительные параметры для настройки.

    Снимок экрана: столбцы, сопоставленные для метрик мониторинга.

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

    Снимок экрана: дополнительные параметры при сопоставлении столбцов для метрик мониторинга.

    Если сбор данных не включен для развертывания, создание монитора позволит собирать данные вывода результатов в ваше хранилище BLOB-объектов. Эта задача отключает развертывание на несколько минут.

  9. Нажмите кнопку "Создать", чтобы создать монитор.

Потребление результатов мониторинга

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

  1. В развертывании перейдите на вкладку "Мониторинг (предварительная версия"), чтобы просмотреть результаты мониторинга. В выбранном окне времени отображается обзор результатов мониторинга. Используйте средство выбора дат, чтобы изменить период времени мониторинга данных. В этом обзоре доступны следующие метрики:

    • Общее количество запросов: общее количество запросов, отправленных в развертывание в течение выбранного периода времени.
    • Общее количество маркеров: общее количество маркеров, используемых развертыванием в течение выбранного периода времени.
    • Количество маркеров запроса: количество маркеров запроса, используемых развертыванием в течение выбранного периода времени.
    • Количество маркеров завершения: количество маркеров завершения, используемых развертыванием в течение выбранного периода времени.
  2. Просмотрите метрики на вкладке "Использование маркеров ". Эта вкладка выбрана по умолчанию. Со временем можно просмотреть использование токенов приложения. Со временем вы также можете увидеть распределение токенов подсказки и завершения. Измените значение области Trendline, чтобы отслеживать все токены во всем приложении или использование токенов для конкретного внедрения, например GPT-4, используемого в вашем приложении.

    Снимок экрана, показывающий использование токенов на странице мониторинга развертывания.

  3. Перейдите на вкладку "Качество создания" , чтобы отслеживать качество приложения с течением времени. На диаграмме времени отображаются следующие метрики:

    • Число нарушений: число нарушений для заданной метрики, например, беглость, является суммой нарушений в течение выбранного периода времени. Нарушение метрики возникает при вычислении метрик, если вычисляемое значение для метрики ниже заданного порогового значения. По умолчанию метрики вычисляются ежедневно.
    • Средняя оценка: средняя оценка для заданной метрики, например, беглость, — это сумма показателей для всех экземпляров или запросов, разделенная на количество экземпляров или запросов в течение выбранного периода времени.

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

    Снимок экрана, на котором показана линия тренда качества генерации на странице мониторинга развертывания.

  4. На вкладке "Мониторинг ( предварительная версия) можно просмотреть полную таблицу всех примеров запросов, отправленных в развертывание в течение выбранного периода времени.

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

    Снимок экрана, показывающий кнопку

  5. Чтобы просмотреть сведения о трассировке запроса, в правой части строки выберите "Трассировка". Это представление предоставляет подробные сведения о трассировке запроса к вашему приложению.

    Снимок экрана, показывающий информацию о трассировке.

  6. Закройте представление трассировки.

  7. Чтобы просмотреть операционные метрики для развертывания в режиме реального времени, перейдите на вкладку "Операционная". Это представление поддерживает следующие операционные метрики:

    • Число запросов
    • Задержка
    • Уровень ошибок

    Снимок экрана, на котором показана операционная вкладка развертывания.

Результаты во вкладке Мониторинг (предварительная версия) в вашем развертывании предоставляют полезные сведения, которые помогают заранее улучшать производительность вашего приложения для обработки запросов.

Расширенная конфигурация мониторинга с помощью пакета SDK версии 2

Мониторинг также поддерживает расширенные параметры конфигурации с помощью пакета SDK версии 2. Поддерживаются следующие сценарии.

Включение мониторинга использования токенов

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

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    MonitorSchedule,
    CronTrigger,
    MonitorDefinition,
    ServerlessSparkCompute,
    MonitoringTarget,
    AlertNotification,
    GenerationTokenStatisticsSignal,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext

# Authentication package
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

# Update your Azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"

# These variables can be renamed but it is not necessary
monitor_name ="gen_ai_monitor_tokens" 
defaulttokenstatisticssignalname ="token-usage-signal" 

# Determine the frequency to run the monitor, and the emails to recieve email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["[email protected]", "[email protected]"]

ml_client = MLClient(
    credential=credential,
    subscription_id=subscription_id,
    resource_group_name=resource_group,
    workspace_name=project_name,
)

spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
    ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
    endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)

# Create an instance of a token statistic signal
token_statistic_signal = GenerationTokenStatisticsSignal()

monitoring_signals = {
    defaulttokenstatisticssignalname: token_statistic_signal,
}

monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)

model_monitor = MonitorSchedule(
    name = monitor_name,
    trigger=trigger_schedule,
    create_monitor=monitor_settings
)

ml_client.schedules.begin_create_or_update(model_monitor)

Включите мониторинг качества генерации

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

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    MonitorSchedule,
    CronTrigger,
    MonitorDefinition,
    ServerlessSparkCompute,
    MonitoringTarget,
    AlertNotification,
    GenerationSafetyQualityMonitoringMetricThreshold,
    GenerationSafetyQualitySignal,
    BaselineDataRange,
    LlmData,
)
from azure.ai.ml.entities._inputs_outputs import Input
from azure.ai.ml.constants import MonitorTargetTasks, MonitorDatasetContext

# Authentication package
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

# Update your Azure resources details
subscription_id = "INSERT YOUR SUBSCRIPTION ID"
resource_group = "INSERT YOUR RESOURCE GROUP NAME"
project_name = "INSERT YOUR PROJECT NAME" # This is the same as your Foundry project name
endpoint_name = "INSERT YOUR ENDPOINT NAME" # This is your deployment name without the suffix (e.g., deployment is "contoso-chatbot-1", endpoint is "contoso-chatbot")
deployment_name = "INSERT YOUR DEPLOYMENT NAME"
aoai_deployment_name ="INSERT YOUR AOAI DEPLOYMENT NAME"
aoai_connection_name = "INSERT YOUR AOAI CONNECTION NAME"

# These variables can be renamed but it is not necessary
app_trace_name = "app_traces"
app_trace_Version = "1"
monitor_name ="gen_ai_monitor_generation_quality" 
defaultgsqsignalname ="gsq-signal"

# Determine the frequency to run the monitor and the emails to receive email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["[email protected]", "[email protected]"]

ml_client = MLClient(
    credential=credential,
    subscription_id=subscription_id,
    resource_group_name=resource_group,
    workspace_name=project_name,
)

spark_compute = ServerlessSparkCompute(instance_type="standard_e4s_v3", runtime_version="3.3")
monitoring_target = MonitoringTarget(
    ml_task=MonitorTargetTasks.QUESTION_ANSWERING,
    endpoint_deployment_id=f"azureml:{endpoint_name}:{deployment_name}",
)

# Set thresholds for the passing rate (0.7 = 70%)
aggregated_groundedness_pass_rate = 0.7
aggregated_relevance_pass_rate = 0.7
aggregated_coherence_pass_rate = 0.7
aggregated_fluency_pass_rate = 0.7

# Create an instance of a gsq signal
generation_quality_thresholds = GenerationSafetyQualityMonitoringMetricThreshold(
    groundedness = {"aggregated_groundedness_pass_rate": aggregated_groundedness_pass_rate},
    relevance={"aggregated_relevance_pass_rate": aggregated_relevance_pass_rate},
    coherence={"aggregated_coherence_pass_rate": aggregated_coherence_pass_rate},
    fluency={"aggregated_fluency_pass_rate": aggregated_fluency_pass_rate},
)
input_data = Input(
    type="uri_folder",
    path=f"{endpoint_name}-{deployment_name}-{app_trace_name}:{app_trace_Version}",
)
data_window = BaselineDataRange(lookback_window_size="P7D", lookback_window_offset="P0D")
production_data = LlmData(
    data_column_names={"prompt_column": "question", "completion_column": "answer", "context_column": "context"},
    input_data=input_data,
    data_window=data_window,
)

gsq_signal = GenerationSafetyQualitySignal(
    connection_id=f"/subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{project_name}/connections/{aoai_connection_name}",
    metric_thresholds=generation_quality_thresholds,
    production_data=[production_data],
    sampling_rate=1.0,
    properties={
        "aoai_deployment_name": aoai_deployment_name,
        "enable_action_analyzer": "false",
        "azureml.modelmonitor.gsq_thresholds": '[{"metricName":"average_fluency","threshold":{"value":4}},{"metricName":"average_coherence","threshold":{"value":4}}]',
    },
)

monitoring_signals = {
    defaultgsqsignalname: gsq_signal,
}

monitor_settings = MonitorDefinition(
compute=spark_compute,
monitoring_target=monitoring_target,
monitoring_signals = monitoring_signals,
alert_notification=AlertNotification(emails=notification_emails_list),
)

model_monitor = MonitorSchedule(
    name = monitor_name,
    trigger=trigger_schedule,
    create_monitor=monitor_settings
)

ml_client.schedules.begin_create_or_update(model_monitor)

После создания монитора из пакета SDK можно использовать результаты мониторинга на портале Foundry.

  • Узнайте больше о том, что можно сделать в Foundry.
  • Получите ответы на часто задаваемые вопросы в разделе Foundry FAQ.