Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion tests/v1/core/test_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@
KVCacheGroupSpec,
MambaSpec,
)
from vllm.v1.outputs import DraftTokenIds, KVConnectorOutput, ModelRunnerOutput
from vllm.v1.outputs import (
DraftTokenIds,
ECConnectorOutput,
KVConnectorOutput,
ModelRunnerOutput,
)
from vllm.v1.request import Request, RequestStatus
from vllm.v1.structured_output import StructuredOutputManager

Expand Down Expand Up @@ -4697,6 +4702,41 @@ def update_connector_output(
assert final_stats == expected_data


def test_ec_connector_update_connector_output_called():
"""Test that worker-side EC connector output is forwarded to the
EC connector's update_connector_output hook."""
scheduler = create_scheduler(
model="llava-hf/llava-1.5-7b-hf",
use_ec_connector=True,
ec_role="ec_consumer",
)
scheduler.ec_connector.update_connector_output = Mock()

scheduler_output = SchedulerOutput(
scheduled_new_reqs=[],
scheduled_cached_reqs=CachedRequestData.make_empty(),
num_scheduled_tokens={},
total_num_scheduled_tokens=0,
scheduled_encoder_inputs={},
scheduled_spec_decode_tokens={},
num_common_prefix_blocks=[],
finished_req_ids=set(),
free_encoder_mm_hashes=[],
)
ec_connector_output = ECConnectorOutput(finished_sending={"hash_test1"})
model_runner_output = ModelRunnerOutput(
req_ids=[],
req_id_to_index={},
ec_connector_output=ec_connector_output,
)

scheduler.update_from_output(scheduler_output, model_runner_output)

scheduler.ec_connector.update_connector_output.assert_called_once_with(
ec_connector_output
)


# ==============================================================================
# Variable-length encoder cross-attention block allocation tests
# ==============================================================================
Expand Down
5 changes: 5 additions & 0 deletions vllm/v1/core/sched/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -1581,6 +1581,7 @@ def update_from_output(
pooler_outputs = model_runner_output.pooler_output
num_nans_in_logits = model_runner_output.num_nans_in_logits
kv_connector_output = model_runner_output.kv_connector_output
ec_connector_output = model_runner_output.ec_connector_output
cudagraph_stats = model_runner_output.cudagraph_stats

# Every GPU write enqueued by this and earlier steps has completed, so it is
Expand Down Expand Up @@ -1864,6 +1865,10 @@ def update_from_output(
if kv_connector_output:
self._update_from_kv_xfer_finished(kv_connector_output)

# EC Connector: update state from worker-side EC connector output.
if ec_connector_output and self.ec_connector is not None:
self.ec_connector.update_connector_output(ec_connector_output)
Comment thread
NickLucche marked this conversation as resolved.
Resolved

# Worker-side KV connector stats from the model runner output.
kv_connector_stats: KVConnectorStats | None = (
kv_connector_output.kv_connector_stats if kv_connector_output else None
Expand Down
Loading