PMAT-3477: Qwen3.5 4B/9B/27B on CPU and CUDA — block_count loader fix + Gated DeltaNet GQA (tiled head mapping) - #3527
Merged
Merged
Conversation
noahgift
enabled auto-merge
September 19, 2026 11:56
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
… the Qwen3.5 sizes diff Pmat-Ticket: PMAT-3477 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 19, 2026
noahgift
added a commit
that referenced
this pull request
Sep 19, 2026
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.
Part of EPIC #3477 (0.68.2 interrupt train). Operator ruling 2026-09-19: dense Qwen3.5 up to 27B on CPU+CUDA is required for 0.68.2.
Root causes
load_qwen35_layersread a bareblock_countkey that no GGUF carries → every Qwen3.5 file got 24 layers. 0.8B/2B have 24 so they were right by accident; 4B (32) and 9B/27B ran truncated models — that is QE2E-INV-001 asserts Qwen3.5-9B ∈ [9.0B, 9.2B] but the repo's own 9b descriptor sums to 8.209B — the descriptor declares no DeltaNet tensors #3346. Now reads{arch}.block_countand refuses when absent.h % num_k_heads— ggml's TILED order (llama.cpp's converter permutes V heads soggml_repeatequals HFrepeat_interleave). Applied in the CPU recurrence and the CUDA delta-rule kernel; recurrent state is[num_v_heads · Dk · Dv].Measured (lambda, RTX 4090)
cargo test -p aprender-gpu --lib --features cuda delta_rule9/9;cargo test -p aprender-serve --lib --features cuda qwen35_cuda16/16 (4B real-file per-layer parity worst 2.25e-2 < 5e-2; e2e cosine ≥ 0.9995, argmax equal at every position).[11751,13,198,32]== llama.cpp (pinned test);apr run --gpu4B 7.7 s / 9B 15.0 s / 27B 34.6 s → "Paris." on the CUDA backend line, no OOM;--no-gpu4B/9B/27B → "Paris.".h / ratioturns 4 grouped device shapes RED; kernelrem→divfails the 4B layer test (6.3e-1) and e2e argmax at pos 0.scripts/model_ladder.sh, 8 rungs, cpu+cuda golden per rung): lambda (RTX 4090 sm_89) receiptlambda:/mnt/nvme-raid0/agent-wt/rel-0682-autopilot/receipts-c58062517/lambda.json— qwen2-1.5b, qwen3-1.7b, qwen35-0.8b/2b/4b/9b/27b OK "backends cpu,cuda honoured"; only the optional qwen3-8b rung red (golden "Empty output", apr qa Golden Output reports 'Empty output' on Qwen3-8B — 32-token budget is consumed by <think> and the stripper leaves nothing; the rung cannot be certified by the harness #3486, unchanged from 0.68.1). gx10 (GB10 sm_121) at the content-identical pre-rebase head 6396fdd: 8/8 green incl. GPU golden on all five Qwen3.5 sizes (gx10:~/probe/receipts-6396fdd66/gx10.json); re-run at c580625 (this head):gx10:/home/noah/probe/receipts-c58062517/gx10.json— executed=8 red=0, every rung "qa cap+golden pass, backends cpu,cuda honoured" (incl. qwen3-8b), the five Qwen3.5 rows carrying golden_output "3 golden test cases passed through the runtime entry point (GPU hybrid forward, GPU: implement Gated DeltaNet / SSM inference for Qwen3.5 / Qwen3.8 hybrid GGUFs #3090)". Receipts are NOT committed here (evidence/dogfood/models/0.68.1/ is owned by evidence(ladder): 0.68.1 receipts re-measured at main a6f54e84c on both hosts — eight rungs with sha256, RED by construction on Qwen3.5 (#3510) #3523; the 0.68.2 receipts land in the bump PR at T-2).docs/audits/quorum-PMAT-3477-pr3527.json.keep-open: #3477 (epic closes at the tag)
keep-open: #3090 (closes when the ladder receipts land)
Closes #3346
Closes #3510
🤖 Generated with Claude Code