Мониторинг Model RUN vLLM
В этой статье описаны дашборды и виджеты, которые строятся по метрикам Model RUN vLLM ML Inference.
Дашборд мониторинга
Специализированный дашборд мониторинга содержит ключевые виджеты для контроля производительности vLLM-моделей.
Виджет |
Описание |
Легенда |
---|---|---|
E2E Request Latency (1m) |
Время ответа на запросы от начала до конца за последнюю минуту. Показывает полную задержку обработки запроса, включая время ожидания в очереди, обработки префикса (prefill) и генерации токенов (decode). |
Среднее время обработки запросов в секундах. |
Token Throughput (1m) |
Пропускная способность обработки токенов за последнюю минуту. Отображает количество обработанных токенов (входных и выходных) в единицу времени, характеризуя эффективность модели. |
Количество токенов в секунду. |
Time Per Output Token Latency (1m) |
Время генерации одного выходного токена за последнюю минуту. Ключевая метрика для оценки скорости генерации текста. Низкие значения означают более быструю генерацию. |
Время генерации одного токена в секундах. |
Scheduler State |
Состояние планировщика запросов vLLM. Показывает количество запросов в различных состояниях: выполняющиеся (running), ожидающие (waiting) и выгруженные в CPU (swapped). |
|
Time To First Token Latency (1m) |
Время до генерации первого токена за последнюю минуту. Показывает задержку от отправки запроса до получения первого токена ответа. Критично для интерактивных приложений. |
Время до первого токена в секундах. |
Cache Utilization |
Использование KV-кэша GPU и CPU. Отображает эффективность использования кэша ключей и значений (KV-cache), который критичен для производительности vLLM. |
|
Finish Reason (1m) |
Причины завершения запросов за последнюю минуту. Показывает статистику причин завершения: нормальная остановка (stop), достижение лимита токенов, ошибки. |
Количество запросов по причинам завершения. |
Queue Time (1m) |
Время ожидания запросов в очереди за последнюю минуту. Показывает, как долго запросы находятся в очереди перед началом обработки. |
Время ожидания в очереди в секундах. |
Requests Prefill and Decode Time (1m) |
Время обработки фаз prefill и decode за последнюю минуту. Показывает время, потраченное на обработку входных токенов (prefill) и генерацию выходных токенов (decode). |
|
Max Generation Token in Sequence Group [1m] |
Максимальное количество сгенерированных токенов в группе последовательностей за последнюю минуту. Показывает распределение длины генерируемых ответов. |
Количество сгенерированных токенов. |
Доступные метрики
vLLM предоставляет полный набор специализированных метрик для мониторинга всех аспектов работы языковых моделей. Все метрики экспортируются в формате Prometheus.
Метрики состояния планировщика
Название |
Тип |
Описание |
Назначение |
Пример метрики |
---|---|---|---|---|
inference:model_run:vllm:num_requests_running |
gauge |
Количество запросов, выполняющихся в данный момент на GPU. |
Мониторинг текущей нагрузки на GPU и планирование ресурсов. |
inference:model_run:vllm:num_requests_running{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
inference:model_run:vllm:num_requests_waiting |
gauge |
Количество запросов, ожидающих обработки в очереди. |
Анализ загруженности системы и настройка масштабирования. |
inference:model_run:vllm:num_requests_waiting{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
inference:model_run:vllm:num_requests_swapped |
gauge |
Количество запросов, выгруженных в CPU (deprecated в V1). |
Мониторинг эффективности использования памяти GPU. |
inference:model_run:vllm:num_requests_swapped{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
Метрики обработки токенов
Название |
Тип |
Описание |
Назначение |
Пример метрики |
Пример использования |
---|---|---|---|---|---|
inference:model_run:vllm:prompt_tokens_total |
counter |
Общее количество обработанных входных (prefill) токенов. |
Анализ объема входных данных и планирование ресурсов. |
inference:model_run:vllm:prompt_tokens_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 276.0 |
Скорость обработки входных токенов в секунду: rate(inference:model_run:vllm:prompt_tokens_total[5m]). |
inference:model_run:vllm:generation_tokens_total |
counter |
Общее количество сгенерированных выходных токенов. |
Анализ объема генерируемого контента и производительности. |
inference:model_run:vllm:generation_tokens_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 1560.0 |
Скорость генерации токенов в секунду: rate(inference:model_run:vllm:generation_tokens_total[5m]) Общая пропускная способность токенов: rate(inference:model_run:vllm:prompt_tokens_total[5m]) + rate(inference:model_run:vllm:generation_tokens_total[5m]) |
Метрики использования кэша
Название |
Тип |
Описание |
Назначение |
Пример метрики |
---|---|---|---|---|
inference:model_run:vllm:gpu_cache_usage_perc |
gauge |
Использование GPU KV-кэша в процентах (1.0 = 100 %). |
Мониторинг эффективности использования GPU памяти для KV-кэша. |
inference:model_run:vllm:gpu_cache_usage_perc{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
inference:model_run:vllm:cpu_cache_usage_perc |
gauge |
Использование CPU KV-кэша в процентах (deprecated в V1). |
Мониторинг использования CPU кэша в старых версиях. |
inference:model_run:vllm:cpu_cache_usage_perc{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
Метрики успешности запросов
Название |
Тип |
Описание |
Лейблы |
Назначение |
Пример метрики |
Пример использования |
---|---|---|---|---|---|---|
inference:model_run:vllm:request_success_total |
counter |
Количество успешно обработанных запросов. |
|
Анализ качества обработки запросов и причин завершения |
inference:model_run:vllm:request_success_total{finished_reason="stop",id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 13.0 |
RPS успешных запросов: rate(inference:model_run:vllm:request_success_total[5m]) Процент запросов, завершенных по лимиту токенов: rate(inference:model_run:vllm:request_success_total{finished_reason="length"}[5m]) / rate(inference:model_run:vllm:request_success_total[5m]) * 100 |
inference:model_run:vllm:num_preemptions_total |
counter |
Общее количество прерываний запросов планировщиком. |
Мониторинг стабильности работы планировщика vLLM. |
inference:model_run:vllm:num_preemptions_total{id="36872a52-973e-4643-8864-f11bcfabf939",instance="2476",name="model-run-mbstc-stiff"} 0.0 |
Метрики времени выполнения
Название |
Тип |
Описание |
Лейблы / Интервалы |
Назначение |
Пример использования |
---|---|---|---|---|---|
inference:model_run:vllm:e2e_request_latency_seconds_count |
counter |
Количество запросов для гистограммы E2E-латентности. |
Базовая метрика для расчета статистики полного времени обработки. |
||
inference:model_run:vllm:e2e_request_latency_seconds_sum |
counter |
Общее время обработки всех запросов от начала до конца (в секундах). |
Расчет среднего времени полной обработки запроса. |
Среднее E2E-время: rate(inference:model_run:vllm:e2e_request_latency_seconds_sum[5m]) / rate(inference:model_run:vllm:e2e_request_latency_seconds_count[5m]) |
|
inference:model_run:vllm:e2e_request_latency_seconds_bucket |
counter |
Гистограмма распределения E2E-времени обработки запросов. |
Лейблы:
Интервалы: 0.3, 0.5, 0.8, 1.0, 1.5, 2.0, 2.5, 5.0, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 60.0, +Inf |
95-й перцентиль E2E-латентности: histogram_quantile(0.95, rate(inference:model_run:vllm:e2e_request_latency_seconds_bucket[5m])) |
Название |
Тип |
Описание |
Интервалы |
Назначение |
Пример использования |
---|---|---|---|---|---|
inference:model_run:vllm:time_to_first_token_seconds_count |
counter |
Количество измерений времени до первого токена. |
|||
inference:model_run:vllm:time_to_first_token_seconds_sum |
counter |
Общее время до первого токена для всех запросов (в секундах). |
Среднее время до первого токена: rate(inference:model_run:vllm:time_to_first_token_seconds_sum[5m]) / rate(inference:model_run:vllm:time_to_first_token_seconds_count[5m]) |
||
inference:model_run:vllm:time_to_first_token_seconds_bucket |
counter |
Гистограмма времени до первого токена. |
0.001, 0.005, 0.01, 0.02, 0.04, 0.06, 0.08, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0, +Inf |
Название |
Тип |
Описание |
Интервалы |
Назначение |
Пример использования |
---|---|---|---|---|---|
inference:model_run:vllm:time_per_output_token_seconds_count |
counter |
Количество измерений времени на выходной токен. |
|||
inference:model_run:vllm:time_per_output_token_seconds_sum |
counter |
Общее время генерации всех выходных токенов (в секундах). |
Среднее время на токен: rate(inference:model_run:vllm:time_per_output_token_seconds_sum[5m]) / rate(inference:model_run:vllm:time_per_output_token_seconds_count[5m]) |
||
inference:model_run:vllm:time_per_output_token_seconds_bucket |
counter |
Гистограмма времени генерации одного выходного токена. |
0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 2.5, +Inf |
Название |
Тип |
Описание |
Интервалы |
Назначение |
Пример использования |
---|---|---|---|---|---|
inference:model_run:vllm:request_queue_time_seconds_count |
counter |
Количество измерений времени ожидания в очереди. |
|||
inference:model_run:vllm:request_queue_time_seconds_sum |
counter |
Общее время ожидания всех запросов в очереди (в секундах). |
Среднее время ожидания в очереди: rate(inference:model_run:vllm:request_queue_time_seconds_sum[5m]) / rate(inference:model_run:vllm:request_queue_time_seconds_count[5m]) |
||
inference:model_run:vllm:request_queue_time_seconds_bucket |
counter |
Гистограмма времени ожидания запросов в очереди |
0.3, 0.5, 0.8, 1.0, 1.5, 2.0, 2.5, 5.0, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 60.0, +Inf |
Метрики фаз обработки
Название |
Тип |
Описание |
Пример использования |
---|---|---|---|
inference:model_run:vllm:request_prefill_time_seconds_count |
counter |
Количество измерений времени обработки входных токенов (prefill). |
|
inference:model_run:vllm:request_prefill_time_seconds_sum |
counter |
Общее время обработки всех входных токенов (в секундах). |
Среднее время prefill-фазы: rate(inference:model_run:vllm:request_prefill_time_seconds_sum[5m]) / rate(inference:model_run:vllm:request_prefill_time_seconds_count[5m]) |
Название |
Тип |
Описание |
Пример использования |
---|---|---|---|
inference:model_run:vllm:request_decode_time_seconds_count |
counter |
Количество измерений времени генерации выходных токенов (decode). |
|
inference:model_run:vllm:request_decode_time_seconds_sum |
counter |
Общее время генерации всех выходных токенов (в секундах). |
Среднее время decode-фазы: rate(inference:model_run:vllm:request_decode_time_seconds_sum[5m]) / rate(inference:model_run:vllm:request_decode_time_seconds_count[5m]) |
Метрики токенов в запросах
Название |
Тип |
Описание |
Интервалы |
Пример использования |
---|---|---|---|---|
inference:model_run:vllm:request_prompt_tokens_count |
counter |
Количество запросов для гистограммы входных токенов. |
||
inference:model_run:vllm:request_prompt_tokens_sum |
counter |
Общее количество входных токенов во всех запросах. |
Среднее количество входных токенов на запрос: rate(inference:model_run:vllm:request_prompt_tokens_sum[5m]) / rate(inference:model_run:vllm:request_prompt_tokens_count[5m]) |
|
inference:model_run:vllm:request_prompt_tokens_bucket |
counter |
Гистограмма распределения количества входных токенов в запросах. |
1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 200.0, 500.0, 1000.0, 2000.0, 5000.0, 10000.0, 20000.0, +Inf |
Название |
Тип |
Описание |
Интервалы |
Пример использования |
---|---|---|---|---|
inference:model_run:vllm:request_generation_tokens_count |
counter |
Количество запросов для гистограммы выходных токенов. |
||
inference:model_run:vllm:request_generation_tokens_sum |
counter |
Общее количество сгенерированных токенов во всех запросах. |
Среднее количество сгенерированных токенов на запрос: rate(inference:model_run:vllm:request_generation_tokens_sum[5m]) / rate(inference:model_run:vllm:request_generation_tokens_count[5m]) |
|
inference:model_run:vllm:request_generation_tokens_bucket |
counter |
Гистограмма распределения количества сгенерированных токенов. |
1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0, 200.0, 500.0, 1000.0, 2000.0, 5000.0, 10000.0, 20000.0, +Inf |
Метрики конфигурации
Название |
Тип |
Описание |
Лейблы |
Назначение |
---|---|---|---|---|
inference:model_run:vllm:cache_config_info |
gauge |
Информация о конфигурации KV-кэша. |
|
Мониторинг настроек кэша и конфигурации системы. |
Общие лейблы
Все vLLM-метрики содержат следующие идентификационные лейблы:
id — уникальный идентификатор инстанса модели;
instance — номер инстанса;
name — имя инстанса модели;
product_name — название продукта (inference:model-run);
product_type — тип продукта (ml_inference);
project_id — идентификатор проекта.
Алерты и пороговые значения
Ниже представлены рекомендуемые алерты для мониторинга vLLM-моделей.
Алерт |
Пороговые значения |
---|---|
Высокое время до первого токена |
Time To First Token > 2 секунд |
Высокое время на токен |
Time Per Output Token > 0.1 секунды |
Переполнение очереди |
Requests Waiting > 10 |
Высокое использование кэша |
GPU Cache Usage > 90 % |
Высокие прерывания |
Preemptions Rate > 1 в минуту |
Низкая пропускная способность |
Token Throughput < ожидаемого минимума |
Основные виджеты дашборда:
E2E Request Latency — rate(sum) / rate(count).
Token Throughput — rate(prompt_tokens_total) + rate(generation_tokens_total).
Time Per Output Token — rate(time_per_output_token_sum) / rate(time_per_output_token_count).
Scheduler State — num_requests_running, num_requests_waiting, num_requests_swapped.
Cache Utilization — gpu_cache_usage_perc * 100.
Анализ производительности:
Гистограммы латентности для выявления аномалий.
Анализ соотношения prefill/decode времени.
Корреляция между длиной входа и временем обработки.
Мониторинг эффективности использования KV-кэша.
Примеры запросов
Ниже приведены примеры PromQL-запросов для работы с vLLM-метриками:
Среднее время E2E обработки запроса:
rate(inference:model_run:vllm:e2e_request_latency_seconds_sum[5m]) / rate(inference:model_run:vllm:e2e_request_latency_seconds_count[5m])
Пропускная способность токенов в секунду:
rate(inference:model_run:vllm:prompt_tokens_total[5m]) + rate(inference:model_run:vllm:generation_tokens_total[5m])
95-й перцентиль времени до первого токена:
histogram_quantile(0.95, rate(inference:model_run:vllm:time_to_first_token_seconds_bucket[5m]))
Среднее время генерации одного токена:
rate(inference:model_run:vllm:time_per_output_token_seconds_sum[5m]) / rate(inference:model_run:vllm:time_per_output_token_seconds_count[5m])
Процент запросов, завершенных по лимиту длины:
rate(inference:model_run:vllm:request_success_total{finished_reason="length"}[5m]) / rate(inference:model_run:vllm:request_success_total[5m]) * 100
Использование GPU KV-кэша в процентах:
inference:model_run:vllm:gpu_cache_usage_perc * 100
Текущая загруженность планировщика:
inference:model_run:vllm:num_requests_running + inference:model_run:vllm:num_requests_waiting
Соотношение времени prefill к decode:
rate(inference:model_run:vllm:request_prefill_time_seconds_sum[5m]) / rate(inference:model_run:vllm:request_decode_time_seconds_sum[5m])
- Дашборд мониторинга
- Доступные метрики
- Алерты и пороговые значения
- Примеры запросов