Downloads · 30 days
130
12% of all-time downloads
vvsotnikov/Qwen3.8-27B-MTP-MLX-4bit
Qwen3.8-27B-MTP-MLX-4bit is a text generation model from vvsotnikov. Use it when you need the model to write or continue text. It is set up for mlx. The card lists the license as apache-2.0.
This is not a standalone model. It holds only the Multi-Token Prediction (MTP) drafter head, so it carries no token embeddings and no lmhead and it cannot generate text alone. Load it as the draft model beside a match…
Downloads · 30 days
130
12% of all-time downloads
All-time downloads
1K
Public
Parameters
425M
259 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors239 MB · 90%
How the weights are stored.
U32425M · 100%
From the Hugging Face model README
This is not a standalone model. It holds only the Multi-Token Prediction (MTP) drafter head, so it carries no token embeddings and no
lm_headand it cannot generate text alone. Load it as the draft model beside a matching target, which supplies both.
Qwen ships this head inside
Qwen/Qwen3.8-27B as 15 tensors under
the mtp. prefix, but the MLX converter deletes them when it builds the main
model, so the head is published separately and the runtime loads it as its
own model with model_type: qwen3_5_mtp.
mlx_vlm generate \
--model vvsotnikov/Qwen3.8-27B-MLX-4bit \
--draft-model vvsotnikov/Qwen3.8-27B-MTP-MLX-4bit \
--prompt "Write a quicksort in Python." \
--max-tokens 256 --temperature 0.6 --enable-thinking
For local weights:
mlx_vlm generate \
--model /path/to/target-model \
--draft-model /path/to/Qwen3.8-27B-MTP-MLX-4bit \
--prompt "Write a quicksort in Python." \
--max-tokens 256 --temperature 0.6 --enable-thinking
--draft-kind mtp is detected from model_type, so you do not need to pass
it. The drafter proposes tokens each step while the target verifies them, and
only accepted tokens reach the output, so quality follows the target rather
than the drafter.
qwen3_5_mtp3mlx-vlm 0.6.8# 1. split the mtp.* tensors out of the base checkpoint
python -m mlx_vlm.speculative.drafters.qwen3_5_mtp.split \
--model Qwen/Qwen3.8-27B --output Qwen3.8-27B-MTP-MLX-bf16
# 2. quantize the result
mlx_vlm convert --hf-path Qwen3.8-27B-MTP-MLX-bf16 \
--mlx-path Qwen3.8-27B-MTP-MLX-4bit -q --q-bits 4 --q-group-size 64
Round-to-nearest is the only option here, because AWQ needs a forward pass and a drafter cannot run one on its own.
| Check | Result |
|---|---|
model_type | qwen3_5_mtp |
block_size | 3 |
| Tensors | 31, being 8 quantized projections and 7 dense norms |
| RMSNorm shift | applied exactly once, checked against the source |
| Acceptance | 93.5% of drafted tokens accepted, 2.86 accepted tokens/round, over 70 rounds, 15.982 tok/s |
Use a drafter and a target that come from ONE checkpoint, because the drafter binds to the target's embeddings at runtime, so a mismatched pair either fails a hidden-size check or drafts badly. This release publishes these drafters, so you can trade drafter size against acceptance:
The weights derive from Qwen/Qwen3.8-27B
under Apache 2.0, so the original license and its terms carry over.
Read the license itself before you use this model.