--- license: agpl-3.0 language: - en library_name: mlx pipeline_tag: image-text-to-text base_model: - lordx64/Qwable-v2 base_model_relation: quantized datasets: - lordx64/fable-sft-combined-v2 - lordx64/agentic-distill-fable-5-sft - lordx64/fable-tool-use-sft - lordx64/reasoning-distill-opus-4-7-max-sft tags: - mlx - oq - imatrix - dwq - quantization - 4-bit - mtp - speculative-decoding - agentic - tool-use - reasoning - chain-of-thought - qwable-v2 - qwen3.6 - mixture-of-experts - moe - image-text-to-text - vision --- # Qwable-v2-oQ4e-DWQ-MTP-Vision-MLX A **4-bit MLX quantization** of [`lordx64/Qwable-v2`](https://huggingface.co/lordx64/Qwable-v2) — **vision + text**, with an embedded **MTP** head for speculative decoding. Built with a two-stage recipe: **imatrix mixed-precision (`oQ4e`) → Distilled Weight Quantization (`DWQ`)**, the strongest 4-bit path we could measure on this model. > ⚠️ These are quantized weights. **All capability comes from the base model** > [`lordx64/Qwable-v2`](https://huggingface.co/lordx64/Qwable-v2) — please star/cite it first. > This repo's contribution is the quantization + MTP/vision packaging and its > fidelity/speed validation. ## Model lineage ``` Qwen/Qwen3.6-35B-A3B (base, 35B MoE · 256 experts · ~3B active · 262k ctx) └─ lordx64/…-Claude-4.7-Opus-Reasoning-Distilled (SFT distill of Claude Opus 4.7 reasoning) └─ lordx64/Qwable-v2 (+ Claude Fable-5 agentic / tool-use LoRA) └─ THIS REPO: oQ4e (imatrix) → DWQ 4-bit MLX + MTP + vision ``` Qwable-v2 is an **open-weights agentic coding model**: it **thinks** in explicit `` chains-of-thought (from the Opus-4.7 prior) and **acts** like a Claude-Code-style agent — emitting `` XML with real Claude Code tool names (`Read`, `Edit`, `Bash`) and correct field signatures. The agentic XML is **system-prompt-conditional** (reliable with an agent-style system prompt or after a `` turn; bare prompts fall back to prose). - **Architecture:** Qwen3.6-35B-A3B — Mixture-of-Experts, 256 experts (8 routed + 1 shared), ~3B active params/token, up to **262,144-token context**. - **This repo:** imatrix 4-bit quant, DWQ-distilled, with MTP and the vision tower preserved. ## Quantization: `oQ4e` (imatrix) → `DWQ`, 4-bit A **two-stage** learned quant, not a plain round-to-nearest 4-bit: 1. **`oQ4e` — imatrix mixed-precision.** oMLX's *enhanced* quantizer builds an importance matrix from ~1k calibration activations (sized for MoE expert coverage) and allocates bits per-tensor by sensitivity. Base **4-bit affine (group size 64)**, with sensitive tensors promoted: **201 → 8-bit, 105 → 5-bit, 7 → 6-bit** (the rest stay 4-bit). 2. **`DWQ` — distillation.** The `oQ4e` backbone's sub-8-bit affine scales/biases are then gradient-distilled toward an **8-bit teacher** of the same model (KL on top-1024 logits, temperature 2.0, lr 1e-6, seq 512), recovering fidelity the quant grid loses. | | | |---|---| | Scheme | affine 4-bit base (g64) · imatrix-promoted 5/6/8-bit on sensitive tensors · then DWQ-distilled | | Effective size | **~4.5 bits/weight** → ~21.6 GB on disk (incl. bf16 vision tower + MTP head) | | Distillation teacher | 8-bit MLX quant of `lordx64/Qwable-v2` | | Calibration | **3,965** ≤512-token windows — ~52 % Fable-5 agentic/tool-use + ~48 % Opus-4.7 reasoning (deep tails covered, not just heads) | | Tooling | oMLX `oq` (`enhanced`) + `mlx_lm.quant.dwq` | This is a **true `imatrix → DWQ`** build — distillation applied *on top of* a sensitivity-mixed backbone, rather than on a flat uniform-4-bit student. On this model it is the best-fidelity 4-bit we measured (see below). ## Evaluation ### Quant fidelity — validation KL-to-8-bit-teacher (lower = better) Measured identically across recipes on the held-out calibration split (same seed / temperature / teacher targets), so the numbers are directly comparable: | Recipe | KL-to-teacher | vs plain oQ4 | |---|---:|---:| | `oQ4` (sensitivity-mixed, no distill) | 0.0317 | — | | `oQ4` + DWQ | 0.0289 | −9 % | | `oQ4e` (imatrix, no distill) | 0.0234 | −26 % | | **`oQ4e` + DWQ — this repo** | **0.0223** | **−30 %** | imatrix alone (`oQ4e`) already beats `oQ4`+DWQ; adding DWQ on top squeezes out the rest. ### Capability benchmarks — measured on **this quant** Run by the uploader on this 4-bit build (served via **oMLX**); reported to show that quantization **preserves** base capability. Confirm harness/shot settings against your own eval before citing as official base-model numbers. | Benchmark | This 4-bit quant | |---|---:| | MMLU | **90.0 %** | | MMLU-Pro | **82.0 %** | | HumanEval (pass@1) | **88.4 %** | For the base model's own agentic evals (SWE-bench Lite, etc.), see the [Qwable-v2 card](https://huggingface.co/lordx64/Qwable-v2) — several suites are still in progress there. ### Speed (M4 Pro, 48 GB, oMLX 0.5.0, MTP on) | | Engine | Decode speed | MTP accept | |---|---|---:|---:| | **This repo (vision + MTP)** | VLM + **Lightning MTP** (depth-k kernels) | **~69–71 tok/s** | ~84 % (2.2 tok/cycle) | | Text-only sibling | LLM (batched) | ~58–62 tok/s | ~64 % (1.7 tok/cycle) | > **Why the vision build is faster:** oMLX routes a model *with* a vision tower to its > **VLM engine**, which runs this `qwen3_5_moe` architecture natively with **Lightning MTP** > (custom depth-k speculative-decoding kernels). The text-only sibling routes to the LLM > engine, which uses a fallback decode path for this VLM-native architecture. **The backbone > and MTP weights are byte-identical between the two builds** — only decode *speed* differs, > not accuracy. For text tasks this build serves the vision tower unused, so it's a strict > speed win. ## Sibling repos (same base, pick your trade-off) | Repo | Quant | Vision | Size | Best for | |---|---|:--:|---:|---| | **`Qwable-v2-oQ4e-DWQ-MTP-Vision-MLX`** (this) | imatrix→DWQ 4-bit | ✓ | ~21.6 GB | fastest decode, multimodal, benchmarking | | `Qwable-v2-oQ4e-DWQ-MTP-MLX` | imatrix→DWQ 4-bit | – | ~20.7 GB | text-only deployments, no vision tower | | [`lordx64/Qwable-v2`](https://huggingface.co/lordx64/Qwable-v2) | bf16 base | ✓ | ~67 GB | reference / maximum quality | Both quant builds share the **same distilled backbone + MTP head** (byte-identical) — identical task quality; they differ only by the vision tower and thus the serving engine (speed). ## How to run These are **MLX** weights (Apple Silicon). The tested serving path is **[oMLX](https://omlx.app)** ≥ 0.5.0, which supports this model's **native MTP** speculative decoding and vision out of the box. This repo includes the **vision tower** (`vision_tower.*`, bf16) — it accepts images as well as text. ```bash # 1. place the folder in your oMLX models directory mv Qwable-v2-oQ4e-DWQ-MTP-Vision-MLX ~/.omlx/models/ # 2. enable MTP once (VLM path), then call the OpenAI-compatible API curl -X PUT http://127.0.0.1:8003/admin/api/models/Qwable-v2-oQ4e-DWQ-MTP-Vision-MLX/settings \ -H "Authorization: Bearer sk-local" -H "Content-Type: application/json" \ -d '{"mtp_enabled": true, "vlm_mtp_enabled": true}' curl -X POST http://127.0.0.1:8003/v1/chat/completions \ -H "Authorization: Bearer sk-local" -H "Content-Type: application/json" \ -d '{"model": "Qwable-v2-oQ4e-DWQ-MTP-Vision-MLX", "messages": [{"role": "user", "content": "Prove there are infinitely many primes."}], "max_tokens": 8000, "temperature": 0.6}' ``` The distilled backbone also loads directly in stock **`mlx-lm`** as a `qwen3_5_moe` text model. MTP speculative decoding needs an MTP-aware runtime — **oMLX** (tested). ### Recommended sampling `temperature 0.6, top_p 0.95, top_k 20`. For hard reasoning / long agent runs set `max_tokens ≥ 32000` — the model thinks in explicit `` blocks. For Claude-Code-style tool use, provide an agent system prompt so it emits `` XML. ## Intended use & limitations - **Built for agentic coding + hard reasoning:** tool-use loops, SWE-style edits, competition math, STEM, multi-step logic. - **Reasoning/agency ≠ knowledge.** Quantization (and the base distillation) transfer *how to reason and act*, not new facts. - **Quantization loss:** 4-bit is lossy vs bf16; the fidelity ladder above quantifies it (small). For maximum quality use the bf16 base or an 8-bit quant. - **Distillation provenance:** the base's training traces were generated with Anthropic's Claude Opus 4.7 / Fable-5. Downstream users should confirm compliance with [Anthropic's usage policy](https://www.anthropic.com/legal/usage-policy). ## Datasets Inherited from the base model (used for its training and for this quant's calibration — no new knowledge is introduced; calibration only aligns the 4-bit scales to the model's own outputs): - [`lordx64/fable-sft-combined-v2`](https://huggingface.co/datasets/lordx64/fable-sft-combined-v2) — Fable-5 agentic / tool-use SFT (combined) - [`lordx64/agentic-distill-fable-5-sft`](https://huggingface.co/datasets/lordx64/agentic-distill-fable-5-sft) - [`lordx64/fable-tool-use-sft`](https://huggingface.co/datasets/lordx64/fable-tool-use-sft) - [`lordx64/reasoning-distill-opus-4-7-max-sft`](https://huggingface.co/datasets/lordx64/reasoning-distill-opus-4-7-max-sft) — Opus-4.7 reasoning traces ## Acknowledgements - **[lordx64](https://huggingface.co/lordx64)** — the `Qwable-v2` base model this repo quantizes. All capability is theirs. - **Qwen team** — Qwen3.6-35B-A3B. - **Anthropic** — Claude Opus 4.7 and Fable-5, the reasoning/agentic teachers for the base. - **Apple MLX** — `mlx`, `mlx-lm` (DWQ · `mlx_lm.quant.dwq`), `mlx-vlm`. - **oMLX** — the `oq`/`oQe` imatrix quantizer, Lightning-MTP + vision serving runtime, and OpenAI-compatible API. ## License **AGPL-3.0**, inherited from `lordx64/Qwable-v2` (the base's Fable-5 datasets are AGPL-3.0). If you serve this model over a network, the AGPL's network-use clause applies — make your corresponding source available accordingly. ## Citation ```bibtex @misc{qwable_v2_2026, title={Qwable-v2}, author={lordx64}, year={2026}, howpublished={\url{https://huggingface.co/lordx64/Qwable-v2}} } @misc{qwen36_a3b_2026, title={Qwen3.6-35B-A3B}, author={Qwen Team}, year={2026}, howpublished={\url{https://huggingface.co/Qwen/Qwen3.6-35B-A3B}} } ```