Tencent's DSpine on a Mac: Qwen3.8-27B two to four times faster, same answers
Paris Michalas, Partner, NetProjects (Internet Projects Ltd)
A large language model writes one token at a time, and every token needs a full pass through the whole model. Tencent Hunyuan's DSpine speeds this up without changing the answer. It is a drafter: a small 5-layer model that guesses up to 16 next tokens at once, which the big model, Qwen3.8-27B, then checks in a single pass. Accepted tokens come out much faster, and the text is the big model's own.
Tencent's MLX package only supports models with plain attention. Qwen3.8-27B is a hybrid, with 48 linear-attention Gated DeltaNet layers and 16 full-attention layers, and the running state of a linear-attention layer cannot simply be cut back when a guess is rejected. We wrote a kit that adds exact rollback for those layers and for the drafter's 8,192-token sliding window, so Tencent's drafter, tencent/Qwen3.8-27B-DSpine-b16, runs on any MLX build of Qwen3.8-27B on a Mac with Apple Silicon.
Always up to date. We keep these builds and the engine that runs them current on Hugging Face and GitHub. When Tencent releases a new version of the DSpine drafter for Qwen3.8-27B, we rebuild, re-test and publish it there, so the links on this page always point to the latest version. The numbers in this article were measured on the version named in each section; the README on GitHub and the model card on Hugging Face carry the current figures and a dated change log.
- Hugging Face: https://huggingface.co/netprojects
- GitHub: https://github.com/internet-projects
- NetProjects MLX builds collection: https://huggingface.co/collections/netprojects/netprojects-mlx-builds
What we released
- The engine, dspine-hybrid-mlx, open source under Apache-2.0: https://github.com/internet-projects/dspine-hybrid-mlx
- The drafter in MLX format on Hugging Face: https://huggingface.co/netprojects/Qwen3.8-27B-DSpine-b16-MLX
It works with the standard community builds mlx-community/Qwen3.8-27B-4bit and mlx-community/Qwen3.8-27B-8bit, and with bf16. From v0.2.0 the drafter loads at 4-bit by default, and it accepts as many tokens as the bf16 drafter: 3.40 against 3.35 per round.
How fast is it?
We compared greedy decoding with DSpine against plain mlx-lm on the same model: 512 new tokens, 10 prompts from GSM8K, MATH-500, HumanEval, MBPP and MT-Bench, with thinking on, on a MacBook Pro M5 Max (128 GB).
Measured on dspine-hybrid-mlx 0.2.0, 9 November 2026.
| Qwen3.8-27B build | Plain mlx-lm | With DSpine | Speed-up |
|---|---|---|---|
| 4-bit | 31.9 tokens/s | 64.7 tokens/s | 2.0x |
| 8-bit | 17.9 tokens/s | 52.1 tokens/s | 2.9x |
| bf16 | 9.1 tokens/s | 39.1 tokens/s | 4.3x |
With thinking off, the 4-bit build goes from 32.0 to 68.8 tokens/s (71.0 with the adaptive option, 2.2x), and the 8-bit build from 18.0 to 52.8 tokens/s (54.0 with the adaptive option, 3.0x). With long prompts (thinking off, 256 new tokens), the 4-bit build is 2.1x faster at about 9K tokens and 2.0x at about 33K; the 8-bit build is 2.9x faster at both. Peak memory at 33K tokens is 29 GB with the 4-bit build and 42 GB with the 8-bit build.
The 8-bit rows used a local conversion with the same settings as the mlx-community 8-bit build.
Does it give the same answers?
Yes: the same output, within rounding. With greedy decoding the output follows the big model's own choice. On the real 4-bit model, every point where DSpine's output differed from plain decoding was a near-tie (at most 0.25 logit), well inside normal rounding between a 16-token check and one-token steps. On small full-precision test models the output is token-identical.
Measured on dspine-hybrid-mlx 0.2.0, 9 November 2026.
| Qwen3.8-27B build | Tokens accepted per round (thinking off, full 16-token block, first 50 GSM8K questions) |
|---|---|
| 4-bit | 7.25 |
| 8-bit | 7.32 |
| bf16 | 7.33 |
| Tencent's model card | 7.20 |
Try it
pip install "git+https://github.com/internet-projects/dspine-hybrid-mlx.git"
dspine-hybrid-generate \
--target mlx-community/Qwen3.8-27B-4bit \
--draft netprojects/Qwen3.8-27B-DSpine-b16-MLX \
--prompt "Write a Python function that checks whether a number is prime." \
--max-tokens 512 --baselineThe baseline option also runs plain decoding and prints the speed-up. You need Python 3.11 or later and an Apple Silicon Mac with enough memory for the Qwen3.8-27B build you choose. The README has the full commands: https://github.com/internet-projects/dspine-hybrid-mlx
Honest limits
- One request at a time (batch size 1).
- Tested with mlx-lm 0.32.2 only.
- All figures come from one machine.
- The adaptive option works for greedy decoding only.
- The speed-up is largest on the bigger builds (bf16) and smallest on 4-bit.
Links
- Code on GitHub: https://github.com/internet-projects/dspine-hybrid-mlx
- DSpine drafter in MLX format: https://huggingface.co/netprojects/Qwen3.8-27B-DSpine-b16-MLX
- Tencent's original drafter: https://huggingface.co/tencent/Qwen3.8-27B-DSpine-b16
- Tencent DSpine on GitHub: https://github.com/Tencent/DSpine
- NetProjects MLX builds collection: https://huggingface.co/collections/netprojects/netprojects-mlx-builds
- Also built on Qwen3.8-27B, Fastino GLiDE on a Mac: https://netprojects.com/insights/fastino-glide-decision-model-on-apple-silicon-mlx
- How we use AI: https://netprojects.com/standards/ai
Always up to date. We keep these builds and the engine that runs them current on Hugging Face and GitHub. When Tencent releases a new version of the DSpine drafter for Qwen3.8-27B, we rebuild, re-test and publish it there, so the links on this page always point to the latest version. The numbers in this article were measured on the version named in each section; the README on GitHub and the model card on Hugging Face carry the current figures and a dated change log.
- Hugging Face: https://huggingface.co/netprojects
- GitHub: https://github.com/internet-projects
- NetProjects MLX builds collection: https://huggingface.co/collections/netprojects/netprojects-mlx-builds
Credits
DSpine is by Tencent Hunyuan, under the Apache-2.0 licence. Qwen3.8-27B is by Alibaba Cloud's Qwen team. Our engine is Apache-2.0 licensed. The MLX port is by Paris Michalas, Partner, NetProjects (Internet Projects Ltd). Not affiliated with Tencent, Alibaba/Qwen or Apple.
Paris Michalas is a partner at NetProjects, the trading name of Internet Projects Ltd: https://netprojects.com. This article was drafted with AI assistance, then edited and approved by people on our team. You can read more about how we use AI at https://netprojects.com/standards/ai.