Skip to content

dynamo-prime-rl-integration - #1

Open
biswapanda wants to merge 6 commits into
mainfrom
feat/dyn-pi-sidecar-v2
Open

dynamo-prime-rl-integration#1
biswapanda wants to merge 6 commits into
mainfrom
feat/dyn-pi-sidecar-v2

Conversation

@biswapanda

@biswapanda biswapanda commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Purpose

Extend vLLM's existing native Rust gRPC and token-in/token-out surfaces so an out-of-process Dynamo sidecar can drive aggregated and disaggregated inference without introducing a separate OpenEngine schema.

Companion PRs:

Exact tested heads:

Repository Commit
vLLM e74fc3f1b06258e25519a5d5ed4d9a1b05d9a1cb
Dynamo fc556d992cd2525eaf6ae0f612f31a46db2e5a7b
Prime-RL 7a8f90b2495e344f5b9198e20f418c472018b1ad

Native protocol and server

  • Extend the existing vLLM gRPC service rather than wrapping it in openengine.v1.
  • Preserve sampling, prompt logprobs, priority, cache salt, DP-rank routing, request identity, extra arguments, LoRA selection, multimodal inputs, usage, finish metadata, KV-transfer metadata, and routed experts.
  • Expose structured server/model/parallelism metadata and engine failure through the native control service.
  • Keep EngineCore utility calls cancellation-safe and preserve managed Python EngineCore ownership and shutdown ordering.
  • Coordinate managed data-parallel EngineCore processes through one handshake owner while exposing the validated logical DP span.

The branch is restacked on the native control/inference split already present in upstream vLLM. It removes fork duplicates, shares drain state through AppState, reconciles current protocol output types, and retains the post-review native gRPC fixes needed by the Dynamo sidecar.

Prime-RL boundary

Prime-RL main now pins vLLM 0.26.0 and imports vllm.entrypoints.scale_out.token_in_token_out directly. The Prime companion branch contains no import-layout probing or compat.py shim. Prime delegates validation, rendering, sampling, multimodal preprocessing, streaming, usage, logprobs, cancellation, and response construction to this canonical vLLM package, retaining only KV handoff and routed-expert compaction.

Prime reaches vLLM's existing HTTP administration surface through endpoints discovered from Dynamo. This PR owns no Prime configuration, trainer logic, Dynamo discovery, Helm, DGD, Slurm, prime_rl.engine.v2, or openengine.v1 schema.

Validation

The exact final ARM64 stack passed its DIND build/import gates and 35 focused Prime-side configuration, discovery, broadcaster, serving-adapter, and topology-rank tests. Explicit compatibility gates confirmed that ordinary non-Dynamo clients retain the legacy broadcaster payload and rank calculation.

The stack was deployed as q06v4i-0803 in bis-rl-3 with one aggregated inference GPU running this vLLM-rs/Python EngineCore plus a separate Dynamo sidecar and one external Prime trainer GPU. Qwen3-0.6B Math completed three trainer and orchestrator steps, three policy reloads, and a post-update HTTP 200 generation gate. The worker generated 14,510 tokens at 172.21 tokens/s aggregate with zero restarts.

Images:

nvcr.io/nvidian/dynamo-dev/biswa@sha256:be98b7cbbea4f3053eb20ad0d0596beab6644f02adc4d01c94ec845603c225dc
nvcr.io/nvidian/dynamo-dev/biswa@sha256:6740b20164a7091b252046b98786fbf39a18902b463eeb5b480384de4e9f4cfb

The checkpoint reload path emitted a RotaryEmbedding: Failed to load weights warning, but every reload call completed, policy versions advanced, and post-update generation passed. This warning remains a follow-up item.

Review map

  • rust/proto/vllm_grpc.proto
  • rust/src/server/src/grpc/
  • rust/src/engine-core-client/
  • native LoRA lifecycle and registry modules
  • vllm/v1/engine/core.py and managed-DP transport initialization

@github-actions

Copy link
Copy Markdown

👋 Hi! Thank you for contributing to the vLLM project.

💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels.

Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run fastcheck CI which starts running only a small and essential subset of CI tests to quickly catch errors.

You ask your reviewers to trigger select CI tests on top of fastcheck CI.

Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging.

To run CI, PR reviewers can either: Add ready label to the PR or enable auto-merge.

If you have any questions, please reach out to us on Slack at https://slack.vllm.ai.

🚀

@biswapanda
biswapanda force-pushed the feat/dyn-pi-sidecar-v2 branch from a0d13bb to e74fc3f Compare August 3, 2026 09:10
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