Skip to content

Commit 6f148f9

Browse files
committed
[opt]Add check in wait_for_save
1 parent db42d37 commit 6f148f9

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

ucm/integration/vllm/ucm_connector.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,27 @@ 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(f"check dump kv cache failed. {type(e).__name__}: {e}")
899+
remaining_tasks.append(pending_dump_task)
900+
continue
901+
902+
try:
903+
# Check does not consume the task handle. Wait is non-blocking
904+
# after completion and removes the task from the store.
905+
self._wait_pending_dump_task(pending_dump_task)
906+
except Exception as e:
907+
logger.error(f"wait for dump kv cache failed. {type(e).__name__}: {e}")
908+
909+
self._pending_dump_tasks = remaining_tasks
910+
890911
def _flush_pending_dump_tasks(self, request_ids: Optional[set[str]] = None) -> None:
891912
pending_dump_tasks = self._pending_dump_tasks
892913
self._pending_dump_tasks = []
@@ -919,6 +940,8 @@ def handle_preemptions(
919940

920941
def wait_for_save(self) -> None:
921942
# TODO support PP
943+
self._poll_pending_dump_tasks()
944+
922945
metadata = self._get_connector_metadata()
923946
assert isinstance(metadata, UCMConnectorMetadata)
924947
metadata_dump_request_ids = {
@@ -1242,6 +1265,7 @@ def save_kv_layer(
12421265
total_vllm_block_ids, layer_first=True
12431266
)
12441267
shard_indexs = [layer_id] * len(total_ucm_block_ids)
1268+
event_handle = 0
12451269
try:
12461270
layer_ptrs = np.ascontiguousarray(self.dump_total_ptrs[local_layer_id])
12471271
event_handle = self._get_dump_event_handle()
@@ -1250,7 +1274,9 @@ def save_kv_layer(
12501274
)
12511275
self.dump_tasks[layer_name] = task
12521276
except Exception as e:
1253-
logger.error(f"submit dump task for {layer_name} failed. {type(e).__name__}: {e}")
1277+
logger.error(
1278+
f"submit dump task for {layer_name} failed. {type(e).__name__}: {e}"
1279+
)
12541280
if self.enable_event_sync and event_handle and self.device is not None:
12551281
self.device.destroy_event_handle(event_handle)
12561282
if self.is_save:

0 commit comments

Comments
 (0)