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

Reddit r/LocalLLaMA 工具

摘要

一项实测对比,测试了四款本地 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 以上。
查看原文

相似文章

我在 MacBook Air M5 上对 21 款本地大模型进行了代码质量与速度的性能评测

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 量化策略的影响。