Skip to content

Commit 16d4b34

Browse files
committed
[opt]Add check in wait_for_save
1 parent db42d37 commit 16d4b34

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

ucm/integration/vllm/ucm_connector.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,29 @@ def _release_dump_event_handle(self, pending_dump_task: PendingDumpTask) -> None
887887
self.device.destroy_event_handle(pending_dump_task.event_handle)
888888
pending_dump_task.event_handle = 0
889889

890+
def _poll_pending_dump_tasks(self) -> None:
891+
remaining_tasks: list[PendingDumpTask] = []
892+
for pending_dump_task in self._pending_dump_tasks:
893+
try:
894+
if not self.store.check(pending_dump_task.task):
895+
remaining_tasks.append(pending_dump_task)
896+
continue
897+
except Exception as e:
898+
logger.error(
899+
f"check dump kv cache failed. {type(e).__name__}: {e}"
900+
)
901+
remaining_tasks.append(pending_dump_task)
902+
continue
903+
904+
try:
905+
# Check does not consume the task handle. Wait is non-blocking
906+
# after completion and removes the task from the store.
907+
self._wait_pending_dump_task(pending_dump_task)
908+
except Exception as e:
909+
logger.error(f"wait for dump kv cache failed. {type(e).__name__}: {e}")
910+
911+
self._pending_dump_tasks = remaining_tasks
912+
890913
def _flush_pending_dump_tasks(self, request_ids: Optional[set[str]] = None) -> None:
891914
pending_dump_tasks = self._pending_dump_tasks
892915
self._pending_dump_tasks = []
@@ -919,6 +942,8 @@ def handle_preemptions(
919942

920943
def wait_for_save(self) -> None:
921944
# TODO support PP
945+
self._poll_pending_dump_tasks()
946+
922947
metadata = self._get_connector_metadata()
923948
assert isinstance(metadata, UCMConnectorMetadata)
924949
metadata_dump_request_ids = {
@@ -1242,6 +1267,7 @@ def save_kv_layer(
12421267
total_vllm_block_ids, layer_first=True
12431268
)
12441269
shard_indexs = [layer_id] * len(total_ucm_block_ids)
1270+
event_handle = 0
12451271
try:
12461272
layer_ptrs = np.ascontiguousarray(self.dump_total_ptrs[local_layer_id])
12471273
event_handle = self._get_dump_event_handle()
@@ -1250,7 +1276,9 @@ def save_kv_layer(
12501276
)
12511277
self.dump_tasks[layer_name] = task
12521278
except Exception as e:
1253-
logger.error(f"submit dump task for {layer_name} failed. {type(e).__name__}: {e}")
1279+
logger.error(
1280+
f"submit dump task for {layer_name} failed. {type(e).__name__}: {e}"
1281+
)
12541282
if self.enable_event_sync and event_handle and self.device is not None:
12551283
self.device.destroy_event_handle(event_handle)
12561284
if self.is_save:

0 commit comments

Comments
 (0)