Skip to content

feat(vllm): complete exact MM routing for generate - #11532

Draft
furionw wants to merge 7 commits into
qiwa/generate-mm-routing-frontendfrom
qiwa/mm-tito-kv-routing
Draft

feat(vllm): complete exact MM routing for generate#11532
furionw wants to merge 7 commits into
qiwa/generate-mm-routing-frontendfrom
qiwa/mm-tito-kv-routing

Conversation

@furionw

@furionw furionw commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Based on #11588.

Why

The frontend can project exact image identity into KV-routing tokens, but workers must advertise compatible support and normalize vLLM KV events to the same identity. The backend also needs to execute tokenized /inference/v1/generate requests without changing existing chat/completions or P/D behavior.

What Change

  • Add native Generate handling to unified and legacy vLLM paths.
  • Advertise exact-MM routing only when the worker resolves an image placeholder token.
  • Normalize multimodal KV-event identifiers and preserve LoRA/cache namespaces.
  • Propagate prompt embedding metadata through backend bindings.

Test Plan

  • Run pre-commit, release Rust builds, 24 focused Python tests, 7 KV-event parser tests, and the real vLLM engine integration test.
  • Run salted and unsalted two-worker Qwen3.5 multimodal routing E2E: all eight requests returned 200; distinct images warmed separate workers and repeats matched 2/3 cached blocks on the same worker.

@copy-pr-bot

copy-pr-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions github-actions Bot added feat backend::vllm Relates to the vllm backend frontend `python -m dynamo.frontend` and `dynamo-run in=http|text|grpc` labels Jul 10, 2026
@furionw
furionw force-pushed the qiwa/mm-tito-kv-routing branch 2 times, most recently from 93155f2 to 5c6247b Compare July 10, 2026 19:22
@furionw furionw changed the title feat(frontend): add exact MM routing for generate feat(vllm): complete exact MM routing for generate Jul 13, 2026
@furionw
furionw changed the base branch from main to qiwa/generate-mm-routing-frontend July 13, 2026 04:26
@furionw
furionw force-pushed the qiwa/mm-tito-kv-routing branch from 879b496 to a2eceab Compare July 13, 2026 04:26
@furionw
furionw force-pushed the qiwa/generate-mm-routing-frontend branch from 85e8b3c to 0cd148f Compare July 13, 2026 04:29
@furionw
furionw force-pushed the qiwa/mm-tito-kv-routing branch from a2eceab to ffa8292 Compare July 13, 2026 04:29
@datadog-official

datadog-official Bot commented Jul 13, 2026

Copy link
Copy Markdown

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 8.10% (-1.70%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: ce7a9b2 | Docs | Give us feedback!

@furionw
furionw force-pushed the qiwa/mm-tito-kv-routing branch from ffa8292 to 7c149c3 Compare July 13, 2026 19:52
furionw and others added 3 commits July 22, 2026 01:54
Signed-off-by: Qi Wang <qiwa@nvidia.com>
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
@biswapanda
biswapanda force-pushed the qiwa/generate-mm-routing-frontend branch from ed101f9 to 5df0396 Compare July 22, 2026 08:55
biswapanda and others added 4 commits July 22, 2026 02:25
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
Signed-off-by: Qi Wang <qiwa@nvidia.com>
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
Signed-off-by: Biswa Panda <biswa.panda@gmail.com>
@biswapanda

Copy link
Copy Markdown
Contributor

Repair stack pushed at ce7a9b2fdf (still draft and intentionally based on #11588 until #11588 lands).

Blocker repairs included:

  • preserved current-main native vLLM generate behavior and deleted unified-backend state
  • completed exact multimodal routing event/hash plumbing
  • preserved routed-expert, prompt-logprob, KV-transfer, usage, LoRA admission, and cancellation parity
  • rejected invalid top_k < -1 at the frontend boundary
  • made routed-expert serialization failures fail visibly instead of silently dropping metadata
  • added the required core test marker

Local validation: Generate Rust tests 73 passed; KV-router wire tests 32 passed; Ruff, compileall, cargo fmt, and diff checks passed. Python vLLM collection is locally blocked only because the installed native extension predates FrontendExtensionContext; CI will exercise the built extension.

@biswapanda

Copy link
Copy Markdown
Contributor

/ok to test ce7a9b2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend::vllm Relates to the vllm backend feat frontend `python -m dynamo.frontend` and `dynamo-run in=http|text|grpc` size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants