🌟 Model Details
- Name:
ZeroXClem/Qwen3.5-9B-Fable-5-Quad-Stock
- Base Model:
Qwen/Qwen3.5-9B
- Merge Method:
model_stock (geometric interpolation of finetunes around the base)
- Parameter Count:
~9.41 billion (hybrid linear-attention; MTP head not retained — see below)
- Modalities: text + image input (27-layer vision tower, merged from all five inputs)
- Precision:
bfloat16
- Tokenizer: from base (
Qwen/Qwen3.5-9B)
🧩 Models Merged
The four most-downloaded mergeable Fable-5 distills on this architecture (2026-07-02 snapshot):
-
Qwable-9B-Claude-Fable-5
Creator: empero-ai
The flagship community Fable-5 distill — general reasoning and conversation in Fable's register.
-
Qwen3.5-9B-Fable-5-v1
Creator: TeichAI
Distilled on curated Fable-5 completions; keeps the full MTP (multi-token-prediction) head.
-
Qwen-3.5-9B-fable5-composer2.5-ui-design
Creator: fnruha0921
Fable-5 × Composer UI-design specialization — frontend structure and component thinking.
-
Qwen3.5-9B-SFT-Fable5-Glint
Creator: ermiaazarkhalili
SFT on the Fable5-Glint dataset — instruction following and structured outputs.
🔧 MergeKit Configuration
merge_method: model_stock
base_model: Qwen/Qwen3.5-9B
models:
- model: empero-ai/Qwable-9B-Claude-Fable-5
- model: TeichAI/Qwen3.5-9B-Fable-5-v1
- model: fnruha0921/Qwen-3.5-9B-fable5-composer2.5-ui-design
- model: ermiaazarkhalili/Qwen3.5-9B-SFT-Fable5-Glint
parameters:
filter_wise: false
dtype: bfloat16
tokenizer_source: base
chat_template: auto
Merged with mergekit main (commit a6e40288, transformers 5.x support) on a Modal B200 — the qwen3_5 hybrid linear-attention architecture is handled via mergekit's automatic architecture inference.
MTP head: only 3 of the 5 input models carry Qwen3.5's optional multi-token-prediction head (mtp.* tensors), and mergekit's architecture inference drops optional tensors that aren't shared by every input — so this merge ships without the MTP head (760 tensors, like the MTP-less donors). The config correctly declares mtp_num_hidden_layers: 0 (fixed 2026-07-03; the initial upload said 1, which made GGUF conversions unloadable). Standard autoregressive inference is entirely unaffected.
Why model_stock and not della/dare? The qwen3_5 architecture's linear-attention conv1d weights have a size-1 middle dimension, which breaks DELLA's row-wise rank-based drop probabilities (0/0 → NaN). Model Stock is deterministic, parameter-free, and flattens every tensor before computing — a perfect fit for this hybrid architecture.
💡 Use Cases
- 🗣️ Fable-flavored chat & reasoning — the shared distillation source gives coherent, warm, structured responses
- 💻 Code generation & review — coder and UI-design ancestry
- 🎨 Frontend prototyping — component-structured UI thinking from the Composer distill
- 📋 Instruction following & structured output — SFT-Glint ancestry
- 🖼️ Image understanding — describe, analyze, and reason over images through the retained vision tower
The merge kept the entire vision tower (model.visual.*, 333 tensors) — every donor carried it, so model_stock merged it like any other weight. With preprocessor_config.json in place (added 2026-07-03), image input works everywhere:
from transformers import AutoProcessor, Qwen3_5ForConditionalGeneration
import torch
model_id = "ZeroXClem/Qwen3.5-9B-Fable-5-Quad-Stock"
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3_5ForConditionalGeneration.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto")
messages = [{"role": "user", "content": [
{"type": "image", "image": "photo.jpg"},
{"type": "text", "text": "Describe this image."},
]}]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
For llama.cpp / LM Studio, each GGUF repo below ships an mmproj-*-f16.gguf (the vision encoder + projector, ~0.9 GB) — download it alongside the text GGUF and images just work. Verified end-to-end with llama-mtmd-cli. Tip: add --image-min-tokens 1024 for fine-grained grounding tasks.
📦 GGUF Quants
Every level, one repo per quant (llama.cpp / LM Studio / Jan-ready — rebuilt 2026-07-03 with the corrected config; each repo also carries the mmproj for image input):
📊 Benchmarks
Quality (lm-evaluation-harness, identical settings for merge and base)
Table with columns: Task, Setup, Quad-Stock, Qwen/Qwen3.5-9B| Task | Setup | Quad-Stock | Qwen/Qwen3.5-9B |
|---|
ARC-Challenge (acc_norm) | 25-shot | 71.2 | 71.1 |
Measured 2026-07-03 on H100 (bfloat16, transformers backend). The merge holds
the base's reasoning while adding the four distills' flavor — additional
suite tasks to follow.
Speed (llama.cpp llama-bench, H100, full offload, flash attention)
Table with columns: Quant, Size, Prompt pp512 (t/s), Generation tg128 (t/s)| Quant | Size | Prompt pp512 (t/s) | Generation tg128 (t/s) |
|---|
| Q2_K | 3.55 GiB | 6,350 | 209 |
| Q3_K_M | 4.30 GiB | 7,302 | 186 |
| Q4_0 | 4.94 GiB | 8,536 | 256 |
| Q4_K_M | 5.23 GiB | 7,929 | 215 |
Q4_0 is the decode-speed pick; F16 wins prompt processing but is
bandwidth-bound at generation; Q5_K_M/Q6_K are the quality sweet spots.
🧪 Limitations
- All four donors distill the same teacher (Claude Fable 5) — expect a strong shared voice, not four unrelated skill sets.
- The qwen3_5 architecture has no explicit mergekit definition yet; this merge relies on automatic architecture inference (verified tensor-by-tensor for this model set).
- Users are responsible for appropriate safety and moderation when deploying.
⚖️ License
- Apache 2.0, following the base model and all merged donors.
🪐 Credits & Acknowledgements
This fusion stands on the work of:
- empero-ai, TeichAI, fnruha0921, and ermiaazarkhalili for the Fable-5 distills
- Qwen for the Qwen3.5-9B base and ecosystem
- Arcee AI for MergeKit
- Merged end-to-end on Modal (B200) via a custom
merge_cli.py pipeline
💖 Special thanks to the open-source community.