Для чистого Markdown-содержимого этой страницы добавьте
.mdк этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Prometheus
Общие сведения о возможностях и настройке TensorRT-LLM см. в Reference Guide.
Overview
При запуске TensorRT-LLM через Dynamo метрики Prometheus от TensorRT-LLM автоматически передаются и становятся доступны на конечной точке Dynamo /metrics (порт по умолчанию 8081). Это позволяет получать и метрики движка TensorRT-LLM (с префиксом trtllm_), и метрики времени выполнения Dynamo (с префиксом dynamo_*) через одну конечную точку backend worker.
Дополнительные метрики производительности доступны через не-Prometheus API (см. ниже Non-Prometheus Performance Metrics).
На момент подготовки этой документации включенная версия TensorRT-LLM 1.1.0rc5 предоставляет 5 базовых метрик Prometheus. Обратите внимание, что префикс trtllm_ добавляет Dynamo.
Метрики времени выполнения Dynamo см. в Dynamo Metrics Guide.
Инструкции по настройке визуализации см. в Prometheus and Grafana Setup Guide.
Environment Variables
| Переменная | Описание | Значение по умолчанию | Пример |
|---|---|---|---|
DYN_SYSTEM_PORT | Порт системных метрик/состояния | -1 (отключено) | 8081 |
Быстрый старт
Это пример для одной машины.
Запуск observability-стека
Чтобы визуализировать метрики с помощью Prometheus и Grafana, запустите observability-стек. Инструкции см. в Observability Getting Started.
Запуск компонентов Dynamo
Запустите frontend и backend TensorRT-LLM, чтобы проверить метрики:
# Start frontend (default port 8000, override with --http-port or DYN_HTTP_PORT env var)
$ python -m dynamo.frontend
# Enable system metrics server on port 8081 and enable metrics collection
$ DYN_SYSTEM_PORT=8081 python -m dynamo.trtllm --model <model_name> --publish-events-and-metrics
Примечание: backend должен быть установлен в "pytorch" для сбора метрик (это проверяется в components/src/dynamo/trtllm/main.py). Интеграция TensorRT-LLM MetricsCollector тестировалась и валидировалась только с backend PyTorch.
Дождитесь запуска worker TensorRT-LLM, затем отправьте запросы и проверьте метрики:
# Отправьте запрос
curl -H 'Content-Type: application/json' \
-d '{
"model": "<model_name>",
"max_completion_tokens": 100,
"messages": [{"role": "user", "content": "Explain why Roger Federer is considered one of the greatest tennis players of all time"}]
}' \
http://localhost:8000/v1/chat/completions
# Проверьте метрики worker
curl -s localhost:8081/metrics | grep "^trtllm_"
Экспонируемые метрики
TensorRT-LLM публикует метрики в текстовом формате Prometheus Exposition Format на HTTP-эндпойнте /metrics. Все метрики движка TensorRT-LLM используют префикс trtllm_ и содержат метки (например, model_name, engine_type, finished_reason) для идентификации источника.
Примечание: TensorRT-LLM использует model_name вместо стандартной для Dynamo конвенции метки model.
Пример текста в формате Prometheus Exposition Format:
# HELP trtllm_request_success_total Count of successfully processed requests.
# TYPE trtllm_request_success_total counter
trtllm_request_success_total{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm",finished_reason="stop"} 150.0
trtllm_request_success_total{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm",finished_reason="length"} 5.0
# HELP trtllm_time_to_first_token_seconds Histogram of time to first token in seconds.
# TYPE trtllm_time_to_first_token_seconds histogram
trtllm_time_to_first_token_seconds_bucket{le="0.01",model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 0.0
trtllm_time_to_first_token_seconds_bucket{le="0.05",model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 12.0
trtllm_time_to_first_token_seconds_count{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 150.0
trtllm_time_to_first_token_seconds_sum{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 8.75
# HELP trtllm_e2e_request_latency_seconds Histogram of end to end request latency in seconds.
# TYPE trtllm_e2e_request_latency_seconds histogram
trtllm_e2e_request_latency_seconds_bucket{le="0.5",model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 25.0
trtllm_e2e_request_latency_seconds_count{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 150.0
trtllm_e2e_request_latency_seconds_sum{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 45.2
# HELP trtllm_time_per_output_token_seconds Histogram of time per output token in seconds.
# TYPE trtllm_time_per_output_token_seconds histogram
trtllm_time_per_output_token_seconds_bucket{le="0.1",model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 120.0
trtllm_time_per_output_token_seconds_count{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 150.0
trtllm_time_per_output_token_seconds_sum{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 12.5
# HELP trtllm_request_queue_time_seconds Histogram of time spent in WAITING phase for request.
# TYPE trtllm_request_queue_time_seconds histogram
trtllm_request_queue_time_seconds_bucket{le="1.0",model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 140.0
trtllm_request_queue_time_seconds_count{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 150.0
trtllm_request_queue_time_seconds_sum{model_name="Qwen/Qwen3-0.6B",engine_type="trtllm"} 32.1
Примечание: Конкретные метрики выше приведены как примеры и могут отличаться в зависимости от версии TensorRT-LLM. Всегда проверяйте фактическую конечную точку /metrics, чтобы увидеть текущий список.
Категории метрик
TensorRT-LLM предоставляет метрики в следующих категориях (все с префиксом trtllm_):
- Метрики запросов - отслеживание успешности запросов и измерение задержек
- Метрики производительности - время до первого токена (TTFT), время на выходной токен (TPOT) и время в очереди
Примечание: Метрики могут меняться между версиями TensorRT-LLM. Всегда проверяйте /metrics для вашей версии.
Доступные метрики
Через /metrics Dynamo (с префиксом trtllm_, добавленным Dynamo) для TensorRT-LLM версии 1.1.0rc5 доступны следующие метрики:
trtllm_request_success_total(Counter) — Количество успешно обработанных запросов по причине завершения- Labels:
model_name,engine_type,finished_reason
- Labels:
trtllm_e2e_request_latency_seconds(Histogram) — Сквозная задержка запроса (секунды)- Labels:
model_name,engine_type
- Labels:
trtllm_time_to_first_token_seconds(Histogram) — Время до первого токена, TTFT (секунды)- Labels:
model_name,engine_type
- Labels:
trtllm_time_per_output_token_seconds(Histogram) — Время на выходной токен, TPOT (секунды)- Labels:
model_name,engine_type
- Labels:
trtllm_request_queue_time_seconds(Histogram) — Время, которое запрос проводит в очереди (секунды)- Labels:
model_name,engine_type
- Labels:
Названия и доступность этих метрик могут меняться с обновлениями TensorRT-LLM.
TensorRT-LLM предоставляет метрики Prometheus через класс MetricsCollector (см. tensorrt_llm/metrics/collector.py).
Дополнительные операционные метрики
Dynamo добавляет следующие операционные метрики для worker TensorRT-LLM. Они дополняют нативные метрики движка выше наблюдаемостью на уровне запросов, которую сам движок не предоставляет. Все метрики используют префикс trtllm_ и автоматически включаются, когда задан --publish-events-and-metrics.
Константы имен метрик определены в lib/runtime/src/metrics/prometheus_names.rs (модуль trtllm_additional).
Отслеживание типа запроса
trtllm_request_type_image_total(Counter) — Общее количество запросов, содержащих изображение или мультимодальный контент- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
trtllm_request_type_structured_output_total(Counter) — Общее количество запросов, использующих guided/structured decoding (JSON, regex, grammar и т. д.)- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
Отслеживание отмен
trtllm_num_aborted_requests_total(Counter) — Общее количество прерванных/отменённых запросов- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
Метрики передачи KV cache (disaggregated deployments)
Эти метрики записываются только в disaggregated-развертываниях (prefill + decode), когда фактически происходит передача KV cache. Источником служит RequestPerfMetrics.timing_metrics TensorRT-LLM.
trtllm_kv_transfer_success_total(Counter) — Общее количество успешных передач KV cache (записывается на decode worker, когда он фиксирует ненулевое время передачи KV вRequestPerfMetrics.timing_metrics). Растёт синхронно с_countу связанных гистограммtrtllm_kv_transfer_latency_seconds/trtllm_kv_transfer_bytes/trtllm_kv_transfer_speed_gb_sдля тех же событий передачи.- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
trtllm_kv_transfer_latency_seconds(Histogram) — Задержка передачи KV cache на запрос в секундах- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
trtllm_kv_transfer_bytes(Histogram) — Размер передачи KV cache на запрос в байтах- Labels:
model_name,disaggregation_mode,engine_type - Buckets: 100KB, 500KB, 1MB, 5MB, 10MB, 50MB, 100MB, 500MB, 1GB, 5GB
- Labels:
trtllm_kv_transfer_speed_gb_s(Histogram) — Скорость передачи KV cache на запрос в GB/s- Labels:
model_name,disaggregation_mode,engine_type
- Labels:
Метрики производительности вне Prometheus
TensorRT-LLM предоставляет обширные данные о производительности помимо базовых метрик Prometheus. Сейчас они не экспонируются в Prometheus.
Доступно через ссылки на код
- Структура RequestPerfMetrics: tensorrt_llm/executor/result.py - метрики KV cache, тайминга и speculative decoding
- Статистика движка:
engine.llm.get_stats_async()- агрегированная статистика по системе - События KV Cache:
engine.llm.get_kv_cache_events_async()- операции с кэшем в реальном времени
Пример JSON-структуры RequestPerfMetrics
{
"timing_metrics": {
"arrival_time": 1234567890.123,
"first_scheduled_time": 1234567890.135,
"first_token_time": 1234567890.150,
"last_token_time": 1234567890.300,
"kv_cache_size": 2048576,
"kv_cache_transfer_start": 1234567890.140,
"kv_cache_transfer_end": 1234567890.145
},
"kv_cache_metrics": {
"num_total_allocated_blocks": 100,
"num_new_allocated_blocks": 10,
"num_reused_blocks": 90,
"num_missed_blocks": 5
},
"speculative_decoding": {
"acceptance_rate": 0.85,
"total_accepted_draft_tokens": 42,
"total_draft_tokens": 50
}
}
Примечание: Эти структуры актуальны на момент подготовки этой документации, но могут измениться с обновлениями TensorRT-LLM.
Детали реализации
- Интеграция Prometheus: использует класс
MetricsCollectorизtensorrt_llm.metrics(см. collector.py) - Интеграция Dynamo: использует функцию
register_engine_metrics_callback()сmetric_prefix_filter=["trtllm_"] - Конфигурация движка:
return_perf_metricsустанавливается вTrue, когда включен--publish-events-and-metrics - Инициализация: метрики появляются после завершения инициализации движка TensorRT-LLM
- Метаданные:
MetricsCollectorинициализируется с метаданными модели (model name, engine type)
Связанная документация
Метрики TensorRT-LLM
- См. раздел Non-Prometheus Performance Metrics выше для подробных данных о производительности и ссылок на исходный код
- TensorRT-LLM Metrics Collector - ссылка на исходный код
Метрики Dynamo
- Dynamo Metrics Guide - полная документация по метрикам времени выполнения Dynamo
- Prometheus and Grafana Setup - инструкции по настройке визуализации
- Метрики времени выполнения Dynamo (с префиксом
dynamo_*) доступны на той же конечной точке/metricsвместе с метриками TensorRT-LLM- Реализация:
lib/runtime/src/metrics.rs(метрики runtime на Rust) - Имена метрик:
lib/runtime/src/metrics/prometheus_names.rs(константы имен метрик) - Код интеграции:
components/src/dynamo/common/utils/prometheus.py- утилиты Prometheus и регистрация callback
- Реализация: