oMLX vs Rapid-MLX vs Splash vs MTPLX 在 M3 Max 36 GB 上实测:Qwen3.6-35B-A3B 达 110 tok/s,Qwen3.8-27B 约 32 tok/s
摘要
一项实测对比,测试了四款本地 LLM 推理引擎(oMLX 0.7.0、Rapid-MLX 0.15.5、Splash 1.2.1、MTPLX 2.12.2)在 36 GB M3 Max MacBook Pro 上的表现,结果显示 Rapid-MLX 在 Qwen3.6-35B-A3B 上最快(约 110 tok/s),而 Splash 在稠密模型 Qwen3.8-27B 上最快(通过投机解码达到约 31.7 tok/s)。
你好。我昨天在当地市场花大约 2498 美元淘到一台全新库存的 14 寸 M3 Max MacBook Pro(14 核 CPU / 30 核 GPU / 36 GB / 1 TB),当晚就花了一整夜测试哪款本地推理软件跑我常用的两个模型最快。四款引擎,全部为最新版本:oMLX 0.7.0、Rapid-MLX 0.15.5、Splash 1.2.1、MTPLX 2.12.2。macOS 27 Golden Gate。模型:Qwen3.8-27B-4bit(稠密)和 Qwen3.6-35B-A3B-4bit(MoE)。
先说清楚一点:四款引擎跑的并不是完全相同的权重文件。Rapid 和 MTPLX 使用它们各自带 MTP 增强的 4-bit 构建版本,Splash 搭配它自己的 DFlash2 草稿模型,而 oMLX 则运行原版 mlx-community 4-bit。基础模型相同,但精调/构建方式各异——不过这也正是每款应用预期的使用方式。
我的测试方法:每款引擎都在 localhost 上提供服务,temperature 设为 0,思维模式关闭。持续性能测试:使用相同的简短散文提示词,运行 3 次 x 256 个输出 token,取中位数。然后进行提示词长度扫描,约为 130 / 1500 / 5500 token。温度测试我使用了笔记本支架,在每个引擎+模型组合之间等待 3 分钟,在两个测试阶段之间等待 2 分钟,并在每款引擎轮到自己之前清空其 KV 缓存(oMLX、MTPLX 和 Rapid-MLX 都会在重启后保留缓存,日常使用很方便,但如果跑两次基准测试就会被误导)。我把整个流程从头到尾重跑了一遍,数字误差都在 6% 以内。
解码速度,自然散文提示词,3 次运行的中位数:
| 引擎 | Qwen3.8-27B | Qwen3.6-35B-A3B |
| --- | --- | --- |
| Rapid-MLX | 27.7 tok/s | 110.2 tok/s |
| oMLX | 17.9 tok/s | 104.2 tok/s |
| Splash | 31.7 tok/s | 77.0 tok/s |
| MTPLX | 31.5 tok/s | 79.0 tok/s |
在更长的填充式提示词上结果类似(重复性文本会让投机解码看起来更好,所以请把这组数据当作最佳情况):
| 引擎 | 27B @ 1.5K | MoE @ 1.5K | MoE @ 5.5K |
| --- | --- | --- | --- |
| Rapid-MLX | 31.3 tok/s | 118.2 tok/s | 117.9 tok/s |
| oMLX | 17.9 tok/s | 101.1 tok/s | 95.6 tok/s |
| Splash | 52.2 tok/s | 238.0 tok/s | 100.9 tok/s |
| MTPLX | 30.2 tok/s | 78.6 tok/s | 69.8 tok/s |
我的结论:
每类模型的绝对最快者:MoE 归 Rapid-MLX,稠密模型归 Splash(31.7 vs MTPLX 31.5,实际上打平)。oMLX 在稠密模型上差距明显(17.9),但在 MoE 上基本与领先者持平。
如果你觉得这些差距小到无所谓,直接按功能选即可。稠密模型上 Splash 和 MTPLX 相当,MoE 上 Rapid 和 oMLX 相当。我最终保留了 Rapid-MLX,因为 MoE 是我日常使用的模型,而它在那里最快。
稠密模型的数字也符合预期:每个 token 大约需要读取 16 GB 权重,而内存带宽约为 300 GB/s,理论上限大约在 18 tok/s 附近,而 oMLX 正好卡在这个上限上。其他引擎通过投机解码突破了这个限制——这也是为什么它们的数字会随着生成文本的类型而变化的原因。
Splash 在 MoE 上使用 1.5K 的填充提示词跑到了 238 tok/s,而在 5.5K 时只有 101 tok/s,而 Rapid 则稳定在 118 tok/s 左右。
5.5K 提示词的首 token 时间:MoE 大约 4-5 秒,稠密模型约 34 秒(prefill 约 1.2-1.3k tok/s,对比稠密模型的约 150-170 tok/s)。
持续推理时风扇噪音较大,生成过程中风扇一直高速运转。放在书桌上用没问题,但不建议在图书馆里用。
我还试了 Qwen3.8-Flash-Next(125B 那个)。在 36 GB 上跑不起来。仅 4-bit 权重就有约 74-83 GB,最轻量的构建也需要 96 GB 以上,而且这些引擎都无法把该架构的专家层从 SSD 流式加载。
局限性:一台笔记本,一个晚上,3 次运行的中位数,以及上述不同的权重构建版本。我的提示词也比较简单,还没有跑过长时间的 Agent 会话。
**TL;DR:** 在 36 GB M3 Max 上,Qwen3.6-35B-A3B 在 Rapid-MLX 上约 110 tok/s,Qwen3.8-27B 在 Splash 上约 31.7 tok/s(MTPLX 略慢一点),根据你最常跑哪个模型来选择,而 125B 的 Flash-Next 需要 96 GB 以上。
相似文章
Reddit r/LocalLLaMA
一篇博客文章,对比了MLX推理引擎,结论是oMLX是最佳选择,评测在M5 Max 64GB上使用Qwen3.6-35B-A3B-4bit。
X AI KOLs Following
MTPLX V2已发布,声称在搭载M5 Max的Macbook Pro上通过MLX运行Qwen 3.6 27B模型时每秒可处理72+ tokens。
X AI KOLs Timeline
TensorFold 0.6.2 是一款 Apache 2.0 开源 LLM 推理引擎,声称在 Apple Silicon 上的 token 吞吐量超过 MLX 的两倍(M3 Ultra 上为 61 vs 27 tok/s),采用多 token 预测的投机解码技术,支持并发并行请求以及兼容 OpenAI 的 API。
Reddit r/LocalLLaMA
一位开发者在 MacBook Air M5 上使用 HumanEval+ 对 21 款本地大模型进行了基准测试,发现 Qwen 3.6 35B-A3B (MoE) 以 89.6% 的得分和 16.9 tok/s 的速度位居榜首,而 Qwen 2.5 Coder 7B 仅需 4.5 GB 内存即可达到 84.2% 的性能,拥有最佳的内存性价比。值得注意的是,Gemma 4 系列的表现远低于预期(31B 版本仅得 31.1%),这可能是受 Q4_K_M 量化策略的影响。
Reddit r/LocalLLaMA
Inco Splash是一款针对Apple silicon优化的开源推理引擎,在M系列MacBook上运行Qwen3.8-27B等AI模型时提供了显著的速度提升。