[Perf] Fix slow hasattr in CUDAGraphWrapper.__getattr__ (#37425)

Signed-off-by: 智鸣 <hzm414167@alibaba-inc.com>
This commit is contained in:
Ziming Huang
2026-03-19 15:43:48 +08:00
committed by GitHub
parent 354cd580d5
commit d3cc379567
2 changed files with 15 additions and 8 deletions

View File

@@ -189,6 +189,7 @@ class CUDAGraphWrapper:
self.first_run_finished = False
self.is_debugging_mode = envs.VLLM_LOGGING_LEVEL == "DEBUG"
self._runnable_str = str(runnable) if self.is_debugging_mode else None
# assert runtime_mode is not NONE(no cudagraph), otherwise, we don't
# need to initialize a CUDAGraphWrapper.
@@ -211,10 +212,12 @@ class CUDAGraphWrapper:
# allow accessing the attributes of the runnable.
if hasattr(self.runnable, key):
return getattr(self.runnable, key)
raise AttributeError(
f"Attribute {key} not exists in the runnable of "
f"cudagraph wrapper: {self.runnable}"
)
if self.is_debugging_mode:
raise AttributeError(
f"Attribute {key} not exists in the runnable of "
f"cudagraph wrapper: {self._runnable_str}"
)
raise AttributeError
def unwrap(self) -> Callable[..., Any]:
# in case we need to access the original runnable.

View File

@@ -119,6 +119,8 @@ class UBatchWrapper:
self.sm_control = self._create_sm_control_context(vllm_config)
self.device = device
self.is_debugging_mode = envs.VLLM_LOGGING_LEVEL == "DEBUG"
self._runnable_str = str(runnable) if self.is_debugging_mode else None
@property
def graph_pool(self):
@@ -170,10 +172,12 @@ class UBatchWrapper:
# allow accessing the attributes of the runnable.
if hasattr(self.runnable, key):
return getattr(self.runnable, key)
raise AttributeError(
f"Attribute {key} not exists in the runnable of "
f"cudagraph wrapper: {self.runnable}"
)
if self.is_debugging_mode:
raise AttributeError(
f"Attribute {key} not exists in the runnable of "
f"cudagraph wrapper: {self._runnable_str}"
)
raise AttributeError
def unwrap(self) -> Callable:
# in case we need to access the original runnable.