Skip to content

chore: swap vllm-router fork for upstream on the router stack - #3257

Draft
mikasenghaas wants to merge 2 commits into
feat/router-cache-aware-defaultfrom
chore/router-upstream-stacked
Draft

chore: swap vllm-router fork for upstream on the router stack#3257
mikasenghaas wants to merge 2 commits into
feat/router-cache-aware-defaultfrom
chore/router-upstream-stacked

Conversation

@mikasenghaas

Copy link
Copy Markdown
Member

Summary

Stacks #3250 (replace the vllm-router fork with the upstream release) on top of #3255, so router performance — fork consistent_hash vs cache_aware vs upstream — can be compared within one stack using the per-engine metrics from #3240.

Same two commits as #3250, rebased onto the stack:

  • Consume vllm-router from PyPI (vllm-project/router, >=0.1.15) instead of the pinned wheel from the PrimeIntellect-ai/router fork (v0.1.26); drop the [tool.uv.sources] wheel URLs and the exclude-newer-package exemption.
  • Shut down the router cleanly on Ctrl-C (router in its own session; engine drains first, then the launcher terminates the router).

See #3250 for the full rationale and the ## Breaking notes (P/D routed-experts merge, JWT auth, and per-run usage metrics are fork-only and dropped).

Verification

  • uv sync resolves vllm-router 0.1.15 from PyPI on this base; the cherry-picked lock is coherent (no drift after re-sync).
  • Standalone uv run inference --vllm.model Qwen/Qwen3-0.6B on this branch: upstream router binary starts with policy: CacheAware, serves chat completions, and tears down cleanly on SIGINT with no spurious ERROR.

mikasenghaas and others added 2 commits August 12, 2026 20:29
Consume vllm-router from PyPI (vllm-project/router, >=0.1.15)
instead of the pinned wheel from the PrimeIntellect-ai/router fork
(v0.1.26). Upstream now covers everything prime-rl invokes: the
consistent_hash policy, --intra-node-data-parallel-size,
--vllm-pd-disaggregation, and a typed /inference/v1/generate route
that preserves extra request fields.

Fork-only features are dropped: the routed-experts merge for P/D
disaggregation, JWT auth, and per-run usage metrics. Single-replica
router replay still works - the generate route passes
return_routed_experts through and forwards response bytes verbatim.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The router subprocess shared the terminal's foreground process group,
so Ctrl-C SIGINTed it directly: it died before the engine drained, and
the watcher thread saw the exit before the finally block marked
shutdown, logging a spurious ERROR and re-signalling the process.

Start the router in its own session so only inference_local owns its
lifecycle: the engine drains first, then the finally block terminates
the router. The watcher now also logs a zero exit as a warning - that
is an external shutdown racing ours (e.g. the rl launcher SIGTERMs the
whole tree, router first), not a crash.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant