nav-img
Evolution

Мониторинг 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).

  • Running — запросы, выполняющиеся на GPU.

  • Waiting — запросы в очереди.

  • Swapped — запросы, выгруженные в CPU (deprecated в V1).

Time To First Token Latency (1m)

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

Показывает задержку от отправки запроса до получения первого токена ответа. Критично для интерактивных приложений.

Время до первого токена в секундах.

Cache Utilization

Использование KV-кэша GPU и CPU.

Отображает эффективность использования кэша ключей и значений (KV-cache), который критичен для производительности vLLM.

  • GPU Cache — использование GPU KV-кэша (%).

  • CPU Cache — использование CPU KV-кэша (%, deprecated в V1).

Finish Reason (1m)

Причины завершения запросов за последнюю минуту.

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

Количество запросов по причинам завершения.

Queue Time (1m)

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

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

Время ожидания в очереди в секундах.

Requests Prefill and Decode Time (1m)

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

Показывает время, потраченное на обработку входных токенов (prefill) и генерацию выходных токенов (decode).

  • Prefill Time — время обработки входных токенов.

  • Decode Time — время генерации выходных токенов.

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

Количество успешно обработанных запросов.

  • finished_reason — причина завершения (stop, length, error).

Анализ качества обработки запросов и причин завершения

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

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

E2E Request Latency

Название

Тип

Описание

Лейблы / Интервалы

Назначение

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

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-времени обработки запросов.

Лейблы:

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

Интервалы:

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]))

Time To First Token

Название

Тип

Описание

Интервалы

Назначение

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

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

Time Per Output Token

Название

Тип

Описание

Интервалы

Назначение

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

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

Queue Time

Название

Тип

Описание

Интервалы

Назначение

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

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

Метрики фаз обработки

Prefill Time

Название

Тип

Описание

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

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])

Decode Time

Название

Тип

Описание

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

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])

Метрики токенов в запросах

Prompt Tokens

Название

Тип

Описание

Интервалы

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

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

Generation Tokens

Название

Тип

Описание

Интервалы

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

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-кэша.

  • block_size — размер блока кэша;

  • cache_dtype — тип данных кэша;

  • gpu_memory_utilization — использование GPU памяти;

  • num_cpu_blocks — количество CPU блоков;

  • num_gpu_blocks — количество GPU блоков;

  • sliding_window — размер скользящего окна.

Мониторинг настроек кэша и конфигурации системы.

Общие лейблы

Все 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])