Compare commits

...
Author SHA1 Message Date
Wentao YeandGitHub beefff2174 Merge branch 'main' into wentao-skip-work-when-empty 2026-04-03 11:31:23 -04:00
yewentao256 163266d0b2 refactor only inside nixl
Signed-off-by: yewentao256 <zhyanwentao@126.com>
2026-04-01 18:28:13 +00:00
yewentao256 a2fd28a7e1 Merge branch 'main' into wentao-skip-work-when-empty
Signed-off-by: yewentao256 <zhyanwentao@126.com>
2026-04-01 18:09:06 +00:00
Wentao YeandGitHub 7a80ac928f Merge branch 'main' into wentao-skip-work-when-empty 2026-03-31 13:01:59 -04:00
yewentao256 0ed11013b4 check empty using kv connector's method
Signed-off-by: yewentao256 <zhyanwentao@126.com>
2026-03-30 21:06:12 +00:00
yewentao256 6d568b995a Merge branch 'main' into wentao-skip-work-when-empty 2026-03-30 19:17:12 +00:00
Wentao YeandGitHub dfe9decbcb Merge branch 'main' into wentao-skip-work-when-empty 2026-03-28 10:28:43 -04:00
Wentao YeandGitHub 1324e6ff67 Merge branch 'main' into wentao-skip-work-when-empty 2026-03-27 15:52:55 -04:00
Wentao YeandGitHub c1aba6d7ae Merge branch 'main' into wentao-skip-work-when-empty 2026-03-27 09:42:19 -04:00
Wentao YeGitHubgemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
200bef28c9 Update vllm/v1/worker/gpu/kv_connector.py
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Signed-off-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com>
2026-03-26 18:04:12 -04:00
yewentao256 fd9820bbf9 skip kv connector empty work
Signed-off-by: yewentao256 <zhyanwentao@126.com>
2026-03-26 21:50:28 +00:00
2 changed files with 42 additions and 1 deletions
@@ -10,6 +10,7 @@ from vllm.distributed.kv_transfer.kv_transfer_state import (
get_kv_transfer_group,
)
from vllm.v1.core.sched.output import CachedRequestData, SchedulerOutput
from vllm.v1.worker.gpu.kv_connector import ActiveKVConnector
from vllm.v1.worker.kv_connector_model_runner_mixin import KVConnectorModelRunnerMixin
# Importing utils registers TestExampleConnector with the factory
@@ -59,3 +60,29 @@ def test_kv_connector_mixin_clears_metadata():
finally:
# Ensure we clean up the global connector between tests
ensure_kv_transfer_shutdown()
def test_active_kv_connector_runs_lifecycle_hooks_for_empty_metadata():
vllm_config = create_vllm_config()
vllm_config.kv_transfer_config.kv_connector = "TestExampleConnector"
vllm_config.kv_transfer_config.kv_role = "kv_both"
vllm_config.kv_transfer_config.kv_connector_extra_config["name"] = "empty"
ensure_kv_transfer_initialized(vllm_config)
try:
wrapped = get_kv_transfer_group()
connector = ActiveKVConnector(vllm_config, {})
scheduler_output = _make_empty_scheduler_output()
connector.pre_forward(scheduler_output)
connector.post_forward(scheduler_output)
assert wrapped.call_record.get("bind_connector_metadata", 0) == 1
assert wrapped.call_record.get("handle_preemptions", 0) == 1
assert wrapped.call_record.get("start_load_kv", 0) == 1
assert wrapped.call_record.get("wait_for_save", 0) == 1
assert wrapped.call_record.get("get_finished", 0) == 1
assert wrapped.call_record.get("clear_connector_metadata", 0) == 1
finally:
ensure_kv_transfer_shutdown()
@@ -521,7 +521,11 @@ class NixlConnector(KVConnectorBase_V1, SupportsHMA):
def wait_for_save(self):
assert self.connector_worker is not None
assert isinstance(self._connector_metadata, NixlConnectorMetadata)
if self.connector_worker.use_host_buffer and self.connector_worker.copy_blocks:
if (
self.connector_worker.use_host_buffer
and self.connector_worker.copy_blocks
and self._connector_metadata.reqs_to_save
):
self.connector_worker.save_kv_to_host(self._connector_metadata)
def shutdown(self):
@@ -2466,6 +2470,16 @@ class NixlConnectorWorker:
Start loading by triggering non-blocking nixl_xfer.
We check for these trnxs to complete in each step().
"""
# skip the empty path
if (
not metadata.reqs_to_recv
and not metadata.reqs_to_send
and not metadata.reqs_in_batch
and not metadata.reqs_not_processed
and self._ready_requests.empty()
):
return
for req_id, meta in metadata.reqs_to_recv.items():
meta.local_physical_block_ids = self._logical_to_kernel_block_ids(
meta.local_block_ids