Validated vllm 0.26 / torch 2.11 waypoint (runs on CUDA 12.8 drivers) - #1874
Draft
abhishekraok wants to merge 9 commits into
Draft
abhishekraok wants to merge 9 commits into
abhishekraok wants to merge 9 commits into
Conversation
…uide Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
vllm 0.26.0 pins torch 2.11.0, the same version the OLMoE3 KDA MoE requires, so this unifies the stack. Fallout handled: - transformers override floor raised to vllm's own >=5.5.3 (locks 5.16.1) - torchcodec (new vllm dep) ships no cu128 builds >=0.14: cuda12 takes the +cpu build, cuda13 takes +cu130 - required-environments added so the resolver skips versions with no x86_64 Linux wheel (xgrammar 0.2.4 has aarch64/macOS wheels only) - openai upgraded to 3.6.0 (vllm's tool parsers need NamespaceTool; its >=2.0.0 floor is too loose) - flash-attn/FA3 stay on torch2.10-built wheels: no torch 2.11 builds exist anywhere (builders went 2.10 -> 2.13); the cross-ABI pairing is the one the KDA MoE spike already trained on Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- flash-attn-4 beta19: newest fa4 whose declared ranges admit vllm 0.26's exact nvidia-cutlass-dsl==4.6.0 and apache-tvm-ffi==0.1.10 pins; the b5 wheel targets the removed cutlass 4.4 API (cute.core.ThrMma) and broke every import of olmo_core.nn - olmo_adapter: config.num_labels is int | None in transformers 5.16; guard and annotate Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- vllm 0.26 replaced Qwen3XMLToolParser with Qwen3EngineToolParser; update the vllm_qwen3_xml registry entry - datasets>=4.8.4,<5: older datasets imports torchvision.io.VideoReader, removed in torchvision 0.26, which broke 9 tests (and would kill tokenization jobs hours in) Full CPU suite now: 738 passed, 13 skipped, 0 failed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
vllm 0.26's PyPI wheels link libcudart.so.13 and die at import on the cu128 stack (Beaker job 01M1DXFDC6FX8NXXA4FNRFC23M); no cu128 build exists for 0.26. The +cu129 build plus CUDA 12.x minor-version compatibility covers the 12.8-driver fleet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
torch 2.11 wraps config modules (torch.distributed.config et al.) in ConfigModuleInstance subclasses; cloudpickle only pickles modules by reference when the type is exactly ModuleType, so Ray's actor export died with "cannot pickle 'ConfigModuleInstance'" at ModelGroup creation (Beaker 01M1DZMV5N045GWC6H5TFCY612). A __reduce__ on the ConfigModule base restores by-import-path pickling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same 'ray' semantics; caught by the GPU smoke at first weight sync (Beaker 01M1E1609HCYYG9NEF3T34SKDG). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The weight-transfer protocol now requires start_weight_update before and finish_weight_update after update_weights (enforced server-side: 'start_weight_update must be called before update_weights', Beaker 01M1E1Q78Q6WBHJRZC2BFN6KDF). Every sync here sends all weights in one unpacked call, so bracketing inside LLMRayActor.update_weights covers both the IPC and NCCL paths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
Documentation Changes Detected📄
|
Contributor
Documentation Changes Detected📄
|
This was referenced Sep 2, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Claude Code · session 09974a79 (claude.ai/code), for @abhishekraok
What this is
A fully GPU-validated vllm 0.19.1 → 0.26.0 / torch 2.10 → 2.11 upgrade that runs on the current CUDA 12.8-driver fleet (jupiter/ceres/saturn/titan, not just holmes). Kept as a draft on purpose — see "Relationship to #1873" below for why this may never merge, and under what conditions it should.
The key enabling fact: PyPI vllm wheels are CUDA 13 builds from 0.26 onward, but vllm publishes cu129 wheels at wheels.vllm.ai, and CUDA 12.x minor-version compatibility runs them fine on 12.8 drivers — verified on real H100 nodes with real training, not just imports.
Relationship to torch-213-upgrade (#1873)
@gregorybchris's #1873 targets the right endpoint (torch 2.13 / vllm 0.28 / single cu130 build) and supersedes the vllm-integration parts of this branch — vllm 0.28 deleted the 0.26 weight-sync API this branch migrates to. This PR exists for two reasons:
Merge this only if someone needs vllm ≥0.26 on the 12.8-driver clusters before #1873 lands. Otherwise close it once #1873 is validated. The datasets pin here duplicates #1867 and drops out on rebase once that merges.
Changes
+cu129on the cuda12 stack,+cu130on cuda13), which moves torch to 2.11.0 — the version the OLMoE3 KDA MoE requires (CUBLAS_STATUS_NOT_INITIALIZEDon 2.10), so this also dissolves thespike/s004-moeoverride-dependencies hack.override-dependenciesfloor to>=5.5.3so the lock stops silently overriding vllm's own requirement), openai → 3.x, datasets>=4.8.4,<5(torchvision 0.26 removedVideoReader; same as Bump datasets to >=4.8.4,<5 #1867), torchcodec added per-stack (+cpuon cuda12 — no cu128 builds exist past 0.14 — and+cu130on cuda13).nvidia-cutlass-dsl==4.6.0+apache-tvm-ffi==0.1.10pins (older betas call the removedcute.core.ThrMma; beta20+ pin4.6.0.dev0ortvm-ffi>=0.1.12). flash-attn 2 / FA3 stay on torch2.10-built wheels — no torch 2.11 builds exist anywhere (wheel builders went 2.10 → 2.13); cross-ABI loading is validated by both GPU smokes below.vllm_utils.py:IPCTrainerSendWeightsArgs.mode→send_mode;update_weightsnow requires astart_weight_update/finish_weight_updatebracket.Qwen3XMLToolParser→Qwen3EngineToolParserinenvironments/tools/parsers.py.torch.utils._config_module.ConfigModuleinstances (e.g.torch.distributed.config) subclassModuleTypebut fail Ray's cloudpickle exact-type check, killing every Ray actor export. Fixed with a__reduce__that re-imports by module name.olmo_adapter:config.num_labelsisint | Nonein transformers 5.16 — narrowed with an explicit error.required-environmentsso xgrammar resolves to versions with x86_64 wheels; newvllm-cu129/vllm-cu130indexes.Validation
Runs:
scripts/test/run_gpu_pytest.shhas not been run yet; it will be before this leaves draft, if it ever does.🤖 Generated with Claude Code