Support profiling only prefill or decode without the other (#14182)
This commit is contained in:
@@ -693,6 +693,7 @@ async def start_profile_async(obj: Optional[ProfileReqInput] = None):
|
|||||||
profile_by_stage=obj.profile_by_stage,
|
profile_by_stage=obj.profile_by_stage,
|
||||||
merge_profiles=obj.merge_profiles,
|
merge_profiles=obj.merge_profiles,
|
||||||
profile_prefix=obj.profile_prefix,
|
profile_prefix=obj.profile_prefix,
|
||||||
|
profile_stages=obj.profile_stages,
|
||||||
)
|
)
|
||||||
return Response(
|
return Response(
|
||||||
content="Start profiling.\n",
|
content="Start profiling.\n",
|
||||||
|
|||||||
@@ -1389,6 +1389,8 @@ class ProfileReqInput(BaseReq):
|
|||||||
merge_profiles: bool = False
|
merge_profiles: bool = False
|
||||||
# The prefix of the profile filenames
|
# The prefix of the profile filenames
|
||||||
profile_prefix: Optional[str] = None
|
profile_prefix: Optional[str] = None
|
||||||
|
# Only profile these stages and ignore others
|
||||||
|
profile_stages: Optional[List[str]] = None
|
||||||
|
|
||||||
|
|
||||||
class ProfileReqType(Enum):
|
class ProfileReqType(Enum):
|
||||||
@@ -1409,6 +1411,7 @@ class ProfileReq(BaseReq):
|
|||||||
profile_id: Optional[str] = None
|
profile_id: Optional[str] = None
|
||||||
merge_profiles: bool = False
|
merge_profiles: bool = False
|
||||||
profile_prefix: Optional[str] = None
|
profile_prefix: Optional[str] = None
|
||||||
|
profile_stages: Optional[List[str]] = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ class SchedulerProfilerMixin:
|
|||||||
profile_id: str,
|
profile_id: str,
|
||||||
merge_profiles: bool = False,
|
merge_profiles: bool = False,
|
||||||
profile_prefix: str = "",
|
profile_prefix: str = "",
|
||||||
|
profile_stages: Optional[List[str]] = None,
|
||||||
) -> ProfileReqOutput:
|
) -> ProfileReqOutput:
|
||||||
if envs.SGLANG_PROFILE_V2.get():
|
if envs.SGLANG_PROFILE_V2.get():
|
||||||
return self._profile_manager.configure(
|
return self._profile_manager.configure(
|
||||||
@@ -82,6 +83,7 @@ class SchedulerProfilerMixin:
|
|||||||
profile_id=profile_id,
|
profile_id=profile_id,
|
||||||
merge_profiles=merge_profiles,
|
merge_profiles=merge_profiles,
|
||||||
profile_prefix=profile_prefix,
|
profile_prefix=profile_prefix,
|
||||||
|
profile_stages=profile_stages,
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.profile_in_progress:
|
if self.profile_in_progress:
|
||||||
@@ -377,6 +379,7 @@ class SchedulerProfilerMixin:
|
|||||||
recv_req.profile_id,
|
recv_req.profile_id,
|
||||||
recv_req.merge_profiles,
|
recv_req.merge_profiles,
|
||||||
recv_req.profile_prefix,
|
recv_req.profile_prefix,
|
||||||
|
recv_req.profile_stages,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.init_profile(
|
self.init_profile(
|
||||||
|
|||||||
@@ -325,6 +325,7 @@ class TokenizerCommunicatorMixin:
|
|||||||
profile_by_stage: bool = False,
|
profile_by_stage: bool = False,
|
||||||
merge_profiles: bool = False,
|
merge_profiles: bool = False,
|
||||||
profile_prefix: Optional[str] = None,
|
profile_prefix: Optional[str] = None,
|
||||||
|
profile_stages: Optional[List[str]] = None,
|
||||||
):
|
):
|
||||||
self.auto_create_handle_loop()
|
self.auto_create_handle_loop()
|
||||||
env_with_stack: bool = get_bool_env_var("SGLANG_PROFILE_WITH_STACK", "true")
|
env_with_stack: bool = get_bool_env_var("SGLANG_PROFILE_WITH_STACK", "true")
|
||||||
@@ -345,6 +346,7 @@ class TokenizerCommunicatorMixin:
|
|||||||
profile_id=str(time.time()),
|
profile_id=str(time.time()),
|
||||||
merge_profiles=merge_profiles,
|
merge_profiles=merge_profiles,
|
||||||
profile_prefix=profile_prefix,
|
profile_prefix=profile_prefix,
|
||||||
|
profile_stages=profile_stages,
|
||||||
)
|
)
|
||||||
return await self._execute_profile(req)
|
return await self._execute_profile(req)
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class ProfileManager:
|
|||||||
profile_id: str,
|
profile_id: str,
|
||||||
merge_profiles: bool,
|
merge_profiles: bool,
|
||||||
profile_prefix: str,
|
profile_prefix: str,
|
||||||
|
profile_stages: Optional[List[str]] = None,
|
||||||
):
|
):
|
||||||
# not supported yet
|
# not supported yet
|
||||||
assert start_step is None
|
assert start_step is None
|
||||||
@@ -81,7 +82,7 @@ class ProfileManager:
|
|||||||
|
|
||||||
self.stage_based_trigger.configure(
|
self.stage_based_trigger.configure(
|
||||||
num_steps=num_steps,
|
num_steps=num_steps,
|
||||||
interesting_stages=["prefill", "decode"],
|
interesting_stages=profile_stages or ["prefill", "decode"],
|
||||||
)
|
)
|
||||||
|
|
||||||
return ProfileReqOutput(success=True, message="Succeeded")
|
return ProfileReqOutput(success=True, message="Succeeded")
|
||||||
|
|||||||
Reference in New Issue
Block a user