Qwen3.6-27B-oQ8-mtp + Native MTP on M5 Max: stuck around 9–10 tok/s sustained - losing my mind
I've been hammering away at this issue for what feels like decades now. I'm using Jundot/Qwen3.6-27B-oQ8-mtp in oMLX with Pi as a coding harness and am only getting 9-10 ish t/s (generation, not prompt processing) to matter what I try...no matter what settings I fiddle with. 9-10 is the absolute max I'm getting. I'm hoping someone can suggest a fix as I've exhausted my non-expert knowledge and experience.
Hardware:
- MacBook Pro M5 Max
- 128GB RAM
- 40-core GPU
- oMLX running locally on LAN
- Pi using the oMLX OpenAI-compatible endpoint
Model/settings:
- Model:
Jundot/Qwen3.6-27B-oQ8-mtp - Model Type Override:
LLM - Native MTP: ON
- TurboQuant KV: OFF
- VLM MTP: OFF
- DFlash: OFF
- SpecPrefill: OFF
- Thinking: OFF (for testing purposes)
- Temp:
0.1 - Top P:
0.95 - Top K:
20 - Context cap has mostly been
131072
An important details - oMLX originally auto-detected this model as VLM. In Pi, that caused the model to process one turn and then stop almost immediately. Forcing the model type to LLM fixed that behavior.
Now the issue is speed.
With Native MTP ON, a raw curl test outside Pi gives roughly:
- prompt: 39 tokens
- output: ~1400–1600 tokens
- total time: ~149–161s
- sustained speed: ~9.5–9.9 tok/s
- MTP path is definitely active
- MTP accept rate around 71–73%
Example log line:
MTP finish=stop tokens=1420 cycles=827 accept=591/827 (71.5%)
timing[backbone=132784.6ms mtp=6628.3ms sample=6732.0ms cache=79.6ms]
Chat completion: 1419 tokens in 148.90s (9.5 tok/s), prompt: 39
With Native MTP OFF, speed drops to roughly ~6 tok/s. So MTP is helping, but only by about 1.5–1.7x.
One interesting detail that might be relevant (honestly, I don't know at this stage of things). I had a period yesterday when I was getting 30 ish t/s for no reason at all (well, I'm sure there is a reason, I just have zero clue what it is). I went to bed happy thinking that my settings fiddling found the right combo, only to discover this morning that it was back to the glacial t/s rate.
I’m not looking to switch models right now. The goal is to get this exact MTP model working as fast as possible for Pi/coding-agent use and stop banging my head against the wall in frustration.
any help or suggestions would be appreciated beyond belief.