Skip to content

feat: [AMD Support via SemiAnalysis][2/4] vLLM MoRI-IO integration - #11

Open
cquil11 wants to merge 2 commits into
agent/amd-multinode-runtimefrom
agent/vllm-mori-integration
Open

cquil11 wants to merge 2 commits into
agent/amd-multinode-runtimefrom
agent/vllm-mori-integration

Conversation

@cquil11

@cquil11 cquil11 commented Sep 8, 2026

Copy link
Copy Markdown

Summary

Integrate native vLLM Router with MoRI-IO prefill/decode workers. Static router registration and NIXL port handling do not describe MoRI's ZMQ discovery path; this PR supplies the connector-specific launch and readiness behavior.

Stacked on #1, which combines AMD hardware enablement and required cluster runtime. #7 follows this PR; ATOM uses Mooncake and has no engine dependency on MoRI.

Review map

  • backends/vllm.py: generate role-aware MoRIIOConnector JSON from allocated addresses and ports; preserve upstream ephemeral port allocation for TP children instead of injecting a shared VLLM_PORT scan base. Other connectors retain their existing behavior.
  • frontends/vllm_router.py, frontends/static_router.py, ports.py: select ZMQ discovery, own its registration port, and omit static P/D URL registration for the managed MoRI path.
  • core/health.py, cli/mixins/benchmark_stage.py: use a one-token completion probe for dynamic discovery, whose registry is not represented by Router's static /workers endpoint.
  • core/schema.py: restrict the managed integration to a P/D layout with one router on the head node.
  • Tests and documentation move with the integration. No engine patches, image changes, workload changes, or new GPU tests are introduced by this split.

Note

Medium Risk
Changes P/D launch, router CLI, and readiness gating for moriio deployments; misconfiguration is caught at schema validation, but end-to-end probe behavior affects when benchmarks start.

Overview
Adds managed MoRI-IO for ROCm-style vLLM prefill/decode behind frontend.type: vllm-router when engine.connector: moriio.

Worker launch: srtctl builds role-aware MoRIIOConnector JSON (kv_producer / kv_consumer) from the head node IP, fixed discovery port 36367, and each worker’s HTTP port. MoRI workers skip NIXL side-channel env and the per-process VLLM_PORT scan base so TP children don’t collide on ephemeral listeners.

Router: ZMQ discovery mode passes --kv-connector moriio and --vllm-discovery-address and omits static --prefill / --decode URLs. NIXL bootstrap ports are not advertised for MoRI.

Readiness: Because Router’s /workers doesn’t reflect the MoRI registry, benchmarks wait on a one-token POST /v1/completions probe (requires model_name) instead of worker-count polling.

Config validation: MoRI + vllm-router requires P/D topology, enable_multiple_frontends: false, and orchestrator_placement: head. Docs and schema list moriio as a connector option; tests cover KV config, health probe, port env, and device binding for vllm-router.

Reviewed by Cursor Bugbot for commit 9935d90. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Comment thread src/srtctl/backends/vllm.py
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from 094e542 to 05c9395 Compare September 13, 2026 21:46
@cquil11 cquil11 changed the title feat(vllm): add native MoRI-IO router integration [AMD Support][2/3] vLLM MoRI-IO integration Sep 13, 2026
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from 05c9395 to 26bbe1c Compare September 15, 2026 14:07
@cquil11
cquil11 removed this pull request from stack #12 September 15, 2026 14:09
@cquil11
cquil11 changed the base branch from agent/amd-multinode-runtime to review/runtime-portability September 15, 2026 14:09
@cquil11
cquil11 added this pull request to stack #17 September 15, 2026 14:09
@cquil11 cquil11 changed the title [AMD Support][2/3] vLLM MoRI-IO integration [AMD Support][3/4] vLLM MoRI-IO integration Sep 15, 2026
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from 26bbe1c to fdfc9ed Compare September 16, 2026 01:11

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Comment thread src/srtctl/backends/vllm.py
@cquil11
cquil11 removed this pull request from stack #17 September 16, 2026 05:23
@cquil11
cquil11 changed the base branch from review/runtime-portability to agent/amd-multinode-runtime September 16, 2026 05:23
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from fdfc9ed to 65893f4 Compare September 16, 2026 05:23
@cquil11
cquil11 added this pull request to stack #18 September 16, 2026 05:23
@cquil11 cquil11 changed the title [AMD Support][3/4] vLLM MoRI-IO integration [AMD Support][2/4] vLLM MoRI-IO integration Sep 16, 2026
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from 65893f4 to 7bf6562 Compare September 17, 2026 19:53
cquil11 and others added 2 commits September 18, 2026 16:28
The one-server-per-endpoint, multi-node DEP8 hybrid pool, and NIXL P/D
worker tests restated assertions that test_vllm_router_frontend.py and
the existing DP tests already make. Keep the MoRI-IO and device-binding
cases, which exercise logic this branch adds, and update the latter to
the set_visible_devices field name introduced by the runtime branch.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@cquil11
cquil11 force-pushed the agent/vllm-mori-integration branch from 7368036 to 9935d90 Compare September 18, 2026 21:36
@cquil11 cquil11 changed the title [AMD Support][2/4] vLLM MoRI-IO integration feat: [AMD Support via SemiAnalysis][2/4] vLLM MoRI-IO integration Sep 18, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9935d90. Configure here.

"read_mode": True,
},
}
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MoRI workers share default control ports

High Severity

Managed MoRIIOConnector JSON omits per-worker handshake_port and notify_port, so every engine falls back to the same defaults. Co-located workers, including multiple endpoints on one node, then collide on those listeners and on engine_id.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9935d90. Configure here.

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