Skip to content

Commit cc07976

Browse files
sdavidbdDavid Ben-Davidmarkmc
authored
[BugFix] Avoid calling KV connector layer APIs when metadata is unset (#28253)
Signed-off-by: David Ben-David <davidb@pliops.com> Co-authored-by: David Ben-David <davidb@pliops.com> Co-authored-by: Mark McLoughlin <markmc@redhat.com>
1 parent a7adbc6 commit cc07976

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

vllm/attention/layer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,8 @@ def wait_for_kv_layer_from_connector(layer_name: str):
837837
return
838838

839839
connector = get_kv_transfer_group()
840+
if not connector.has_connector_metadata():
841+
return
840842

841843
forward_context: ForwardContext = get_forward_context()
842844
attn_metadata = forward_context.attn_metadata
@@ -854,6 +856,8 @@ def maybe_save_kv_layer_to_connector(
854856
return
855857

856858
connector = get_kv_transfer_group()
859+
if not connector.has_connector_metadata():
860+
return
857861

858862
forward_context: ForwardContext = get_forward_context()
859863
attn_metadata = forward_context.attn_metadata

vllm/distributed/kv_transfer/kv_connector/v1/base.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,18 @@ def _get_connector_metadata(self) -> KVConnectorMetadata:
204204
Returns:
205205
ConnectorMetadata: the connector metadata.
206206
"""
207-
208207
# Should only be called while set to valid metadata.
209208
assert self._connector_metadata is not None
210209
return self._connector_metadata
211210

211+
def has_connector_metadata(self) -> bool:
212+
"""Check whether the connector metadata is currently set.
213+
214+
Returns:
215+
bool: True if connector metadata exists, False otherwise.
216+
"""
217+
return self._connector_metadata is not None
218+
212219
def register_kv_caches(self, kv_caches: dict[str, torch.Tensor]):
213220
"""
214221
Initialize with the KV caches. Useful for pre-registering the

vllm/distributed/kv_transfer/kv_connector/v1/multi_connector.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,22 @@ def register_kv_caches(self, kv_caches: dict[str, torch.Tensor]):
171171
# We must override the base class method here because we need to bind
172172
# the metadata to each connector in the order of the connectors in the
173173
# MultiKVConnectorMetadata.
174+
#
175+
# Note: Call the base class method to ensure metadata is also set on the
176+
# MultiConnector instance itself; otherwise, `has_connector_metadata()` will
177+
# always return False.
174178
def bind_connector_metadata(self, connector_metadata: KVConnectorMetadata) -> None:
175179
assert isinstance(connector_metadata, MultiKVConnectorMetadata)
176180
if connector_metadata.extra_async_saves:
177181
self._extra_async_saves.update(connector_metadata.extra_async_saves)
178182
for c, cm in zip(self._connectors, connector_metadata.metadata):
179183
c.bind_connector_metadata(cm)
184+
super().bind_connector_metadata(connector_metadata)
180185

181186
def clear_connector_metadata(self) -> None:
182187
for c in self._connectors:
183188
c.clear_connector_metadata()
189+
super().clear_connector_metadata()
184190

185191
def shutdown(self):
186192
exception: Exception | None = None

0 commit comments

Comments
 (0)