@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 2942970d44
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

[Metrics] Hide deprecated metrics with gpu_ prefix (#24245)

Signed-off-by: Mark McLoughlin <markmc@redhat.com>

Mark McLoughlin committed Sep 16, 2025 at 03:15 UTC 2942970d4462c1d938db4f142008e106702c0dc5
2 files changed +63 -46
tests/entrypoints/openai/test_metrics.py
+15 -6
@@ -232,6 +232,9 @@ EXPECTED_METRICS_V1 = [
232 "vllm:gpu_cache_usage_perc",
233 "vllm:gpu_prefix_cache_queries",
234 "vllm:gpu_prefix_cache_hits",
235 + "vllm:kv_cache_usage_perc",
236 + "vllm:prefix_cache_queries",
237 + "vllm:prefix_cache_hits",
238 "vllm:num_preemptions_total",
239 "vllm:prompt_tokens_total",
240 "vllm:generation_tokens_total",
@@ -277,6 +280,9 @@ EXPECTED_METRICS_V1 = [
280 ]
281
282 HIDDEN_DEPRECATED_METRICS: list[str] = [
283 + "vllm:gpu_cache_usage_perc",
284 + "vllm:gpu_prefix_cache_queries",
285 + "vllm:gpu_prefix_cache_hits",
286 "vllm:time_per_output_token_seconds_sum",
287 "vllm:time_per_output_token_seconds_bucket",
288 "vllm:time_per_output_token_seconds_count",
@@ -307,7 +313,7 @@ async def test_abort_metrics_reset(server: RemoteOpenAIServer,
313 client: openai.AsyncClient, use_v1: bool):
314
315 running_requests, waiting_requests, kv_cache_usage = (
310 - _get_running_metrics_from_api(server))
316 + _get_running_metrics_from_api(server, use_v1))
317
318 # Expect no running requests or kvcache usage
319 assert running_requests == 0
@@ -330,7 +336,7 @@ async def test_abort_metrics_reset(server: RemoteOpenAIServer,
336
337 # Check that we have running requests
338 running_requests, waiting_requests, kv_cache_usage = (
333 - _get_running_metrics_from_api(server))
339 + _get_running_metrics_from_api(server, use_v1))
340
341 # Expect running requests and kvcache usage
342 assert running_requests > 0
@@ -349,7 +355,7 @@ async def test_abort_metrics_reset(server: RemoteOpenAIServer,
355
356 # Verify running and waiting requests counts and KV cache usage are zero
357 running_requests_after, waiting_requests_after, kv_cache_usage_after = (
352 - _get_running_metrics_from_api(server))
358 + _get_running_metrics_from_api(server, use_v1))
359
360 assert running_requests_after == 0,\
361 (f"Expected 0 running requests after abort, got "
@@ -362,7 +368,7 @@ async def test_abort_metrics_reset(server: RemoteOpenAIServer,
368 f"{kv_cache_usage_after}")
369
370
365 -def _get_running_metrics_from_api(server: RemoteOpenAIServer):
371 +def _get_running_metrics_from_api(server: RemoteOpenAIServer, use_v1: bool):
372 """Return (running_count, waiting_count, kv_cache_usage)"""
373
374 response = requests.get(server.url_for("metrics"))
@@ -371,6 +377,9 @@ def _get_running_metrics_from_api(server: RemoteOpenAIServer):
377 # Verify running and waiting requests counts and KV cache usage are zero
378 running_requests, waiting_requests, kv_cache_usage = None, None, None
379
380 + kv_cache_usage_metric = ("vllm:kv_cache_usage_perc"
381 + if use_v1 else "vllm:gpu_cache_usage_perc")
382 +
383 for family in text_string_to_metric_families(response.text):
384 if family.name == "vllm:num_requests_running":
385 for sample in family.samples:
@@ -382,9 +391,9 @@ def _get_running_metrics_from_api(server: RemoteOpenAIServer):
391 if sample.name == "vllm:num_requests_waiting":
392 waiting_requests = sample.value
393 break
385 - elif family.name == "vllm:gpu_cache_usage_perc":
394 + elif family.name == kv_cache_usage_metric:
395 for sample in family.samples:
387 - if sample.name == "vllm:gpu_cache_usage_perc":
396 + if sample.name == kv_cache_usage_metric:
397 kv_cache_usage = sample.value
398 break
399
vllm/v1/metrics/loggers.py
+48 -40
@@ -202,40 +202,46 @@ class PrometheusStatLogger(StatLoggerBase):
202 #
203 # GPU cache
204 #
205 - # Deprecated in 0.9 - Renamed as vllm:kv_cache_usage_perc
206 - # TODO: in 0.10, only enable if show_hidden_metrics=True
207 - gauge_gpu_cache_usage = self._gauge_cls(
208 - name="vllm:gpu_cache_usage_perc",
209 - documentation=(
210 - "GPU KV-cache usage. 1 means 100 percent usage."
211 - "DEPRECATED: Use vllm:kv_cache_usage_perc instead."),
212 - multiprocess_mode="mostrecent",
213 - labelnames=labelnames)
214 - self.gauge_gpu_cache_usage = make_per_engine(gauge_gpu_cache_usage,
215 - engine_indexes,
216 - model_name)
217 -
218 - # Deprecated in 0.9 - Renamed as vllm:prefix_cache_queries
219 - # TODO: in 0.10, only enable if show_hidden_metrics=True
220 - counter_gpu_prefix_cache_queries = self._counter_cls(
221 - name="vllm:gpu_prefix_cache_queries",
222 - documentation=(
223 - "GPU prefix cache queries, in terms of number of queried"
224 - "tokens. DEPRECATED: Use vllm:prefix_cache_queries instead."),
225 - labelnames=labelnames)
226 - self.counter_gpu_prefix_cache_queries = make_per_engine(
227 - counter_gpu_prefix_cache_queries, engine_indexes, model_name)
228 -
229 - # Deprecated in 0.9 - Renamed as vllm:prefix_cache_hits
230 - # TODO: in 0.10, only enable if show_hidden_metrics=True
231 - counter_gpu_prefix_cache_hits = self._counter_cls(
232 - name="vllm:gpu_prefix_cache_hits",
233 - documentation=(
234 - "GPU prefix cache hits, in terms of number of cached "
235 - "tokens. DEPRECATED: Use vllm:prefix_cache_hits instead."),
236 - labelnames=labelnames)
237 - self.counter_gpu_prefix_cache_hits = make_per_engine(
238 - counter_gpu_prefix_cache_hits, engine_indexes, model_name)
205 + # Deprecated in 0.9.2 - Renamed as vllm:kv_cache_usage_perc
206 + # With 0.11.x you can enable with --show-hidden-metrics-for-version=0.10
207 + # TODO: remove in 0.12.0
208 + if self.show_hidden_metrics:
209 + gauge_gpu_cache_usage = self._gauge_cls(
210 + name="vllm:gpu_cache_usage_perc",
211 + documentation=(
212 + "GPU KV-cache usage. 1 means 100 percent usage."
213 + "DEPRECATED: Use vllm:kv_cache_usage_perc instead."),
214 + multiprocess_mode="mostrecent",
215 + labelnames=labelnames)
216 + self.gauge_gpu_cache_usage = make_per_engine(
217 + gauge_gpu_cache_usage, engine_indexes, model_name)
218 +
219 + # Deprecated in 0.9.2 - Renamed as vllm:prefix_cache_queries
220 + # With 0.11.x you can enable with --show-hidden-metrics-for-version=0.10
221 + # TODO: remove in 0.12.0
222 + if self.show_hidden_metrics:
223 + counter_gpu_prefix_cache_queries = self._counter_cls(
224 + name="vllm:gpu_prefix_cache_queries",
225 + documentation=(
226 + "GPU prefix cache queries, in terms of number of queried"
227 + "tokens. DEPRECATED: Use vllm:prefix_cache_queries instead."
228 + ),
229 + labelnames=labelnames)
230 + self.counter_gpu_prefix_cache_queries = make_per_engine(
231 + counter_gpu_prefix_cache_queries, engine_indexes, model_name)
232 +
233 + # Deprecated in 0.9.2 - Renamed as vllm:prefix_cache_hits
234 + # With 0.11.x you can enable with --show-hidden-metrics-for-version=0.10
235 + # TODO: remove in 0.12.0
236 + if self.show_hidden_metrics:
237 + counter_gpu_prefix_cache_hits = self._counter_cls(
238 + name="vllm:gpu_prefix_cache_hits",
239 + documentation=(
240 + "GPU prefix cache hits, in terms of number of cached "
241 + "tokens. DEPRECATED: Use vllm:prefix_cache_hits instead."),
242 + labelnames=labelnames)
243 + self.counter_gpu_prefix_cache_hits = make_per_engine(
244 + counter_gpu_prefix_cache_hits, engine_indexes, model_name)
245
246 gauge_kv_cache_usage = self._gauge_cls(
247 name="vllm:kv_cache_usage_perc",
@@ -509,15 +515,17 @@ class PrometheusStatLogger(StatLoggerBase):
515 self.gauge_scheduler_waiting[engine_idx].set(
516 scheduler_stats.num_waiting_reqs)
517
512 - self.gauge_gpu_cache_usage[engine_idx].set(
513 - scheduler_stats.kv_cache_usage)
518 + if self.show_hidden_metrics:
519 + self.gauge_gpu_cache_usage[engine_idx].set(
520 + scheduler_stats.kv_cache_usage)
521 self.gauge_kv_cache_usage[engine_idx].set(
522 scheduler_stats.kv_cache_usage)
523
517 - self.counter_gpu_prefix_cache_queries[engine_idx].inc(
518 - scheduler_stats.prefix_cache_stats.queries)
519 - self.counter_gpu_prefix_cache_hits[engine_idx].inc(
520 - scheduler_stats.prefix_cache_stats.hits)
524 + if self.show_hidden_metrics:
525 + self.counter_gpu_prefix_cache_queries[engine_idx].inc(
526 + scheduler_stats.prefix_cache_stats.queries)
527 + self.counter_gpu_prefix_cache_hits[engine_idx].inc(
528 + scheduler_stats.prefix_cache_stats.hits)
529
530 self.counter_prefix_cache_queries[engine_idx].inc(
531 scheduler_stats.prefix_cache_stats.queries)