Skip to content

[ci][llm] Upgrade to vLLM 0.29.0 - #65756

Open
jeffreywang88 wants to merge 16 commits into
masterfrom
vllm-0.28.0
Open

[ci][llm] Upgrade to vLLM 0.29.0#65756
jeffreywang88 wants to merge 16 commits into
masterfrom
vllm-0.28.0

Conversation

@jeffreywang88

@jeffreywang88 jeffreywang88 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Description

  • Transformers pin: Constrain Transformers to <5.17 because vLLM 0.29 imports a Pixtral API removed in 5.17. fix: Pixtral compat with transformers 5.17 vllm-project/vllm#56484
  • EOS patch: Apply a ray-llm image patch so model-config EOS tokens reach xgrammar when auto generation config omits them.
  • Error unwrapping: Remove Ray’s obsolete vLLM error-unwrapping workaround; vLLM 0.29 now handles these errors correctly.
  • NIXL: Stop Ray from adding the data-parallel rank to the NIXL port; vLLM applies that offset itself.
  • Qwen2.5-VL OOM: Set video sampling to 0.5 FPS in Ray’s prepare stage and vLLM to bound multimodal encoder tokens.
  • Reward-model plugin: Update the Qwen3 reward-model example for vLLM’s updated AutoWeightsLoader API.

Related issues

Link related issues: "Fixes #1234", "Closes #1234", or "Related to #1234".

Additional information

Optional: Add implementation details, API changes, usage examples, screenshots, etc.

@jeffreywang88
jeffreywang88 requested review from a team as code owners August 27, 2026 18:07
@jeffreywang88 jeffreywang88 added the go add ONLY when ready to merge, run all tests label Aug 27, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request upgrades vLLM to version 0.28.0 and updates related dependencies (such as nixl, fastsafetensors, and huggingface-hub) across configuration files, setup scripts, and lockfiles. It also removes deprecated exception-handling workarounds in the vLLM engine integration that are no longer needed with the new vLLM version. To resolve dependency conflicts, a new script is introduced to strip constraints, and an overrides file is added. Feedback on the pull request suggests improving the constraint-stripping script to dynamically parse overridden packages from the overrides file rather than hardcoding them, along with a corresponding update to the documentation comments.

Comment on lines +26 to +30
sed \
-e '/^--extra-index-url /d' \
-e '/^--find-links /d' \
-e '/^click==/d' \
"$SOURCE_FILE" > "$OUTPUT_FILE"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Maintenance Hazard: Hardcoded Package Stripping

Currently, the package click is hardcoded to be stripped from the constraints file. If new overrides are added to python/requirements/llm/base_pin_overrides.txt in the future, developers must remember to manually update this script to strip those pins as well.

We can eliminate this maintenance hazard by dynamically parsing base_pin_overrides.txt and stripping any overridden packages automatically using pure bash pattern matching.

Suggested change
sed \
-e '/^--extra-index-url /d' \
-e '/^--find-links /d' \
-e '/^click==/d' \
"$SOURCE_FILE" > "$OUTPUT_FILE"
SED_EXPRS=(-e '/^--extra-index-url /d' -e '/^--find-links /d')
OVERRIDES_FILE="python/requirements/llm/base_pin_overrides.txt"
if [[ -f "$OVERRIDES_FILE" ]]; then
while read -r line; do
[[ "$line" =~ ^[[:space:]]*# ]] && continue
[[ "$line" =~ ^[[:space:]]*$ ]] && continue
trimmed="${line##[[:space:]]}"
pkg="${trimmed%%[^a-zA-Z0-9_-]*}"
if [[ -n "$pkg" ]]; then
SED_EXPRS+=(-e "/^${pkg}==/d")
fi
done < "$OVERRIDES_FILE"
fi
sed "${SED_EXPRS[@]}" "$SOURCE_FILE" > "$OUTPUT_FILE"

Comment on lines +4 to +7
# Each entry needs both the floor here and the pin dropped in
# ci/raydepsets/pre_hooks/strip-llm-constraints.sh. A constraint beats an
# override, and dropping the pin alone just leaves uv on the version already in
# the lock.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Documentation Sync

With the dynamic stripping implemented in strip-llm-constraints.sh, we should update this comment to reflect that the stripping is now automatic.

# Each entry here is automatically stripped from the compiled constraints by
# ci/raydepsets/pre_hooks/strip-llm-constraints.sh. A constraint beats an
# override, and dropping the pin alone just leaves uv on the version already in
# the lock.

@ray-gardener ray-gardener Bot added serve Ray Serve Related Issue devprod llm labels Aug 27, 2026
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>

# Conflicts:
#	python/deplocks/llm/ray_test_py312_cpu.lock
#	python/deplocks/llm/ray_test_py312_cu130.lock
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
@jeffreywang88 jeffreywang88 changed the title [ci][llm] Upgrade to vLLM 0.28.0 [ci][llm] Upgrade to vLLM 0.29.0 Sep 10, 2026
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>

@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 .buildkite/serve.rayci.yml Outdated
- label: ":ray-serve: serve: python {{array.python}} tests ({{array.worker_id}})"
key: serve_python_tests
if: build.pull_request.labels includes "continuous-build" || pipeline.id == "0189e759-8c96-4302-b6b5-b4274406bf89" || pipeline.id == "018f4f1e-1b73-4906-9802-92422e3badaa"
if: build.pull_request.labels includes "continuous-build" || pipeline.id == "0189942e-0876-4b8f-80a4-617f988ec59b" || pipeline.id == "0189e759-8c96-4302-b6b5-b4274406bf89" || pipeline.id == "018f4f1e-1b73-4906-9802-92422e3badaa"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Premerge ID enables extra Serve tests

Medium Severity

The extra Python 3.12 serve_python_tests step now also matches the premerge pipeline ID. Sibling extra-version jobs in core, data, and ml only run on the continuous-build label, postmerge, or microcheck. Including premerge makes that label check ineffective and schedules the extra Serve suite on every regular PR.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit bf0f114. Configure here.

@jeffreywang88

Copy link
Copy Markdown
Contributor Author

Still working on CI. Will ensure everything passes before asking for reviews.

This reverts commit 055f373.

Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
This reverts commit 80a54fe.

Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>

@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.

weights = (
(name, weight) for name, weight in weights if not name.startswith("score.")
)
loader = AutoWeightsLoader(self)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Dropped tied embedding skip logic

Medium Severity

The load_weights rewrite filters score. weights but no longer skips lm_head. when tie_word_embeddings is set. This class replaces the parent loader entirely, so tied Qwen3 checkpoints can still present lm_head tensors that AutoWeightsLoader will try to apply.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1757167. Configure here.

Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>

@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.

There are 3 total unresolved issues (including 2 from previous reviews).

Fix All in Cursor

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

Reviewed by Cursor Bugbot for commit 482632e. Configure here.

Comment thread python/ray/llm/_internal/serve/engines/vllm/kv_transfer/nixl.py
Signed-off-by: Jeffrey Wang <jeffreywang@anyscale.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devprod go add ONLY when ready to merge, run all tests llm serve Ray Serve Related Issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ray fails to serialize self-reference objects

1 participant