Add spec_verify_calls_total metric for speculative decoding (#25689)
This commit is contained in:
@@ -2218,6 +2218,14 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
|
|||||||
):
|
):
|
||||||
cached_tokens_details = recv_obj.cached_tokens_details[i]
|
cached_tokens_details = recv_obj.cached_tokens_details[i]
|
||||||
|
|
||||||
|
spec_verify_ct = (
|
||||||
|
recv_obj.spec_verify_ct[i]
|
||||||
|
if hasattr(recv_obj, "spec_verify_ct")
|
||||||
|
and recv_obj.spec_verify_ct
|
||||||
|
and len(recv_obj.spec_verify_ct) > i
|
||||||
|
else 0
|
||||||
|
)
|
||||||
|
|
||||||
self.metrics_collector.observe_one_finished_request(
|
self.metrics_collector.observe_one_finished_request(
|
||||||
labels,
|
labels,
|
||||||
recv_obj.prompt_tokens[i],
|
recv_obj.prompt_tokens[i],
|
||||||
@@ -2226,6 +2234,7 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
|
|||||||
state.time_stats.get_e2e_latency(),
|
state.time_stats.get_e2e_latency(),
|
||||||
self._request_has_grammar(state.obj),
|
self._request_has_grammar(state.obj),
|
||||||
cached_tokens_details,
|
cached_tokens_details,
|
||||||
|
spec_verify_ct=spec_verify_ct,
|
||||||
)
|
)
|
||||||
|
|
||||||
def dump_requests(self, state: ReqState, out_dict: dict):
|
def dump_requests(self, state: ReqState, out_dict: dict):
|
||||||
|
|||||||
@@ -1342,6 +1342,11 @@ class TokenizerMetricsCollector:
|
|||||||
documentation="Number of generation tokens processed.",
|
documentation="Number of generation tokens processed.",
|
||||||
labelnames=labels.keys(),
|
labelnames=labels.keys(),
|
||||||
)
|
)
|
||||||
|
self.spec_verify_calls_total = Counter(
|
||||||
|
name="sglang:spec_verify_calls_total",
|
||||||
|
documentation="Number of speculative decoding verification calls.",
|
||||||
|
labelnames=labels.keys(),
|
||||||
|
)
|
||||||
|
|
||||||
default_bucket_prompt_tokens = [
|
default_bucket_prompt_tokens = [
|
||||||
100,
|
100,
|
||||||
@@ -1542,9 +1547,12 @@ class TokenizerMetricsCollector:
|
|||||||
e2e_latency: float,
|
e2e_latency: float,
|
||||||
has_grammar: bool,
|
has_grammar: bool,
|
||||||
cached_tokens_details: Optional[Dict[str, Any]] = None,
|
cached_tokens_details: Optional[Dict[str, Any]] = None,
|
||||||
|
spec_verify_ct: int = 0,
|
||||||
):
|
):
|
||||||
self.prompt_tokens_total.labels(**labels).inc(prompt_tokens)
|
self.prompt_tokens_total.labels(**labels).inc(prompt_tokens)
|
||||||
self.generation_tokens_total.labels(**labels).inc(generation_tokens)
|
self.generation_tokens_total.labels(**labels).inc(generation_tokens)
|
||||||
|
if spec_verify_ct > 0:
|
||||||
|
self.spec_verify_calls_total.labels(**labels).inc(spec_verify_ct)
|
||||||
|
|
||||||
# Report cached tokens with detailed source breakdown
|
# Report cached tokens with detailed source breakdown
|
||||||
if cached_tokens > 0:
|
if cached_tokens > 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user