nav-img
Evolution

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

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

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

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

Виджет

Описание

Легенда

E2E Request Latency (1m)

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

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

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

Inference Throughput (1m)

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

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

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

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

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

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

Название

Тип

Описание

Лейблы

Назначение

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

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

inference:model_run:mlserver:model_infer_request_duration_count

counter

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

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

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

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

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"} 1285

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

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 — версия модели.

Расчет среднего времени выполнения инференса и анализ производительности.

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"} 428.5

Среднее время инференса:

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

Общее время CPU, потраченное на инференс за час:

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"} 1285

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"} 245

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"} 3

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)

Инстансы с высокой нагрузкой (более 10 запросов)

inference:model_run:mlserver:rest_server_requests_in_progress > 10

Метрики времени выполнения 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"} 1285

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

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"} 428.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="1.0",method="POST",path="/v2/models/{model_name}/infer",status_code="200"} 1100

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"} 1285

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.

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"} 1245

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

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"} 40

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

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"} 27.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="0.1"} 850

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"} 1285

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

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

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

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

Общие лейблы

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

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

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

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

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

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

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

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

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

Алерт

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

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

Средняя задержка инференса > 5 секунд.

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

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

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

Размер очереди > 100 запросов.

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

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

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

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

  • Среднее время инференса:

    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)