Skip to content

Commit b673a36

Browse files
committed
fix vit transfer
1 parent 00b3b53 commit b673a36

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

lightllm/server/httpserver/manager.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ async def _alloc_resource(self, items, md5sums, token_nums, datas):
134134
uid_list.append(rec["id"])
135135

136136
# # If enable the vit/audio-llm disaggregation, no need to cache the data in the memory of the server
137-
# if self.enable_remote_vit:
138-
# return
137+
if self.enable_remote_vit:
138+
return
139139

140140
ready_flags = obtain(self.cache_client.root.get_items_data(uid_list))
141141
update_data_ids = []
@@ -512,6 +512,7 @@ async def transfer_to_next_module(
512512
group_req_objs.to_group_req_index(),
513513
protocol=pickle.HIGHEST_PROTOCOL,
514514
)
515+
515516
if not self.enable_multimodal or self.args.enable_remote_vit:
516517
self.send_to_router.send_pyobj(
517518
group_req_objs.to_group_req_index(),

lightllm/server/multimodal_params.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,7 @@ async def preload(self, request: Request):
5353

5454
def read(self):
5555
assert self._preload_data is not None
56-
ans = self._preload_data
57-
# self._preload_data = None
58-
# self._data = None
59-
return ans
56+
return self._preload_data
6057

6158
def to_dict(self):
6259
ret = {}
@@ -112,10 +109,11 @@ async def preload(self, request: Request):
112109

113110
def read(self):
114111
assert self._preload_data is not None
115-
ans = self._preload_data
112+
return self._preload_data
113+
114+
def free(self):
116115
self._preload_data = None
117116
self._data = None
118-
return ans
119117

120118
def to_dict(self):
121119
ret = {}
@@ -144,6 +142,12 @@ def __init__(
144142
self.audios = [AudioItem(**a) for a in audios]
145143
return
146144

145+
def free(self):
146+
for image in self.images:
147+
image.free()
148+
for audio in self.audios:
149+
audio.free()
150+
147151
async def verify_and_preload(self, request: Request):
148152
for image in self.images:
149153
await image.preload(request)

lightllm/server/visualserver/manager.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ async def loop_for_netio_req(self):
173173
for _ in range(self.visual_recv_max_count):
174174
recv_req: GroupReqIndexes = self.vit_receiver.recv_pyobj(zmq.NOBLOCK)
175175
if isinstance(recv_req, GroupReqIndexes):
176+
print(recv_req, flush=True)
176177
self.waiting_reqs.append(recv_req)
177178
else:
178179
assert False, f"Error Req Inf {recv_req}"

lightllm/server/visualserver/vit_connect.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,9 @@ def _update_vit_connections(self, id_to_vit_obj: Dict[int, VIT_Obj]):
131131
if id not in self.remote_vit_instances:
132132
try:
133133
socket = self.context.socket(zmq.PUSH)
134-
socket.connect(f"tcp://{vit_obj.host_ip_port}:{self.args.remote_vit_port}")
134+
print(vit_obj.host_ip_port, self.args.remote_vit_port, flush=True)
135+
ip, port = vit_obj.host_ip_port.split(":")
136+
socket.connect(f"tcp://{ip}:{port}")
135137
self.remote_vit_instances[id] = socket
136138
logger.info(f"Connected to VIT instance {id} at {vit_obj.host_ip_port}")
137139
except Exception as e:
@@ -158,11 +160,14 @@ async def send_to_vit(self, data, protocol=pickle.HIGHEST_PROTOCOL):
158160
"""
159161
instance = self._get_vit_instance()
160162
try:
163+
print(instance, flush=True)
161164
instance.send_pyobj(data, protocol=protocol)
162165
except Exception as e:
163166
logger.error(f"Failed to send to VIT instance: {e}")
164167
raise Exception(f"Failed to send to VIT instance: {e}")
165-
168+
finally:
169+
# 释放图片资源
170+
data.multimodal_params.free()
166171
await self._wait_visual_embed_ready()
167172

168173
async def vit_handle_loop(self):

0 commit comments

Comments
 (0)