Fable-Fusion-711 27B — MTPLX 8-bit (native MTP + vision)

MLX 8-bit build of DavidAU's Qwen3.6-27B Fable-Fusion-711 tune, packaged as a native MTPLX artifact: working multi-token-prediction head (bf16 sidecar + calibrated runtime contract) for exact speculative decoding, plus the vision tower for image input. 30.3 GB.

This is the first MLX conversion of Fable-Fusion in any form.

Behavioral correction — July 26, 2026

This conversion faithfully reproduces the released Fable-Fusion weights, but those weights do not reproduce the source card's 4/100 refusal claim. On the exact Heretic KeywordRate protocol (same 100 prompts, system prompt, 100-token cap, and 33 substring markers), official Qwen scored 99/100, DavidAU's released Q6_K scored 81/100, and this converted tune scored 79/100. All outputs were non-empty.

KeywordRate is a refusal-marker proxy, not a semantic compliance judge. Accordingly, this repository is no longer described or tagged as uncensored. For the later official-Qwen reduced-refusal artifact, see Qwen3.6-27B-Refusal-Ablation-v2-MTPLX-6bit.

Decode throughput receipt — M5 Max (128 GB)

Measurement revision, 2026-07-30. The earlier single-sample figures were plausible observations, but they did not characterize run-to-run or path-dependent variation. A much lower correction posted on 2026-07-28 was itself wrong because that run was load-confounded; it has been withdrawn. The condition-instrumented receipt below supersedes both for this exact protocol.

These are decode rates for one pinned long-code prompt and sampler on one Apple M5 Max. Each range contains three measured trials; it is an observed range, not a confidence interval or a universal performance guarantee.

Mode Decode throughput across 3 trials Trial completion Conditions captured with trials
Autoregressive 17.38–17.59 tok/s 3/3 reached 256 tokens load1 2.90–3.25; nominal
MTP depth 1 30.41–31.62 tok/s 3/3 reached 256 tokens load1 2.38–2.90; nominal
MTP depth 2 39.26–40.62 tok/s 3/3 reached 256 tokens load1 2.19–2.46; nominal
MTP depth 3 45.72–46.72 tok/s 3/3 reached 256 tokens load1 2.34–2.76; nominal

The three trials were internally tight, but three seeds do not characterize every possible MTPLX runtime path. Prompt context copy was left at its default, and this first probe did not capture its separate counters. These ranges are therefore narrow receipts for seeds 0–2, not evidence that a copy-heavy path can never occur on another sample.

Draft acceptance

These are ordinary-MTP positional accepted/drafted ratios, pooled over the three trials. They exclude any prompt-context-copy tokens. Each entry is pooled ratio (accepted/drafted) [minimum–maximum per trial].

Mode Position 1 Position 2 Position 3
D1 93.51% (360/385) [91.80–95.42%]
D2 94.34% (250/265) [90.59–96.67%] 86.79% (230/265) [84.71–87.78%]
D3 92.06% (197/214) [89.86–93.15%] 83.64% (179/214) [80.82–85.51%] 74.06% (157/212) [67.65–77.78%]

These measured positional ratios supersede the former card shorthand 85% / 65% / 47%, which does not agree with either the independent probe or the completed mtplx tune receipt under their recorded acceptance definitions.

Exact measurement scope

The measurement tool was the local probe_fable711_mtp_independent.py harness, not mtplx tune. It calls mtplx.generation.generate_ar and generate_mtpk directly with this artifact's hashed MTP runtime contract. The recorded command shape was:

python probe_fable711_mtp_independent.py <model-path> \
  --label 8bit \
  --max-tokens 256 \
  --warmup-tokens 24 \
  --repetitions 3 \
  --bridge-pid 35920 \
  --out fable711_independent_8bit.json

Held fixed: the single long_code_uncapped prompt; chat template with thinking disabled; seeds 0, 1, and 2; temperature 0.6, top-p 0.95, top-k 20; 24-token warmup per mode; 256 measured tokens per trial; performance-cold; persistent MTP cache; committed MTP history; capture_commit; and linear-gdn-from-conv-tape. Modes ran serially in one model process.

The run used macOS 27.0, MLX 0.32.0, MTPLX 2.3.0, and Python 3.13.14 on AC power. Conditions were captured immediately before and after every trial: 1-minute load average was 2.19–3.25; thermal state was nominal throughout; and no known competing GPU benchmark was detected. Fan RPM was not determinable, and actual per-process GPU attribution was not determinable without privileged telemetry.

A separate completed single-run mtplx tune receipt used a 512-token cap and reported AR/D1/D2/D3 of 17.72/32.57/40.57/51.98 tok/s. It is not pooled into the table because its orchestration, seed count, and run length differ; its D1 and D3 results lie outside the three-trial direct-probe ranges. No reconciliation between those harnesses is asserted.

Primary evidence receipts: fable711_independent_throughput_protocol.json, fable711_independent_8bit.json, fable711_independent_throughput_comparison.json, and tune_MTPLX-8bit_clean.json. Their SHA-256 values begin, respectively, 4e9c4134…, 9485033c…, 6862553f…, and 418fa86f…; the independent-run validator passed 38/38 checks.

Other measured checks

Check Result
AIME quick bench (5 problems) 5/5
Executable coding eval (8 tasks, tests run) 8/8
Perplexity — wikitext-2, ctx 2048 5.7531

Perplexity context, same harness throughout: the bf16 reconstruction measures 5.7525, so this quantization costs +0.0006 — inside the ±0.034 measurement uncertainty, i.e. indistinguishable from bf16. DavidAU's Q8_0 GGUF measures 5.6635 under llama.cpp's own methodology (different tokenizer/BOS handling, so treat it as a sanity anchor rather than a directly comparable number).

Serving

mtplx pull philipjohnbasile/Qwen3.6-27B-Fable-Fusion-711-MTPLX-8bit      # native MTP speculative decoding + vision
mtplx serve --model philipjohnbasile/Qwen3.6-27B-Fable-Fusion-711-MTPLX-8bit

It is also a plain MLX checkpoint — mlx_lm will run it autoregressively and ignore the MTP sidecar:

mlx_lm.generate --model philipjohnbasile/Qwen3.6-27B-Fable-Fusion-711-MTPLX-8bit --prompt "Hello" --max-tokens 100

What carried over from the source name

  • Fable-Fusion-711 / NM are weight-level: this is DavidAU's exact tune, dequantized from his own Q8_0 export. The source repository includes Uncensored-Heretic in its name, but that behavioral claim did not survive the released multi-stage tune/merge.
  • MTP is his tune's own head, kept at bf16 — higher precision than the Q8_0 MTP tensors in the GGUF — then forge-calibrated and verified at depths 1–3.
  • NEO / MAX do not apply. NEO-Imatrix shapes his sub-8-bit GGUF quants only; the Q8_0 source doesn't use it, so nothing was lost taking this path. MAX (16-bit output tensor) is GGUF packaging — here lm_head sits at body precision.
  • Vision works (tower grafted from mmproj-BF16.gguf, verified on real images).

How this was made (and the traps if you try it)

DavidAU published GGUF only, so this was reconstructed from his highest-precision export — the Q8_0 MTP GGUF — by inverting every transform llama.cpp applies when it converts Qwen3.5/3.6. Get any of these wrong and the model degenerates while still passing consistency-style checks:

  1. Zero-centered RMSNorm baking. GGUF stores these norms as weight + 1: input/post-attention layernorms, q/k norms, the final norm, and all mtp.* norms (nextn.enorm / hnorm / shared_head_norm). mlx-lm's qwen3_5 sanitize adds +1 itself, so a naive conversion double-shifts. Gated linear_attn.norm and the vision norms are NOT baked.
  2. Gated-DeltaNet value-head reorder (_LinearAttentionVReorderBase in llama.cpp's conversion/qwen.py). V heads move from HF grouped order to ggml tiled order in in_proj_qkv (V rows), in_proj_z, in_proj_a, in_proj_b, A_log, dt_bias, conv1d (V channels), and out_proj (columns, not rows). Note the first V head occupies the same offset in both orderings — spot-checks at offset 0 are blind to this bug.
  3. ssm_a = -exp(A_log) — recover with log(-x), then apply the reorder.

MTP head mapping: blk.<last>.nextn.{eh_proj,enorm,hnorm,shared_head_norm}mtp.{fc,pre_fc_norm_embedding,pre_fc_norm_hidden,norm}, and the final block's attention/MLP → mtp.layers.0.*.

Every tensor was shape-checked against Qwen/Qwen3.6-27B and the layout verified by cosine similarity against base values (a finetune leaves many tensors at or near base, so a residual permutation shows up as ~0 correlation). All families landed at 0.99–1.0000 after inversion.

Independently validated. After these builds were published, an F32 copy of the same tune surfaced: nightmedia/Qwen3.6-27B-Architect-Polaris2-Fable-B-F451-F32 (112 GB, mergekit nuslerp). It has the identical structure — 1199 tensors, 15 mtp.*, 333 vision — and this reconstruction matches it at cosine 0.99997 on mtp.fc.weight and 1.00000 on model.language_model.norm.weight. The residual is precisely the Q8_0 step this copy came through, so the inverse transforms above are confirmed correct against a source never used to derive them.

If you want the highest-fidelity starting point for your own quants, prefer that F32 repo over this reconstruction — it never passed through a quantizer.

Credits and license

  • DavidAU — the Fable-Fusion-711 tune and the Q8_0 MTP export this is reconstructed from. Please read his model card for the tune's capabilities, sampler guidance, and class notes.
  • Qwen — Qwen3.6-27B base.
  • MTPLX — forge pipeline and MTP runtime.

Apache-2.0, inherited from the source model.

Intended use

Research and creative work. Do not assume this model is refusal-free; deploy behind your own policy and logging layer.

Downloads last month
2,273
Safetensors
Model size
27B params
Tensor type
BF16
·
U32
·
MLX
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for philipjohnbasile/Qwen3.6-27B-Fable-Fusion-711-MTPLX-8bit