Skip to content

feat(serving): Qwen3.8-27B frontier lane — catalog row + native MTP spec-decode (#440) - #2310

Merged
joelteply merged 1 commit into
canaryfrom
feat/qwen38-27b-mtp-serving
Aug 15, 2026
Merged

feat(serving): Qwen3.8-27B frontier lane — catalog row + native MTP spec-decode (#440)#2310
joelteply merged 1 commit into
canaryfrom
feat/qwen38-27b-mtp-serving

Conversation

@joelteply

Copy link
Copy Markdown
Contributor

What

Wires ggml-org/Qwen3.8-27B-GGUF (Joel's directive: open models now beat Opus-class on agentic coding — SWE-bench Pro 61.7 vs Opus 4.6 Max 53.4) into serving, with native MTP speculative decode.

  1. artifacts.rsis_main_model_gguf excludes mtp-*.gguf draft heads. Without this the change is a live outage: the snapshot ships main+mtp+mmproj in one dir, the draft downloads AFTER the main weights, and mtime-newest selection would serve the 1.6GB draft head as the 27B model (the exact Build(deps-dev): Bump @types/node from 22.14.0 to 24.2.1 #106 clip failure shape). New resolve_mtp_draft_for_model mirrors the resolve_mmproj_for_model pattern — artifact presence IS the capability signal.
  2. llama_server.rs — draft resolves → spawn adds --spec-type draft-mtp --spec-draft-model … --spec-draft-n-max 4 --spec-draft-p-min 0.7 (field-measured 40.7→60.1 t/s decode on 4090). No draft → no flags → byte-identical.
  3. catalog.rs — Qwen3.8-27B row: Arch::Qwen35, 262k native context, Vision, verified hf_source. Installed fork llama-server (build 10196) verified to expose draft-mtp + qwen35 + mmproj.

Verification

  • cargo check -p continuum-core --features metal,accelerate clean
  • 46 model_registry tests green incl. new regression mtp_draft_head_never_wins_main_model_resolution_but_resolves_as_draft and catalog anchor validation with the new row
  • Artifacts already on disk in HF cache (Q4_K_M 18G + mtp-Q4_0 1.6G + mmproj-Q8_0 600M)

Live proof owed after the next reboot: a lane serving Qwen3.8-27B with the MTP flags visible in its cmdline.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo

…pec-decode via artifact-sibling resolution (#440)

Joel's directive 2026-08-15: ggml-org/Qwen3.8-27B-GGUF beats Opus-class on
agentic coding (SWE-bench Pro 61.7 vs Opus 4.6 Max 53.4, QwenSWEBench 79.0
vs 63.8) and serves at frontier speed on consumer hardware — get benchmarks
killing it.

Three pieces, all data-driven, zero per-machine paths:

1. artifacts.rs — `is_main_model_gguf` now excludes `mtp-*.gguf` draft heads.
   Without this the fix is a live outage: the ggml-org snapshot ships main +
   mtp + mmproj in ONE dir, the draft downloads AFTER the main weights (live
   ordering 02:48/02:49), and mtime-newest candidate selection would serve
   the 1.6GB DRAFT HEAD as the 27B model — the exact #106 clip failure shape
   its own comment glass-boxes. New `resolve_mtp_draft_for_model` +
   `find_mtp_draft_beside` are the draft-POSITIVE scan, the same pattern
   `resolve_mmproj_for_model` established: artifact presence IS the
   capability signal.

2. llama_server.rs — when a draft head resolves, the spawn adds
   `--spec-type draft-mtp --spec-draft-model <head> --spec-draft-n-max 4
   --spec-draft-p-min 0.7`. MTP heads are trained WITH the model:
   field-measured decode 40.7 → 60.1 t/s (RTX 4090) for ~0.1GB extra state.
   No draft file → no flags → byte-identical serving.

3. catalog.rs — the Qwen3.8-27B row: Arch::Qwen35 (fork carries
   LLM_ARCH_QWEN35 + draft-mtp + the mmproj vision path; installed
   llama-server build 10196 verified to expose all three), 262k native
   context, Vision (mmproj ships in-snapshot), hf_source Qwen/Qwen3.8-27B
   (verified live: repo exists, arch qwen3_5), embedded template + --jinja.

Regression test pins the resolution split: draft head never wins main-model
resolution regardless of mtime, stays discoverable as the draft, and its
absence resolves None (pre-#440 byte-identical serving). 46 model_registry
tests green incl. catalog anchor validation with the new row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
@joelteply
joelteply merged commit 380a304 into canary Aug 15, 2026
5 checks passed
@joelteply
joelteply deleted the feat/qwen38-27b-mtp-serving branch August 15, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant