@@ -153,21 +153,28 @@ async def loop_for_fwd(self):
153153 processing_group_reqs = []
154154 images_need_infer = []
155155
156- def _recv_reqs (self ):
156+ async def _recv_reqs (self ):
157157 if self .remote_vit :
158158 recv_req : GroupReqIndexes = self .vit_receiver .recv_pyobj (zmq .NOBLOCK )
159159 # recv_req.multimodal_params.images[:]= [
160160 # img for img in recv_req.multimodal_params.images
161161 # if not self.cache_client.root.get_item_embed(img.uuid) # embed已存在的被丢弃 , ref +1
162162 # ]
163+ logger .info (f"Receive req { recv_req .group_req_id } , image_count:{ len (recv_req .multimodal_params .images )} " )
163164 uuids = [img .uuid for img in recv_req .multimodal_params .images ]
164165 already_embed = self .cache_client .root .get_items_embed (uuids )
166+ if all (already_embed ):
167+ return None
165168 token_nums = []
166169 for img , embed in zip (recv_req .multimodal_params .images , already_embed ):
167170 if not embed :
168171 uuids .append (img .uuid )
169172 token_nums .append (img .token_num )
170- self .cache_client .root .alloc (uuids , token_nums )
173+ while True :
174+ records = self .cache_client .root .alloc (uuids , token_nums )
175+ if records is not None :
176+ break
177+ await asyncio .sleep (0.1 )
171178 return recv_req
172179 else :
173180 return self .vit_receiver .recv_pyobj (zmq .NOBLOCK )
@@ -179,11 +186,11 @@ async def loop_for_netio_req(self):
179186 while True :
180187 try :
181188 for _ in range (self .visual_recv_max_count ):
182- recv_req : GroupReqIndexes = self ._recv_reqs ()
189+ recv_req : GroupReqIndexes = await self ._recv_reqs ()
190+ if recv_req is None :
191+ continue
183192 if isinstance (recv_req , GroupReqIndexes ):
184- # print(recv_req, flush=True)
185193 self .waiting_reqs .append (recv_req )
186- print (f"recv_req.multimodal_params is { recv_req .multimodal_params } " )
187194 else :
188195 assert False , f"Error Req Inf { recv_req } "
189196 self .visual_recv_max_count = min (self .visual_recv_max_count * 1.3 , 256 )
@@ -210,11 +217,21 @@ async def loop_for_fwd_visual_only(self):
210217 images_need_infer .append (img )
211218
212219 if len (images_need_infer ) == self .infer_batch_size :
220+ _t0 = time .perf_counter ()
213221 await self .infer_imgs (images_need_infer )
222+ logger .info (
223+ f"[visual] batch infer complete, image_count: { len (images_need_infer )} , "
224+ f"elapsed_time { (time .perf_counter ()- _t0 ) * 1000 } ms"
225+ )
214226 images_need_infer = []
215227
216228 if len (images_need_infer ) > 0 :
229+ _t1 = time .perf_counter ()
217230 await self .infer_imgs (images_need_infer )
231+ logger .info (
232+ f"[visual] batch infer complete, image_count:{ len (images_need_infer )} , "
233+ f"elapsed_time { (time .perf_counter ()- _t1 ) * 1000 } ms"
234+ )
218235 images_need_infer = []
219236 # 在这里release这个image,ref-1
220237 logger .info (f"req-id { visual_req .group_req_id } has been release ok" )
0 commit comments