Skip to content

[CI] Bump vLLM LKG to 4541fcdd; always shut down engines in runai streamer tests - #3931

Merged
wenxindongwork merged 2 commits into
mainfrom
wxd/bump-vllm-lkg-fix-fp8-sched
Oct 30, 2026
Merged

wenxindongwork merged 2 commits into
mainfrom
wxd/bump-vllm-lkg-fix-fp8-sched

Conversation

@wenxindongwork

@wenxindongwork wenxindongwork commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #3924 for the tpu-vllm-integration breakages (build #151): the originally reported per_act_token_quant and continue-decode errors were already fixed on main by #3924. This PR moves the LKG forward and fixes the one remaining incompatibility that the newer vLLM introduces.

  1. Bump .buildkite/vllm_lkg.version 2fb320d8 -> 4541fcdd837c15345087b45e9aa85f2a28b57883 (vLLM main as of 2026-10-29 17:07 UTC). vLLM's [build-system] torch pin is unchanged (torch == 2.14.0).
  2. DP scheduler: Request.skip_reading_prefix_cache no longer exists. Newer vLLM folds it (and the prompt-logprobs lower bound) into Request.prefix_cache_hit_limit / Request.get_max_cache_hit_length(). dp_scheduler.py's PROBE_COMPUTED_BLOCKS still read the old attribute, so every DP-attention run died on the first request with
    SchedulerWorkerError: Scheduler worker 0 error: 'Request' object has no attribute 'skip_reading_prefix_cache'
    
    That is what failed tpu7x E2E speculative decoding test (eagle3, attn_dp_size=2) and tpu7x E2E MLperf tests for DeepSeek-R1 (DP attention) in the first CI run of this PR (build [Fused MoE] Use jax.nn.sigmoid #1980). The probe now uses upstream's get_max_cache_hit_length() when present (so it stays consistent with what vLLM's own Scheduler passes to get_computed_blocks) and falls back to the legacy flag.
  3. Runai streamer tests shut down the engine core in finally, so a failure in the first LLM no longer masks itself as EngineDeadError from the second.

Test plan

  • Build [Fused MoE] Use jax.nn.sigmoid #1980 (before item 2): everything green except the two DP-attention tpu7x steps above.
  • v7x 2x2x1, vllm/vllm-tpu:nightly-20261029-75749f8-2fb320d with /workspace/vllm at 4541fcdd, DP-attention generate (tensor_parallel_size=2, attn_dp_size=2, async scheduling, two passes so the second hits the prefix cache): 9bae5a1c5 reproduces the SchedulerWorkerError; 52c2fe47e generates correctly, both passes identical.
  • tests/core/test_dp_scheduler.py (incl. 3 new tests) + tests/core/test_sched_utils.py at the new pin.
  • Full PR pipeline re-running on the new commit.

@cbs-oss-review-bot cbs-oss-review-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.

Automated review (prototype)

This PR bumps the vLLM LKG pin. It turns the continue-decode scheduler patch off unless enable_continue_decode is set, adds a per_act_token_quant property to VllmFp8MoEMethod, and wraps the engine shutdown calls in the runai e2e tests in try/finally. The code changes look correct. The one problem is that the new test for the disabled path would pass even without the new guard, so it does not cover the change.

Not fully confident; a human reviewer should check: Check that the new vLLM pin 4541fcdd works with this repo's other vLLM touchpoints, since only the FP8 MoE and scheduler fixes are in this PR. Also check whether upstream Fp8MoEMethod now defines per_act_token_quant as a property; that would explain why the setter is needed.

Questions (the bot could not confirm these):

  • .buildkite/vllm_lkg.version:1: Was the full per-PR CI run against vLLM 4541fcdd, beyond the two pytest commands in the description?
  • tpu_inference/layers/vllm/quantization/fp8.py:397: __init__ already sets self.per_act_token_quant = False (line 391), so why is the property needed: does upstream Fp8MoEMethod now define it as a read-only property?

Nits (optional):

  • tpu_inference/layers/vllm/quantization/fp8.py:397: Add a short comment on why this property exists (which upstream vLLM change needs it), so it doesn't get removed as redundant later.

Inline comments: 0 blocking, 1 should-fix.

Comment thread tests/core/test_sched_utils.py Resolved
@github-actions

Copy link
Copy Markdown

Description

Start with a short description of what the PR does and how this is a change from
the past.

The rest of the description includes relevant details and context, examples:

  • why is this change being made,
  • the problem being solved and any relevant context,
  • why this is a good solution,
  • some information about the specific implementation,
  • shortcomings of the solution and possible future improvements.

If the change fixes a Github issue, please include a link, e.g.,:
FIXES: #123456

Tests

Please describe how you tested this change, and include any instructions and/or
commands to reproduce.

Checklist

Before submitting this PR, please make sure:

  • I have performed a self-review of my code.
  • I have necessary comments in my code, particularly in hard-to-understand areas.
  • I have made or will make corresponding changes to any relevant documentation.

…n engines on failure

- Bump .buildkite/vllm_lkg.version 2fb320d8 -> 4541fcdd (vLLM main as of
  2026-10-29 17:07 UTC). The fp8 MoE `per_act_token_quant` and continue-decode
  scheduler incompatibilities reported from tpu-vllm-integration build #151
  were already fixed on main by #3924; today's integration build #157 (main
  + vLLM HEAD) passes the JAX unit tests and all Runai Model Streamer
  correctness tests, so this moves the pin forward to the current head.
- tests/e2e/test_runai_model_streamer_loader.py: wrap generate() in
  try/finally so the engine core is always shut down. Previously a failure
  in the first LLM left its EngineCore process alive, and the second LLM in
  the same test then died with EngineDeadError, masking the real error.

Signed-off-by: wenxindongwork <wenxindong@google.com>
@wenxindongwork
wenxindongwork force-pushed the wxd/bump-vllm-lkg-fix-fp8-sched branch from f743ef7 to 9bae5a1 Compare October 29, 2026 19:18
@wenxindongwork wenxindongwork changed the title [Bugfix][CI] Bump vLLM LKG and ensure compatibility with FP8 MoE & Scheduler [CI] Bump vLLM LKG to 4541fcdd; always shut down engines in runai streamer tests Oct 29, 2026
@wenxindongwork wenxindongwork added the ready ONLY add when PR is ready to merge/full CI is needed label Oct 29, 2026
@wenxindongwork
wenxindongwork enabled auto-merge (squash) October 29, 2026 19:40
With vLLM >= 4541fcdd, `Request.skip_reading_prefix_cache` is gone; the flag
(and the prompt-logprobs lower bound) are folded into
`Request.prefix_cache_hit_limit` / `Request.get_max_cache_hit_length()`.
The DP scheduler's PROBE_COMPUTED_BLOCKS handler still read the old
attribute, so every DP-attention run died at the first request:

  AttributeError: 'Request' object has no attribute 'skip_reading_prefix_cache'
  SchedulerWorkerError: Scheduler worker 0 error: ...

This is what failed `tpu7x E2E speculative decoding test` (eagle3 with
attn_dp_size=2) and `tpu7x E2E MLperf tests for DeepSeek-R1` (DP attention)
in the LKG-bump CI run.

Use the upstream helper when present and fall back to the legacy flag
otherwise, so the probe stays consistent with what vLLM's own Scheduler
passes to KVCacheManager.get_computed_blocks.

Signed-off-by: wenxindongwork <wenxindong@google.com>
@wenxindongwork
wenxindongwork merged commit c3408b7 into main Oct 30, 2026
52 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready ONLY add when PR is ready to merge/full CI is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants