Skip to content

Commit

Permalink
[Core] Avoid metrics log noise when idle (#8868)
Browse files Browse the repository at this point in the history
Signed-off-by: Russell Bryant <[email protected]>
  • Loading branch information
russellb authored Nov 19, 2024
1 parent 803f37e commit efa9084
Showing 1 changed file with 23 additions and 7 deletions.
30 changes: 23 additions & 7 deletions vllm/engine/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,11 @@ def get_throughput(tracked_stats: List[int], now: float,
class LoggingStatLogger(StatLoggerBase):
"""LoggingStatLogger is used in LLMEngine to log to Stdout."""

def __init__(self, *args, **kwargs) -> None:
super().__init__(*args, **kwargs)
self.last_prompt_throughput: Optional[float] = None
self.last_generation_throughput: Optional[float] = None

def log(self, stats: Stats) -> None:
"""Called by LLMEngine.
Logs to Stdout every self.local_interval seconds."""
Expand All @@ -445,8 +450,14 @@ def log(self, stats: Stats) -> None:
now=stats.now,
last_log=self.last_local_log)

# Log to stdout.
logger.info(
log_fn = logger.info
if not any((prompt_throughput, generation_throughput,
self.last_prompt_throughput,
self.last_generation_throughput)):
# Avoid log noise on an idle production system
log_fn = logger.debug

log_fn(
"Avg prompt throughput: %.1f tokens/s, "
"Avg generation throughput: %.1f tokens/s, "
"Running: %d reqs, Swapped: %d reqs, "
Expand All @@ -472,11 +483,16 @@ def log(self, stats: Stats) -> None:
self._format_spec_decode_metrics_str(
self.spec_decode_metrics))

# Reset tracked stats for next interval.
self.num_prompt_tokens = []
self.num_generation_tokens = []
self.last_local_log = stats.now
self.spec_decode_metrics = None
self._reset(stats, prompt_throughput, generation_throughput)

def _reset(self, stats, prompt_throughput, generation_throughput) -> None:
# Reset tracked stats for next interval.
self.num_prompt_tokens = []
self.num_generation_tokens = []
self.last_local_log = stats.now
self.spec_decode_metrics = None
self.last_prompt_throughput = prompt_throughput
self.last_generation_throughput = generation_throughput

def _format_spec_decode_metrics_str(
self, metrics: "SpecDecodeWorkerMetrics") -> str:
Expand Down

0 comments on commit efa9084

Please sign in to comment.