Repository navigation
[Rust Frontend] Return weight-version spans on final outputs - #61070
Conversation
Signed-off-by: Shuolei Wang <shuoleiwang123@gmail.com>
|
Documentation preview: https://vllm--61070.org.readthedocs.build/en/61070/ |
|
/ci run |
|
✅ @ShuoleiWang, CI is now available for this PR.
|
|
✅ Triggered Buildkite CI #94080 for commit |
|
[AUTOMATED] @codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Decode the label into `Arc<str>` once in `RequestBatchOutputs` and share it through `WeightVersionSpan`, instead of converting in the dispatcher and copying it back to a `String` per span. Document the label fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
|
/ci run |
|
✅ Triggered Buildkite CI #94138 for commit |
CI selector (shadow): no narrower answer, every step runs: 194 test steps (270 jobs) instead of 7 (7 jobs)Shadow mode: this changes nothing about what CI runs. It shows what the evidence-based selector would pick for this PR, next to today's rules. How it works. Feedback welcome: reply here if it would skip a step this change needs, or runs something unrelated.
Why: rust: rust/src/engine-core-client/src/client/imp.rs: root crate bucket; 16 gate-env steps + 12 hardware-image steps; + the PyO3 bridge claim (vllm/tool_parsers/rust_tool_parser.py) Selector would run (194)
Would skip (today's rules run them) (0)none Would add (today's rules do not run them) (187)
AMD mirrors: would skip (0)none AMD mirrors: would add (156)
12 changed files · base |
Purpose
Follow-up to #59582 (RFC #54443). The Rust frontend's
/inference/v1/generatenow returnsweight_versionslike the Python frontend: for each choice, the label of the weights that sampled each range of output tokens. A request that crossed one weight update gets two ranges:[].nullor omit it.Implementation: the engine-core client attaches each step's label to every request output.
GenerateOutputStreambuilds the spans on the terminal output, as the PythonOutputProcessordoes.gRPC and the Rust OpenAI-compatible routes are out of scope.
Not a duplicate of #53199, which reports one weight version per output. This PR returns token ranges, matching current Python frontend in latest main.
Test Plan
cargo clippy --manifest-path rust/Cargo.toml --workspace --all-targets --all-features -- -D warnings cargo test --manifest-path rust/Cargo.toml -p vllm-engine-core-client -p vllm-llm -p vllm-server -p vllm-cmdTwo existing tests in
rust/src/llm/tests/generate.rsnow check spans: one where the label changes inside a stream-interval merge, and one with a client abort.End-to-end on H20 with Qwen3-1.7B: Rust and Python frontends, each with async scheduling on and off. Each run covers
pause(mode="keep")andpause(mode="abort")across a weight update that zeroeslm_head, so each span boundary must sit at the first 0 token.Test Result
[].AI assistance: Claude was used to implement the code and tests. I reviewed every changed line and checked the results.