2424from lightllm .utils .dist_utils import init_vision_distributed_env
2525from lightllm .utils .graceful_utils import graceful_registry
2626from lightllm .utils .envs_utils import get_env_start_args
27+ from lightllm .utils .profiler import ProcessProfiler
2728
2829
2930class VisualModelRpcServer (rpyc .Service ):
@@ -43,6 +44,9 @@ def exposed_init_model(self, kvargs):
4344 self .cache_client ._channel .stream .sock .setsockopt (socket .IPPROTO_TCP , socket .TCP_NODELAY , 1 )
4445 self .data_type = kvargs ["data_type" ]
4546
47+ prof_mode = get_env_start_args ().enable_profiling
48+ prof_name = f"lightllm-visual-vit_dp{ self .dp_rank_id } _tp{ self .tp_rank_id } "
49+ self .profiler = ProcessProfiler (mode = prof_mode , name = prof_name ) if prof_mode else None
4650 init_vision_distributed_env (kvargs )
4751 model_cfg , _ = PretrainedConfig .get_config_dict (weight_dir )
4852
@@ -116,6 +120,10 @@ def exposed_encode(self, images: List[ImageItem]):
116120 self .cache_client .root .set_items_embed (ids_to_set )
117121 return
118122
123+ def exposed_profiler_cmd (self , cmd_obj ):
124+ cmd_obj = obtain (cmd_obj )
125+ self .profiler .cmd (cmd_obj )
126+
119127
120128class VisualModelRpcClient :
121129 def __init__ (self , model_rpc , vit_tp , rpc_server_process = None ):
@@ -138,9 +146,11 @@ async def _func(*args, **kwargs):
138146
139147 self ._init_model = async_wrap (self .model .init_model )
140148 self ._encode = async_wrap (self .model .encode )
149+ self ._profiler_cmd = async_wrap (self .model .profiler_cmd )
141150 else :
142151 self ._init_model = self .model .exposed_init_model
143152 self ._encode = self .model .exposed_encode
153+ self ._profiler_cmd = self .model .exposed_profiler_cmd
144154 return
145155
146156 async def init_model (self , kvargs ):
@@ -158,6 +168,14 @@ async def encode(self, images: List[ImageItem]):
158168 else :
159169 return ans
160170
171+ async def profiler_cmd (self , cmd_obj ):
172+ ans : rpyc .AsyncResult = self ._profiler_cmd (cmd_obj )
173+ if self .use_rpc :
174+ await ans
175+ return
176+ else :
177+ return
178+
161179
162180def _init_env (port , device_id ):
163181 # 注册graceful 退出的处理
0 commit comments