Skip to content

feat(epp): data-parallel worker registration in the standalone reflector - #22

Closed
ishandhanani wants to merge 1 commit into
idhanani/p4-catalog-heartbeatfrom
idhanani/p4-epp-data-parallel
Closed

ishandhanani wants to merge 1 commit into
idhanani/p4-catalog-heartbeatfrom
idhanani/p4-epp-data-parallel

Conversation

@ishandhanani

Copy link
Copy Markdown
Owner

Phase 4 (Kubernetes feeder) of the runtime-optional frontend roadmap. Stacked on #21.

Summary

The EPP's standalone pod reflector is the Kubernetes catalog feeder, and it registered every pod as one data-parallel rank (selector.rs hardcoded data_parallel_size: Some(1), the roadmap's selector.rs:199-201 anchor).

  • EppStandaloneConfig: DYN_EPP_DATA_PARALLEL_SIZE (default 1, validated >= 1) and DYN_EPP_KV_EVENT_PORT_STRIDE (default 1). Rank r publishes KV events on kv_event_port + r * stride.
  • pod_discovery: RawWorker.kv_events_endpoints is now per rank (KvEventPorts::endpoints), IPv6 bracketing preserved.
  • topology_adapter/selector: WorkerRegistration.data_parallel_size flows into the core WorkerRequest with data_parallel_start_rank: 0.
  • Also adds the session_context: None field the EPP's SelectAndReserveRequest literal was missing since feat(kv-router): wire shared-cache hits and full session context into selection #9 introduced the structured session context; the dynamo-ext-proc crate did not compile on the stack until this commit (none of the earlier PRs' validation built it). Flagging so it can be folded into feat(kv-router): wire shared-cache hits and full session context into selection #9 if preferred.
  • Docs: vanilla-vllm-onramp.mdx env table.

Validation

  • cargo test -p dynamo-ext-proc: 144 + 1 passed (new data_parallel_ranks_publish_on_strided_ports; reflector/adapter/selector tests updated to the per-rank shape).
  • cargo clippy -p dynamo-ext-proc --all-targets: clean. cargo fmt, docs_lint.py clean.

Phase 4 of the runtime-optional frontend roadmap: the EPP pod reflector is the
Kubernetes catalog feeder, and it registered every pod as a single
data-parallel rank (the hardcoded data_parallel_size: 1 in selector.rs).

- EppStandaloneConfig gains DYN_EPP_DATA_PARALLEL_SIZE (default 1) and
  DYN_EPP_KV_EVENT_PORT_STRIDE (default 1). Rank r publishes KV events on
  kv_event_port + r * stride; the reflector emits one KV-event endpoint per
  rank (RawWorker.kv_events_endpoints) and the registration carries
  data_parallel_size, which the selector passes through with
  data_parallel_start_rank 0.
- Adds the session_context field the EPP's booking request was missing since
  the structured session context landed in the selection service, so the
  ext-proc crate builds again on this stack.

Tests: strided per-rank endpoints for a 3-rank pod; existing reflector,
adapter, and selector tests updated to the per-rank shape (144 pass).

Signed-off-by: Ishan Dhanani <ishandhanani@gmail.com>
@ishandhanani

Copy link
Copy Markdown
Owner Author

Closed while Stack 1 (#45 to #53) and Stack 2 (#40) go upstream; the branch stays for later stacks (direct dispatch, catalog leases, runtime features). See #33.

This branch had an error being deployed

1 failed deployment
external_collaborator — bb2af62b Deployed Sep 3, 2026 by ishandhanani via ok-to-test #43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feat

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant