nav-img
Evolution

Мониторинг Model RUN Diffusers

В этой статье описаны дашборды и виджеты, которые строятся по метрикам Model RUN Diffusers ML Inference.

Дашборд мониторинга

Базовый дашборд мониторинга содержит ключевые виджеты для контроля производительности Diffusers-моделей.

Виджет

Описание

Легенда

E2E Request Latency (1m)

Время ответа на запросы инференса от начала до конца за последнюю минуту.

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

Среднее время обработки запросов инференса за минуту в секундах.

Inference Throughput (1m)

Пропускная способность инференса за последнюю минуту.

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

Количество запросов инференса в секунду за последнюю минуту.

Доступные метрики

MLServer предоставляет полный набор метрик для мониторинга всех аспектов работы Diffusers-моделей. Все метрики экспортируются в формате Prometheus.

Метрики времени выполнения инференса

Название

Тип

Описание

Лейблы

Назначение

Пример метрики

Пример использования

inference:model_run:mlserver:model_infer_request_duration_count

counter

Общее количество запросов инференса к модели генерации изображений.

  • model — имя модели;

  • version — версия модели.

Подсчет общего количества обработанных запросов генерации для анализа нагрузки на Diffusers-модели.

inference:model_run:mlserver:model_infer_request_duration_count{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",model="model-run-mbstc-stiff",version="None"} 485

Количество запросов генерации в секунду:

rate(inference:model_run:mlserver:model_infer_request_duration_count[5m])

Общее количество генераций за день:

increase(inference:model_run:mlserver:model_infer_request_duration_count[24h])

inference:model_run:mlserver:model_infer_request_duration_sum

counter

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

  • model — имя модели;

  • version — версия модели.

Расчет среднего времени генерации изображений и анализ производительности Diffusers-моделей.

inference:model_run:mlserver:model_infer_request_duration_sum{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",model="model-run-mbstc-stiff",version="None"} 2847.5

Среднее время генерации изображения:

rate(inference:model_run:mlserver:model_infer_request_duration_sum[5m]) / rate(inference:model_run:mlserver:model_infer_request_duration_count[5m])

Общее время GPU, потраченное на генерацию за час:

increase(inference:model_run:mlserver:model_infer_request_duration_sum[1h])

Метрики HTTP-запросов

Название

Тип

Описание

Лейблы

Назначение

Пример метрики

Пример использования

inference:model_run:mlserver:rest_server_requests_total

counter

Общее количество HTTP-запросов к серверу генеративной модели.

  • method — HTTP-метод (GET, POST);

  • path — путь запроса (/v2/models/{model_name}/ready, /v2/models/{model_name}/infer);

  • status_code — HTTP-код ответа (200, 400, 500, и т.д.).

Анализ общей нагрузки на HTTP API генеративных моделей и мониторинг качества обработки запросов.

inference:model_run:mlserver:rest_server_requests_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 485

inference:model_run:mlserver:rest_server_requests_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="GET",path="/v2/models/{model_name}/ready",status_code="200"} 95

RPS для запросов генерации:

rate(inference:model_run:mlserver:rest_server_requests_total{path="/v2/models/{model_name}/infer"}[5m])

Процент ошибочных запросов генерации:

(rate(inference:model_run:mlserver:rest_server_requests_total{status_code!="200"}[5m]) / rate(inference:model_run:mlserver:rest_server_requests_total[5m])) * 100

inference:model_run:mlserver:rest_server_requests_in_progress

gauge

Количество HTTP-запросов генерации, находящихся в данный момент в обработке.

method — HTTP-метод (GET, POST).

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

inference:model_run:mlserver:rest_server_requests_in_progress{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="POST"} 2

inference:model_run:mlserver:rest_server_requests_in_progress{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="GET"} 0

Текущая нагрузка на генеративную модель:

sum(inference:model_run:mlserver:rest_server_requests_in_progress)

Модели с высокой нагрузкой (больше пяти запросов для Diffusers):

inference:model_run:mlserver:rest_server_requests_in_progress > 5

Метрики времени выполнения HTTP-запросов

Название

Тип

Описание

Лейблы

Назначение

Пример метрики

Пример использования

inference:model_run:mlserver:rest_server_request_duration_seconds_count

counter

Количество HTTP-запросов генерации, сгруппированных по времени выполнения.

  • method — HTTP-метод;

  • path — путь запроса;

  • status_code — HTTP-код ответа.

Анализ количества запросов генерации для расчета статистики производительности.

inference:model_run:mlserver:rest_server_request_duration_seconds_count{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 485

Количество запросов генерации в секунду:

rate(inference:model_run:mlserver:rest_server_request_duration_seconds_count{path="/v2/models/{model_name}/infer"}[5m])

inference:model_run:mlserver:rest_server_request_duration_seconds_sum

counter

Общее время выполнения всех HTTP-запросов генерации в секундах.

  • method — HTTP-метод;

  • path — путь запроса;

  • status_code — HTTP-код ответа.

Расчет среднего времени выполнения HTTP-запросов генерации изображений.

inference:model_run:mlserver:rest_server_request_duration_seconds_sum{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 2847.5

Среднее время ответа HTTP API для генерации:

rate(inference:model_run:mlserver:rest_server_request_duration_seconds_sum[5m]) / rate(inference:model_run:mlserver:rest_server_request_duration_seconds_count[5m])

inference:model_run:mlserver:rest_server_request_duration_seconds_bucket

counter

Гистограмма распределения времени выполнения HTTP-запросов генерации.

Лейблы:

  • method — HTTP-метод;

  • path — путь запроса;

  • status_code — HTTP-код ответа;

  • le — верхняя граница временного интервала (в секундах).

Интервалы:

0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0, +Inf

Детальный анализ производительности генеративных моделей и расчет перцентилей времени генерации.

inference:model_run:mlserver:rest_server_request_duration_seconds_bucket{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",le="5.0",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 245

inference:model_run:mlserver:rest_server_request_duration_seconds_bucket{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",le="+Inf",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 485

95-й перцентиль времени генерации:

histogram_quantile(0.95, rate(inference:model_run:mlserver:rest_server_request_duration_seconds_bucket[5m]))

99-й перцентиль времени генерации:

histogram_quantile(0.99, rate(inference:model_run:mlserver:rest_server_request_duration_seconds_bucket[5m]))

Медианное время генерации:

histogram_quantile(0.5, rate(inference:model_run:mlserver:rest_server_request_duration_seconds_bucket[5m]))

Метрики успешности инференса

Название

Тип

Описание

Лейблы

Назначение

Пример метрики

Пример использования

inference:model_run:mlserver:model_infer_request_success_total

counter

Общее количество успешно выполненных запросов генерации изображений.

  • model — имя модели;

  • version — версия модели.

Мониторинг надежности генеративной модели и расчет SLA для Diffusers.

inference:model_run:mlserver:model_infer_request_success_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",model="model-run-mbstc-stiff",version="None"} 465

Количество успешных генераций в секунду:

rate(inference:model_run:mlserver:model_infer_request_success_total[5m])

Общий success rate генерации за день:

increase(inference:model_run:mlserver:model_infer_request_success_total[24h])

inference:model_run:mlserver:model_infer_request_failure_total

counter

Общее количество неуспешных запросов генерации изображений.

  • model — имя модели;

  • version— версия модели.

Выявление проблем в работе генеративной модели и настройка алертов.

inference:model_run:mlserver:model_infer_request_failure_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",model="model-run-mbstc-stiff",version="None"} 20

Количество ошибок генерации в секунду:

rate(inference:model_run:mlserver:model_infer_request_failure_total[5m])

Процент ошибок генерации:

(rate(inference:model_run:mlserver:model_infer_request_failure_total[5m]) / (rate(inference:model_run:mlserver:model_infer_request_success_total[5m]) + rate(inference:model_run:mlserver:model_infer_request_failure_total[5m]))) * 100

Метрики очереди запросов

Название

Тип

Описание

Лейблы

Назначение

Пример метрики

Пример использования

inference:model_run:mlserver:parallel_request_queue_sum

counter

Общее время ожидания всех запросов генерации в очереди в секундах.

Анализ эффективности системы очередей для длительных запросов генерации.

inference:model_run:mlserver:parallel_request_queue_sum{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff", product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652"} 45.0

Среднее время ожидания генерации в очереди:

rate(inference:model_run:mlserver:parallel_request_queue_sum[5m]) / rate(inference:model_run:mlserver:parallel_request_queue_count[5m]).

inference:model_run:mlserver:parallel_request_queue_bucket

counter

Гистограмма распределения времени ожидания в очереди запросов генерации.

Лейблы:

  • le — верхняя граница временного интервала (в секундах).

Интервалы:

0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0, +Inf

Детальный анализ производительности системы очередей для генеративных моделей и выявление bottlenecks.

inference:model_run:mlserver:parallel_request_queue_bucket{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",le="1.0"} 350

inference:model_run:mlserver:parallel_request_queue_bucket{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff",product_name="inference:model-run",product_type="ml_inference",project_id="ce9e120e-baf8-4c8f-90fb-552281af4652",le="+Inf"} 485

95-й перцентиль времени ожидания в очереди генерации:

histogram_quantile(0.95, rate(inference:model_run:mlserver:parallel_request_queue_bucket[5m]))

Запросы с долгим ожиданием генерации (больше 2 секунд):

inference:model_run:mlserver:parallel_request_queue_bucket{le="+Inf"} - inference:model_run:mlserver:parallel_request_queue_bucket{le="2.0"}

Общие лейблы

Все метрики MLServer содержат следующие идентификационные лейблы:

  • id — уникальный идентификатор инстанса модели;

  • instance — номер инстанса;

  • name — имя инстанса модели;

  • product_name — название продукта (inference:model-run);

  • product_type — тип продукта (ml_inference);

  • project_id — идентификатор проекта.

Алерты и пороговые значения

Ниже представлены рекомендуемые алерты для мониторинга Diffusers моделей.

Алерт

Пороговые значения

Высокая задержка

Средняя задержка инференса > 10 секунд (учитывая специфику генеративных моделей).

Низкая доступность

Процент успешных запросов < 95 %.

Высокая нагрузка на очередь

Размер очереди > 50 запросов (меньше чем для Transformers из-за более долгого времени обработки).

Ошибки готовности модели

status_code != 200 для /ready-эндпоинта.

Примеры запросов

Ниже приведены примеры PromQL-запросов для работы с метриками Diffusers-моделей.

  • Среднее время генерации изображения:

    rate(inference:model_run:mlserver:model_infer_request_duration_sum[5m]) / rate(inference:model_run:mlserver:model_infer_request_duration_count[5m])

  • RPS для запросов генерации:

    rate(inference:model_run:mlserver:rest_server_requests_total{path="/v2/models/{model_name}/infer"}[5m])

  • 95-й перцентиль времени генерации:

    histogram_quantile(0.95, rate(inference:model_run:mlserver:rest_server_request_duration_seconds_bucket[5m]))

  • Процент ошибок генерации:

    (rate(inference:model_run:mlserver:model_infer_request_failure_total[5m]) / (rate(inference:model_run:mlserver:model_infer_request_success_total[5m]) + rate(inference:model_run:mlserver:model_infer_request_failure_total[5m]))) * 100

  • Текущая нагрузка на генеративную модель:

    sum(inference:model_run:mlserver:rest_server_requests_in_progress)