Skip to content

PMAT-3477: apr parity measures the Qwen3.5 hybrid on CPU vs CUDA (C14) — hybrid arm, measured threshold basis, K-quant resolver - #3534

Merged
noahgift merged 3 commits into
mainfrom
PMAT-3477-parity-hybrid
Sep 19, 2026
Merged

noahgift merged 3 commits into
mainfrom
PMAT-3477-parity-hybrid

Conversation

@noahgift

Copy link
Copy Markdown
Member

0.68.2 T-2 preflight at main e729859, row C14: apr parity on Qwen3.5 failed with "Failed to create model: … Qwen3.5 hybrid" — #3517 made parity_refusal_for stop refusing qwen35 (it has a GPU forward now) but parity_03.rs::run still built the dense OwnedQuantizedModel, so the previous UNMEASURED-TOOL report became a FAIL.

What lands

  1. Hybrid arm (parity_hybrid.rs, include!-ed at the end of parity.rs): for hybrid_forward_handles(arch) the CPU Qwen35Model and the GPU Qwen35CudaModel run the same prompt position by position and feed the existing SpcMetrics / verdict / JSON path untouched; a header-only quant refusal still refuses hybrids whose GGML type has no GPU GEMV kernel (IQ4_XS etc.).
  2. Thresholds (evidence/parity/thresholds.yaml): the CPU-vs-llama.cpp leg row (min_cosine deliberately absent, CPU parity reference for qwen35: build it from the GPU methodology, not from the PR it measures #3303) is keyed qwen3.5-0.8b@cpu-vs-llama.cpp — under the bare name judge() reached it for the GPU record and failed closed on a number absent for a different reason. qwen3.5-0.8b / qwen3.5-9b get GPU-vs-CPU rows at 0.99 with a measured basis: lambda 0.998971 ×5 / 0.999254 ×5 (stdev 0), gx10 0.999176 ×3 / 0.999351 ×3 (peer session, same head), known-bad = the DP4A-through-recurrence falsifier (cosine 0.466 → −0.246, the standing test). Argmax is not part of the rule: 1–4 near-tie flips per record on both hosts at cosine ≥ 0.9994, the same class as the dense known-good records.
  3. Resolver (check_model_parity.sh): among IQ4_XS / Q4_K_M / UD-IQ2_XXS sharing a logical name the K-quant twin is picked (sort order picked IQ4_XS and reported UNMEASURED-TOOL for a model it could measure). Self-test 26/26 incl. four new rows.

Measured by the orchestrator (lambda, RTX 4090, this head)

  • cargo test -p apr-cli --lib --features cuda parity 205 passed; cargo fmt --all -- --check clean; clippy -D warnings clean.
  • scripts/check_model_parity.sh --manifest: PASS qwen3.5-0.8b (78 positions, min cosine 0.9990), PASS qwen3.5-9b (0.9993), dense rows unchanged.

keep-open: #3477 (epic closes at the tag)
keep-open: #3090 (closes at the tag with the receipts)

🤖 Generated with Claude Code

noahgift and others added 2 commits September 19, 2026 17:45
…ead of failing in the dense loader (C14, #3090)

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…vs-llama.cpp leg row is keyed as such, qwen3.5-0.8b/9b get a measured GPU basis (n=5 lambda, n=3 gx10, DP4A falsifier as the known-bad), and the resolver prefers the Q4_K_M twin

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@noahgift
noahgift enabled auto-merge September 19, 2026 16:03
…ing too (DP4A through the recurrence, +0.179 to -0.765)

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3534 head=721bc7d647fc875ae5077286a66bf916257e6e07 verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

@noahgift
noahgift added this pull request to the merge queue Sep 19, 2026
Merged via the queue into main with commit ca34c84 Sep 19, 2026
25 of 26 checks passed
@noahgift
noahgift deleted the PMAT-3477-parity-hybrid branch September 19, 2026 17:51
noahgift added a commit that referenced this pull request Sep 19, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
guyernest pushed a commit to guyernest/aprender that referenced this pull request Sep 29, 2026
* release: 0.68.2

bump-version.sh 0.68.2 (every workspace, facades included; --check green) and the CHANGELOG [0.68.2] section,
per docs/specifications/06x-release-schedule.md §4.2. After this merges, rel-0682-autopilot runs APR-RELEASE-001 §4 T-1..T-4 + close:
deep (T-1, local), pre-publish dogfood, tag + release, clean-room.yml dispatched on the tag (T-3, run id recorded), assets by command, preflight, cascade (T-4, automated), install, host + installer receipts, close.

Pmat-Ticket: PMAT-3477
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* release: 0.68.2 CHANGELOG — Qwen3.5 on CUDA up to 27B (paiml#3517, paiml#3527) and every PR merged since v0.68.1

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* evidence(ladder): 0.68.2 receipts measured from the bump tree on lambda (sm_89) and gx10 (sm_121) — every required rung green on both hosts; qwen3-8b optional red on lambda (paiml#3532)

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* contracts: arm ladder-measured + ladder-green shapes for 0.68.2; contracts.nt regenerated with the two 0.68.2 ladder receipts as focus nodes (ONT-4c1, paiml#3508)

Pmat-Ticket: PMAT-3477

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* CHANGELOG 0.68.2: rows for paiml#3533, paiml#3534 (merged since the cut)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* CHANGELOG 0.68.2: row for paiml#3528

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* CHANGELOG 0.68.2: rows for paiml#3526, paiml#3530 (merged-since-tag predicate now 0)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* CHANGELOG 0.68.2: row for paiml#3536

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Alfredo Deza <alfredo@deza.pe>
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