Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в дополнительных условиях использования для предварительных версий Microsoft Azure.
Мониторинг приложений, развернутых в рабочей среде, является важной частью жизненного цикла создания приложений ИИ. Изменения в поведении данных и потребителей могут повлиять на ваше приложение с течением времени. Изменения могут привести к устаревшим системам, которые негативно влияют на бизнес-результаты. Такие системы предоставляют организациям риски соответствия, экономической и репутации.
Примечание.
Для более эффективного выполнения непрерывного мониторинга развернутых приложений, помимо prompt flow, рассмотрите возможность использования онлайн-оценок Azure AI.
С помощью мониторинга Azure AI для генеративных AI приложений можно отслеживать приложения в продакшене для использования токенов, качества генерации и операционных метрик.
Интеграция для мониторинга развертывания потока запросов позволяет выполнять следующие действия.
- Соберите данные вывода рабочей среды из развернутого приложения потока запроса.
- Применяйте метрики оценки ответственного искусственного интеллекта, такие как обоснованность, согласованность, беглость и релевантность, которые совместимы с метриками оценки потока запросов.
- Мониторинг подсказок, завершения и общего использования токенов в каждом развертывании модели в потоке подсказок.
- Отслеживайте операционные метрики, такие как количество запросов, задержка и частота ошибок.
- Используйте предварительно настроенные оповещения и значения по умолчанию для выполнения мониторинга на регулярной основе.
- Использование визуализаций данных и настройка расширенного поведения на портале Microsoft Foundry.
Предпосылки
Примечание.
Этот документ относится только к порталу Microsoft Foundry (классическая модель ).
Для этой функции необходимо использовать центральный проект . Проект Foundry не поддерживается. Узнайте , как узнать, какой тип проекта у меня есть? И создать центральный проект.
- Учетная запись Azure с активной подпиской. Если у вас его нет, создайте бесплатную учетную запись Azure, которая включает бесплатную пробную подписку.
- Если у вас нет одного, создайте проект на основе концентратора.
- Поток команд, готовый к развертыванию. Если у вас его нет, см. статью "Разработка потока запроса".
- Управление доступом на основе ролей Azure используется для предоставления доступа к операциям на портале Foundry. Для этой статьи вашей учетной записи пользователя должна быть назначена роль разработчика Azure AI в соответствующей группе ресурсов. Дополнительные сведения см. в разделе "Управление доступом на основе ролей" для Foundry.
Требования к метрикам мониторинга
Предварительно обученные языковые модели генеративных преобразователей (GPT) генерируют метрики мониторинга, которые настраиваются с помощью определённых инструкций по оценке или шаблонов запросов. Эти модели служат оценочными моделями для задач преобразования последовательностей.
Использование этого метода для создания метрик мониторинга показывает сильные эмпирические результаты и высокую корреляцию с человеческим решением по сравнению со стандартными метриками оценки искусственного интеллекта. Дополнительные сведения об оценке потока подсказок см. в статьях Отправка пакетного теста и оценка потока и Наблюдаемость в созданном ИИ.
Следующие модели GPT создают метрики мониторинга. Эти модели GPT поддерживаются с мониторингом и настроены в качестве ресурса Azure OpenAI:
- GPT-3.5 Turbo
- GPT-4
- GPT-4-32k
Поддерживаемые метрики для мониторинга
Для мониторинга поддерживаются следующие метрики.
| Метрика | Описание |
|---|---|
| Заземленность | Измеряет, насколько хорошо созданные модели ответы соответствуют данным из исходных данных (определяемый пользователем контекст).) |
| Уместность | Измеряет степень, в которой созданные моделью ответы относятся к заданным вопросам и непосредственно связаны с заданными вопросами. |
| Согласованность | Измеряет степень, в которой ответы, сгенерированные моделью, логически согласованы и связаны. |
| Беглость | Измеряет грамматическую корректность ответа, предсказанного генеративным искусственным интеллектом. |
Сопоставление имен столбцов
При создании потока убедитесь, что имена столбцов сопоставлены. Следующие имена входных столбцов данных используются для измерения безопасности и качества создания данных.
| Имя входного столбца | Определение | Обязательный или необязательный |
|---|---|---|
| Вопрос | Исходный запрос, который также называется входными данными или вопросом. | Обязательно |
| Ответ | Окончательное завершение вызова API, который возвращается, также называется выходными данными или ответами. | Обязательно |
| Контекст | Все данные контекста, отправляемые вызову API, вместе с исходным запросом. Например, если вы надеетесь получить результаты поиска только из определенных сертифицированных источников информации или веб-сайтов, можно определить этот контекст в шагах оценки. | Необязательно |
Параметры, необходимые для метрик
Параметры, настроенные в ресурсе данных, определяют, какие метрики можно создать, в соответствии с этой таблицей.
| Метрика | Вопрос | Ответ | Контекст |
|---|---|---|---|
| Согласованность | Обязательно | Обязательно | - |
| Беглость | Обязательно | Обязательно | - |
| Заземленность | Обязательно | Обязательно | Обязательно |
| Уместность | Обязательно | Обязательно | Обязательно |
Сведения о конкретных требованиях к сопоставлению данных для каждой метрики см. в разделе "Требования к метрику запроса и ответа".
Настройка мониторинга для потока подсказок
Чтобы настроить мониторинг для приложения потока подсказок, разверните его с функцией сбора данных для вывода. Затем настройте мониторинг развернутого приложения.
Разверните ваше приложение процесса подсказок с инферентным анализом данных.
В этом разделе объясняется, как развернуть поток подсказок с включенным сбором данных для вывода. Дополнительные сведения см. в статье "Развертывание потока для вывода в режиме реального времени".
Подсказка
Так как вы можете настроить левую панель на портале Microsoft Foundry, вы можете увидеть другие элементы, отличные от указанных в этих шагах. Если вы не видите, что вы ищете, выберите ... Подробнее в нижней части левой панели.
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).
Если вы еще не находитесь в проекте, выберите его.
Примечание.
Этот документ относится только к порталу Microsoft Foundry (классическая модель ).
Для этой функции необходимо использовать центральный проект . Проект Foundry не поддерживается. Узнайте , как узнать, какой тип проекта у меня есть? И создать центральный проект.
На левой панели выберите поток запроса.
Выберите созданный ранее поток запроса.
В этой статье предполагается, что вы создали поток запроса, готовый к развертыванию. Если у вас его нет, см. статью "Разработка потока запроса".
Убедитесь, что поток выполняется успешно, и что необходимые входные и выходные данные настроены для метрик, которые необходимо оценить.
Минимально необходимые параметры: вопрос/входные данные и ответ/выходные данные. Предоставление минимальных параметров обеспечивает только две метрики: согласованность и беглость. Настройте поток, как описано в разделе "Требования к метрикам мониторинга". В этом примере в качестве входных данных потока используется
question(вопрос) иchat_history(контекст) иanswer(Ответ) в качестве выходных данных потока.Выберите "Развернуть" , чтобы начать развертывание потока.
В окне развертывания убедитесь в том, что сбор данных для вывода включен. Используйте этот параметр, чтобы бесшовно собирать данные вывода вашего приложения в Azure Blob Storage. Эта коллекция данных требуется для мониторинга.
Перейдите по шагам в окне развертывания, чтобы завершить настройку расширенных параметров.
На странице Проверка просмотрите конфигурацию развертывания и выберите Создать, чтобы развернуть поток.
По умолчанию все входные и выходные данные развернутого приложения вопросного потока собираются в объектное хранилище. При вызове развертывания данные собираются для используемого монитора.
Перейдите на вкладку "Тест" на странице развертывания. Затем протестируйте развертывание, чтобы убедиться, что оно работает правильно.
Для мониторинга требуется, чтобы по крайней мере одна точка данных была получена из источника, отличного от вкладки "Тест " в развертывании. Мы рекомендуем использовать REST API, доступный на вкладке "Использование, чтобы отправлять тестовые запросы в ваше развертывание. Дополнительные сведения о том, как отправить примеры запросов в развертывание, см. в статье Создание онлайн-развертывания.
Настройка мониторинга
В этом разделе вы узнаете, как настроить мониторинг для вашего развернутого приложения потока подсказок.
На левой панели перейдите в раздел "Мои активы>" Модели и конечные точки".
Выберите развертывание потока подсказок, которое вы создали.
В поле "Включить мониторинг качества генерации" выберите "Включить".
Начните настраивать мониторинг, выбрав нужные метрики.
Убедитесь, что имена столбцов сопоставляются из потока, как определено в сопоставлении имен столбцов.
Выберите значения подключения Azure OpenAI и развертывания, которые вы хотите использовать для мониторинга вашего приложения с потоками подсказок.
Выберите дополнительные параметры , чтобы просмотреть дополнительные параметры для настройки.
Настройте частоту выборки и пороговые значения для настроенных метрик. Укажите адреса электронной почты, которые должны получать оповещения, когда средняя оценка для заданной метрики ниже порогового значения.
Если сбор данных не включен для развертывания, создание монитора позволит собирать данные вывода результатов в ваше хранилище BLOB-объектов. Эта задача отключает развертывание на несколько минут.
Нажмите кнопку "Создать", чтобы создать монитор.
Потребление результатов мониторинга
После создания монитора он запускается ежедневно для вычисления метрик использования маркеров и метрик качества генерации.
В развертывании перейдите на вкладку "Мониторинг (предварительная версия"), чтобы просмотреть результаты мониторинга. В выбранном окне времени отображается обзор результатов мониторинга. Используйте средство выбора дат, чтобы изменить период времени мониторинга данных. В этом обзоре доступны следующие метрики:
- Общее количество запросов: общее количество запросов, отправленных в развертывание в течение выбранного периода времени.
- Общее количество маркеров: общее количество маркеров, используемых развертыванием в течение выбранного периода времени.
- Количество маркеров запроса: количество маркеров запроса, используемых развертыванием в течение выбранного периода времени.
- Количество маркеров завершения: количество маркеров завершения, используемых развертыванием в течение выбранного периода времени.
Просмотрите метрики на вкладке "Использование маркеров ". Эта вкладка выбрана по умолчанию. Со временем можно просмотреть использование токенов приложения. Со временем вы также можете увидеть распределение токенов подсказки и завершения. Измените значение области Trendline, чтобы отслеживать все токены во всем приложении или использование токенов для конкретного внедрения, например GPT-4, используемого в вашем приложении.
Перейдите на вкладку "Качество создания" , чтобы отслеживать качество приложения с течением времени. На диаграмме времени отображаются следующие метрики:
- Число нарушений: число нарушений для заданной метрики, например, беглость, является суммой нарушений в течение выбранного периода времени. Нарушение метрики возникает при вычислении метрик, если вычисляемое значение для метрики ниже заданного порогового значения. По умолчанию метрики вычисляются ежедневно.
- Средняя оценка: средняя оценка для заданной метрики, например, беглость, — это сумма показателей для всех экземпляров или запросов, разделенная на количество экземпляров или запросов в течение выбранного периода времени.
Нарушения качества создания показывают частоту нарушений в течение выбранного периода времени. Частота нарушений — это количество нарушений, разделенных на общее количество возможных нарушений. Пороговые значения метрик можно настроить в параметрах. По умолчанию метрики вычисляются ежедневно. Вы также можете настроить эту частоту в параметрах.
На вкладке "Мониторинг ( предварительная версия) можно просмотреть полную таблицу всех примеров запросов, отправленных в развертывание в течение выбранного периода времени.
Мониторинг задает частоту выборки по умолчанию на 10 %. Например, если 100 запросов отправляются в развертывание, из них отбирается 10 и используются для вычисления метрик качества генерации. Вы можете настроить частоту выборки в параметрах.
Чтобы просмотреть сведения о трассировке запроса, в правой части строки выберите "Трассировка". Это представление предоставляет подробные сведения о трассировке запроса к вашему приложению.
Закройте представление трассировки.
Чтобы просмотреть операционные метрики для развертывания в режиме реального времени, перейдите на вкладку "Операционная". Это представление поддерживает следующие операционные метрики:
- Число запросов
- Задержка
- Уровень ошибок
Результаты во вкладке Мониторинг (предварительная версия) в вашем развертывании предоставляют полезные сведения, которые помогают заранее улучшать производительность вашего приложения для обработки запросов.
Расширенная конфигурация мониторинга с помощью пакета 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.