Skip to content

Bump base to the v0.26.0 release (off pinned nightlies) + hybrid-DFlash tripwire - #31

Merged
fank merged 1 commit into
mainfrom
claude/bump-base-v0.26.0
Jul 27, 2026
Merged

fank merged 1 commit into
mainfrom
claude/bump-base-v0.26.0

Conversation

@fank

@fank fank commented Jul 27, 2026

Copy link
Copy Markdown
Member

Moves the FROM off a pinned cu129 nightly and back onto a stock release. v0.26.0 is the first tag carrying every capability this image needed nightlies for: the engine streaming parsers (#45413 / #45588 / #45877), DFlash core (#43445) plus hybrid SWA+full drafters (#47914), and DeepSeek-V4 DSpark (#46995). A release is reproducible, Dependabot-trackable and better tested than a nightly SHA tag.

Containment verified before bumping

A newer date does not imply a superset — vLLM cuts release branches, so a later tag can be missing commits present in an earlier nightly. #47914 merged 2026-07-08 yet is absent from v0.25.0 (tagged 07-11) because it landed after that branch cut. Every in-use commit was checked with compare/<sha>...v0.26.0 == ahead: #45877, #46875, #46995, #43445, #47914, #47698, #45207, and the whole current base 9e57de71. v0.25.1s !!!!!-garbage hotfix #48330 is forward-ported.

The vendored patch stays

vllm#46257 (DeepSeek-V4 add_generation_prompt / continue_final_message) is still open, and deepseek_v4_encoding.py on v0.26.0 has neither parameter — so it is still needed. It still applies: test-applied against the tag, 6 hunks at offset -36. The existing behavioral tripwire covers the result.

New tripwire: hybrid-SWA DFlash prereqs

z-lab/Qwen3.6-27B-DFlash is 4-of-5 sliding_attention, so it needs multiple KV groups and therefore the V2 model runner. MRv2 is default for dense models only and Qwen3.6-27B is hybrid GDN, so an env var looks required — it is not: VllmConfig._dflash_needs_multi_kv_group() reads the draft config and force-enables V2 for exactly this case. That is why the bump needs no serve-arg and no PCAI config change. A base that loses the helper would leave V1 selected and fail at boot, so this asserts it. Also asserts #48787s speculative_config.kv_cache_dtype, the new lever that may let the target run fp8 KV while the drafter stays BF16 (untested — tracked in pcai-llm-serving).

Import-only, like the neighbouring tripwires, and it cannot prove acceptance. Worth stating because the failure mode is deceptive: drafts are verified against the target, so a mis-wired drafter still serves correct text — it just stops being accepted, and the only symptom is serving slower than no speculation at all. Validate on Grafana acceptance (~28-30%), never on output looking fine.

Note on scope

vllm#40898 (our old DFlash-SWA carry) was closed unmerged upstream, superseded by #47914 — so the long-standing "drop the block when it merges" plan would never have fired. The block was already deleted in #24 as unused. Nothing to remove here.

Validation

Not built locally (disk-constrained). The CI build on this PR exercises all four tripwires and does not push the image.

…h tripwire

v0.26.0 is the first release carrying every capability this image previously
needed a nightly for: the engine streaming parsers (#45413/#45588/#45877),
DFlash core (#43445) plus hybrid SWA+full drafters (#47914), and DeepSeek-V4
DSpark (#46995). Back on a pinned release means reproducible, Dependabot-
trackable and better-tested than a nightly SHA tag.

Verified v0.26.0 is a superset of the current base 9e57de71 before bumping --
vLLM cuts release branches, so a later tag can miss commits present in an
earlier nightly (#47914 merged 2026-07-08 but is absent from v0.25.0, tagged
07-11). Each in-use commit checked with compare/<sha>...v0.26.0 == "ahead":
#45877, #46875, #46995, #43445, #47914, #47698, #45207, and the whole
9e57de71 base. v0.25.1's #48330 hotfix is forward-ported.

The vendored #46257 gen-prompt patch stays: still open upstream, and
deepseek_v4_encoding.py has neither parameter on v0.26.0. It still applies
(test-applied against the tag: 6 hunks, offset -36).

New tripwire for the Qwen DFlash path. z-lab/Qwen3.6-27B-DFlash is 4-of-5
sliding_attention, so it needs multiple KV groups and therefore the V2 model
runner. VllmConfig._dflash_needs_multi_kv_group auto-forces V2 for exactly
this case, which is why no serve-arg or env change is needed; a base losing
that helper would leave V1 selected and fail at boot. Also asserts #48787's
speculative_config.kv_cache_dtype, which may let the target run fp8 KV while
the drafter stays BF16 (untested, tracked in pcai-llm-serving).

Import-only, as with the other tripwires: it cannot prove acceptance. A
mis-wired drafter still serves correct text -- drafts are verified against the
target -- it just stops being accepted, so the only symptom is being slower
than no speculation. Validate on Grafana acceptance (~28-30%), not on output
looking fine.
@fank
fank marked this pull request as ready for review July 27, 2026 14:34
@fank
fank merged commit 853b735 into main Jul 27, 2026
5 checks passed
@fank
fank deleted the claude/bump-base-v0.26.0 branch July 27, 2026 14:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant