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


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

Внимание

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

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

Примечание.

Чтобы улучшить способ непрерывного мониторинга развернутых приложений (кроме потока запросов), рассмотрите возможность использования онлайн-оценки ИИ Azure.

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

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

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

Необходимые компоненты

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

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

  • Проект Azure AI Foundry.

  • Поток запроса, готовый к развертыванию. Если у вас его нет, см. статью "Разработка потока запроса".

  • Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям на портале Azure AI Foundry. Чтобы выполнить действия, описанные в этой статье, учетная запись пользователя должна быть назначена роли разработчика ИИ Azure в группе ресурсов. Дополнительные сведения о разрешениях см . на портале Azure AI Foundry с помощью управления доступом на основе ролей.

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

Метрики мониторинга создаются определенными языковыми моделями GPT, настроенными с определенными инструкциями по оценке (шаблонами запросов). Эти модели служат моделями оценщика для задач последовательности и последовательности. Использование этого метода для создания метрик мониторинга показывает сильные эмпирические результаты и высокую корреляцию с человеческим решением по сравнению со стандартными метриками оценки ИИ. Дополнительные сведения об оценке потока запроса см. в статье "Отправка массового теста" и оценка потока и оценки и мониторинга метрик для создания искусственного интеллекта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Развертывание приложения потока запроса с помощью сбора данных вывода

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

  1. Войдите в Azure AI Foundry.

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

  3. Выберите поток запроса на панели навигации слева.

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

    Примечание.

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

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

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

    Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание.

    Если в развертывании нет включенной коллекции данных, создание монитора позволит собирать данные вывода в Хранилище BLOB-объектов Azure, что займет развертывание в автономном режиме в течение нескольких минут.

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

Использование результатов мониторинга

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

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

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

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

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

    • Число запросов
    • Задержка
    • Error rate

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

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

Расширенная конфигурация мониторинга с помощью пакета 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 AI 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 = ["test@example.com", "def@example.com"]

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 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 AI 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 recieve email alerts
trigger_schedule = CronTrigger(expression="15 10 * * *")
notification_emails_list = ["test@example.com", "def@example.com"]

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 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 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 можно использовать результаты мониторинга на портале AI Foundry.

  • Дополнительные сведения о том, что можно сделать в Azure AI Foundry.
  • Ответы на часто задаваемые вопросы и ответы по Azure AI.