[Feat] Add prefetch for Mooncake cross-stage paged KV transfer in HunyuanImage3 (#7637)
Signed-off-by: Acerak01-fy <wfy2003324@163.com>
This commit is contained in:
1 parent
f7e28348ad
commit
9ebef4b1d3
11 files changed
+909
-23
No files matched your search
@@ -256,9 +256,23 @@ class DiffusionSchedulerOutput:
|
||||
kv_prefetch_job: KVPrefetchJob | None = None
|
||||
kv_connector_metadata: KVConnectorMetadata | None = None
|
||||
kv_transfer_request_ids: set[str] = field(default_factory=set)
|
||||
# None preserves the synchronous path; an empty set means submit/poll
|
||||
# without waiting. Transfer IDs above are submitted only once.
|
||||
kv_required_request_ids: set[str] | None = None
|
||||
kv_poll_only: bool = False
|
||||
# Keep background transfers out of the current request's Mooncake batch.
|
||||
kv_prefetch_connector_metadata: KVConnectorMetadata | None = None
|
||||
kv_prefetch_request_ids: set[str] = field(default_factory=set)
|
||||
# Connector lifecycle uses per-sequence IDs, not public request IDs.
|
||||
kv_finished_request_ids: set[str] = field(default_factory=set)
|
||||
|
||||
@property
|
||||
def has_sync_kv_loads(self) -> bool:
|
||||
# vLLM defers async submission until post_forward. The synchronous
|
||||
# receive loop must start its loads in pre_forward before polling.
|
||||
required = self.kv_required_request_ids
|
||||
return bool(self.kv_transfer_request_ids if required is None else required)
|
||||
|
||||
@cached_property
|
||||
def scheduled_request_ids(self) -> list[str]:
|
||||
"""
|
||||
@@ -275,4 +289,10 @@ class DiffusionSchedulerOutput:
|
||||
|
||||
@property
|
||||
def is_empty(self) -> bool:
|
||||
return self.num_scheduled_reqs == 0 and self.kv_connector_metadata is None
|
||||
return (
|
||||
self.num_scheduled_reqs == 0
|
||||
and self.kv_connector_metadata is None
|
||||
and self.kv_prefetch_connector_metadata is None
|
||||
and not self.kv_required_request_ids
|
||||
and not self.kv_poll_only
|
||||
)
|
||||
Reference in new issue
Block a user