SGLang Tracing: Supports propagating trace headers through sgl.Engine… (#15814)
Signed-off-by: Feng Su <sufeng@linux.alibaba.com>
This commit is contained in:
@@ -255,6 +255,9 @@ class GenerateReqInput(BaseReq, APIServingTimingMixin):
|
||||
# Whether to return entropy
|
||||
return_entropy: bool = False
|
||||
|
||||
# Propagates trace context via Engine.generate/async_generate
|
||||
external_trace_header: Optional[Dict] = None
|
||||
|
||||
# For EPD-disaggregated inference
|
||||
need_wait_for_image: Optional[bool] = None
|
||||
num_items_assigned: Optional[List] = None
|
||||
@@ -662,6 +665,7 @@ class GenerateReqInput(BaseReq, APIServingTimingMixin):
|
||||
custom_labels=self.custom_labels,
|
||||
return_bytes=self.return_bytes,
|
||||
return_entropy=self.return_entropy,
|
||||
external_trace_header=self.external_trace_header,
|
||||
http_worker_ipc=self.http_worker_ipc,
|
||||
**{
|
||||
field: getattr(self, field)
|
||||
@@ -796,8 +800,8 @@ class EmbeddingReqInput(BaseReq, APIServingTimingMixin):
|
||||
# For background responses (OpenAI responses API)
|
||||
background: bool = False
|
||||
|
||||
# tracing context
|
||||
trace_context: Optional[Dict] = None
|
||||
# Propagates trace context via Engine.encode/async_encode
|
||||
external_trace_header: Optional[Dict] = None
|
||||
|
||||
# The number of dimensions the resulting output embeddings should have. It is applicable for Matryoshka Embeddings.
|
||||
dimensions: Optional[int] = None
|
||||
@@ -878,6 +882,7 @@ class EmbeddingReqInput(BaseReq, APIServingTimingMixin):
|
||||
video_data=self.video_data[i] if self.video_data is not None else None,
|
||||
sampling_params=self.sampling_params[i],
|
||||
rid=self.rid[i],
|
||||
external_trace_header=self.external_trace_header,
|
||||
dimensions=self.dimensions,
|
||||
http_worker_ipc=self.http_worker_ipc,
|
||||
**{
|
||||
|
||||
@@ -461,7 +461,6 @@ class TokenizerManager(TokenizerCommunicatorMixin, TokenizerManagerMultiItemMixi
|
||||
self,
|
||||
obj: Union[GenerateReqInput, EmbeddingReqInput],
|
||||
request: Optional[fastapi.Request] = None,
|
||||
traceparent: Optional[str] = None,
|
||||
):
|
||||
created_time = obj.received_time if obj.received_time else time.time()
|
||||
self.auto_create_handle_loop()
|
||||
@@ -469,7 +468,7 @@ class TokenizerManager(TokenizerCommunicatorMixin, TokenizerManagerMultiItemMixi
|
||||
# Normalize the request
|
||||
obj.normalize_batch_and_arguments()
|
||||
if self.enable_trace:
|
||||
self._trace_request_start(obj, created_time, request, traceparent)
|
||||
self._trace_request_start(obj, created_time, request)
|
||||
if self.server_args.language_only:
|
||||
self._handle_epd_disaggregation_encode_request(obj)
|
||||
if self.server_args.tokenizer_worker_num > 1:
|
||||
@@ -2147,7 +2146,6 @@ class TokenizerManager(TokenizerCommunicatorMixin, TokenizerManagerMultiItemMixi
|
||||
obj: Union[GenerateReqInput, EmbeddingReqInput],
|
||||
created_time: Optional[float] = None,
|
||||
request: Optional[fastapi.Request] = None,
|
||||
traceparent: Optional[str] = None,
|
||||
):
|
||||
external_trace_header = None
|
||||
if request:
|
||||
@@ -2155,11 +2153,11 @@ class TokenizerManager(TokenizerCommunicatorMixin, TokenizerManagerMultiItemMixi
|
||||
trace_set_remote_propagate_context(request.headers["trace_context"])
|
||||
else:
|
||||
external_trace_header = extract_trace_headers(request.headers)
|
||||
elif traceparent:
|
||||
# When the request comes form the rust grpc server there isn't a
|
||||
# real request object but we still need to propagate the traceparent from
|
||||
# the traceparent that is explicitly passed in
|
||||
external_trace_header = {"traceparent": traceparent}
|
||||
elif obj.external_trace_header:
|
||||
# When the request comes form the rust grpc server or Engine there isn't a
|
||||
# real request object but we still need to propagate the trace context from
|
||||
# the trace context that is explicitly passed in
|
||||
external_trace_header = obj.external_trace_header
|
||||
|
||||
if obj.is_single:
|
||||
bootstrap_room = (
|
||||
|
||||
Reference in New Issue
Block a user