Repository navigation
chore: bump vLLM to 0.32.0 - #4140
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f92627e. Configure here.
|
|
||
| assert pattern_config.layer_types == expected | ||
| assert list_config.layer_types == expected | ||
| assert legacy_config.layer_types == expected |
There was a problem hiding this comment.
Legacy layer names stay unmapped
Medium Severity
The new legacy_config assertion expects mamba and attention to become linear_attention and full_attention, but NemotronHConfig stores layers_block_type unchanged and never remaps. layer_types is only an attribute_map alias, so this check fails or construction raises when transformers validates the old names against the new vocabulary. This GPU-marked test was not in the non-GPU run, so the gap was not caught.
Reviewed by Cursor Bugbot for commit f92627e. Configure here.
Resolve the conflicts from the vLLM 0.32 / transformers 5.19 bump (#4140): - transformers 5.19 knows GLM-5.3 Flash's layer types, so drop the `allow_glm5_next_layer_types` shim with the rest of `transformers_compat.py` (deleted upstream), and keep the KDA conv-weight patch in `patches.py`. - transformers now renames the checkpoint's `deepseek_sparse_attention` layer type to `indexed_attention` on load; match the new name in the decoder layer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>


Bumps vLLM 0.31.0 -> 0.32.0.
Dependencies
vllm0.32.0 wheel. torch stays 2.13.0, flashinfer stays 0.7.0.post1.transformers5.6.2 -> 5.19.0 (vLLM 0.32 requires>=5.16.1,<5.20; 5.19.0 is what vLLM's CI tests). Thetransformers==5.6.2override is removed.tokenizers0.22.2 -> 0.23.3.nvidia-cutlass-dsloverride 4.7.1 -> 4.8.0 (exact pin in vLLM 0.32).tokenspeed-mla0.2.15,humming-kernels0.1.17,instanttensor0.2.2,xgrammar0.2.8 come from vLLM;humming-kernelsandinstanttensorare exempt from the 7-day cutoff.ifbenchis excluded from the workspace: it pinssetuptools<78, vLLM 0.32 needs>=78.1.1. No config or test references it.Patches deleted (fixed upstream in 0.32)
monkey_patch_shm_buffer_ownership: [Bugfix][Distributed] Own SHM out-of-band buffers before releasing read slots vllm-project/vllm#61000.monkey_patch_tokenize_params_validation: [Bugfix] Treat max_tokens as output upper bound, not input-space reservation vllm-project/vllm#57035 (max_tokensis an upper bound, not reserved from the context).monkey_patch_nano_v3_reasoning_parser: upstreamnemotron_v3parser. The Nemotron 3 Nano / 3.5 auto-detection now picksnemotron_v3. Configs that setreasoning_parser = "nano_v3"must rename it.layer_typesshim (utils/transformers_compat.pyand its vLLM patch): transformers >= 5.15 knows the V4 layer types.Breakages fixed
serving_tokens.py:GenerateResponseChoiceis gone andGenerateResponseis now a discriminated union ([Frontend] Add output_mode to /inference/v1/generate (RFC #56851 Phase 1) vllm-project/vllm#58588). SubclassGenerateTokensChoice/GenerateTokensResponseand checkisinstanceagainstGenerateTokensResponse.prefill_logprobs: validate withGenerateTokensResponse(the union alias has nomodel_validate_json)._patch_lora_key_prefix: re-copied from 0.32'sLoRAModel.from_local_checkpoint; tensorizer support was removed upstream ([LoRA] Remove tensorizer vllm-project/vllm#60024).mamba→linear_attention,attention→full_attention) by settingconfig.layer_types, which was a read-only property.layer_typesis now anattribute_mapalias oflayers_block_type(as upstream), and the model and conversion code use the new names. Hub configs with legacylayers_block_typeorhybrid_override_patternload as before.from_configthrough the auto class now swaps a composite config for its text config; the tests build VLMs withQwen3_5ForCausalLM, as the trainer does.monkey_patch_kv_xfer_finished_tolerate_freed: synced the copied method with 0.32 (_set_kv_fetch_stage(req, KV_FETCH_COMPLETED_WAITING)).Still needed on 0.32 (fixes land in 0.33 or are not merged): DeepSeek V4 C128 boundary, DeepSeek V4
attn_sinkloading, GPT-OSS weight loading, KV-transfer freed assert, MiniMax think-end, routed experts with P/D connectors. Every remaining patch target still exists in 0.32; targets whose source changed were checked against the new source.Validation
CPU:
pytest tests/unit -m "not gpu"854 passed; ruff clean. Import/attribute check of everyvllmimport and monkey-patch target insrc/andtests/against 0.32: no missing names; patched methods whose source changed were reviewed.GPU (H200, max 2 nodes; 0.31 baselines use main's lock at the same base commit, same nodes):
tests/unit -m gpu(NemotronH, Qwen3.5, Mamba CP, DSv4 kernels, …)fp8_per_block), NCCLdisable_custom_all_reduce = true³max_tokens4096,max_model_len16384), plain and router-replay server/generate15.9k + 4096 → 200, capped atmax_model_len; 16.4k prompt → 400¹ The DSv4
cudnn_flashmlakernel tests fail the same way on main when vLLM's DSv4 test loads first (FlashMLA symbol clash); with #4139 applied they pass on 0.32 (123 passed).² Each integration module's
test_dashboardneedsplaywright install --with-deps, which fails on our nodes; all other tests pass.³ 0.32 uses the custom all-reduce under
VLLM_BATCH_INVARIANT=1(vllm-project/vllm#58623). Two TP>1 servers then no longer decode bit-identically, so P/D only matches colocated serving bit-for-bit withdisable_custom_all_reduce = true. prime-rl does not set batch invariance; RL is unaffected (GLM row above).Not covered: Qwen3.5/Qwen3.8 PLE reload (no checkpoint on disk); GLM-4.5-Air disaggregated RL (needs 3 nodes). Router-replay requests need
top_k > 0andtemperature > 0(sampling-mask replay), on 0.31 and 0.32 alike.Note
Medium Risk
Touches core inference dependencies and removes several runtime patches; misalignment with vLLM 0.32 APIs or Nemotron parser changes could break rollouts or serving until configs are updated.
Overview
Upgrades the inference stack from vLLM 0.31.0 to 0.32.0, with matching pins:
transformers5.19.0,nvidia-cutlass-dsl4.8.0, and direct wheel URLs.ifbenchis dropped from the uv workspace because itssetuptools<78pin conflicts with vLLM 0.32.Several vLLM workarounds are removed now that upstream fixed them: SHM buffer ownership on dequeue, relaxed
TokenizeParamsprompt-length checks, the customnano_v3reasoning parser, and the DeepSeek V4layer_typestransformers shim (transformers_compat.py). Nemotron 3 Nano / 3.5 auto-detection now uses the built-innemotron_v3parser instead ofnano_v3.API follow-ups for 0.32: token-in/token-out serving and
prefill_logprobsuseGenerateTokensChoice/GenerateTokensResponseinstead of the oldGenerateResponse*types. The LoRA checkpoint patch is re-synced from 0.32 (tensorizer path removed). The KV-transfer “freed request” patch adds_set_kv_fetch_stage(..., KV_FETCH_COMPLETED_WAITING)to match upstream.Trainer Nemotron-H aligns layer-type names with newer transformers (
linear_attention,full_attention) viaattribute_map, while still accepting legacymamba/attentioninlayers_block_type.Reviewed by Cursor Bugbot for commit f92627e. Bugbot is set up for automated code reviews on this repo. Configure here.