Splish:针对 M5 Max 调优的 Splash 推理分叉,单请求提速约 25%
Reddit 用户发布 Splash 推理引擎的 M5 Max 专项优化分叉 Splish,单请求提速约 25%,2–4…
近日,Reddit 用户 SeveralViolins 在 r/LocalLLaMA 板块发布了名为 Splish 的开源项目,这是对 Inco 公司 Splash 推理引擎的分叉优化版本,专门面向 40 核 Apple Silicon M5 Max 芯片做了重新调优。在同机型、同模型对比下,单请求场景提速约 25%,2–4 并发请求时最高可达 1.5 倍,且输出质量保持不变。
背景
Splash 是 Inco 推出的一款主打 Apple Silicon 的本地大模型推理引擎,社区此前已有针对 M1 芯片的优化移植。Splish 是首个面向 40 核 M5 Max 的专项调优分叉,作者调侃其名称与原版「Splash」形成呼应。
关键性能数据
测试条件为 4-bit 模型、40 核 M5 Max,与 Splash 1.1.0 原版同台对比:
- 单请求:约 1.25 倍速(+11% 至 +35%)
- 2–4 并发请求:最高 1.5 倍速
- 输出质量:所有测试项目与原版一致
代表性结果中,Swift-1.5 模型从 74.7 tok/s 提升至 89.8 tok/s(+20%);Qwen3.6-35B-A3B 模型在 1–4 请求下分别提速 +5% / +18% / +22% / +18%。
主要优化手段
1. 内核选择专项调优
使用 Splash 自带的 tuner(未包含在官方打包版本中),针对 40 核 M5 Max 重新选择最优内核。这是单请求提速最大的来源,Swift-1.5 提升达 +20%。
2. 配置外置与加载
新增 SPLASH_KERNEL_CHOICES 环境变量,允许用户从外部文件加载调优结果,无需重新编译即可复用。
3. 新 verify 内核
为 M5 张量单元重写 verify 内核,使用更轻量的同步屏障,并在每次投影中只计算一次行和:
- 单请求:+5%
- 2–4 并发:+10% 至 +19%
将其扩展到更多投影后,再获得 1–3% 提升。两者叠加,使 2 / 3 / 4 并发下的解码步骤分别达到 1.32× / 1.49× / 1.36× 的加速比。
4. 注意力微调
针对 27B 模型形状的注意力计算做微调,注意力速度提升 2–3%,提示处理速度提升 3–4%,但幅度过小未体现在整体数字中。
5. GGUF 解码内核优化
对 Q8_0、Q4_K_M、Q6_K 等格式的输入加载做优化,单内核提速 2–14%,整体每步提速约 +2%,输出结果与原版 bit-identical。
6. 代码改写 Copy 规则
借鉴自 TensorFold 的思路:当模型重写其已经看过的文本时,直接复用原文而非重新生成。在整文件编辑场景下提速 24–42%,其他场景波动不超过 ±3%,输出完全一致。
兼容性与后续计划
当前调优参数专为 40 核 M5 Max 设计,其他 M5 芯片若未手动指定会回退到 Splash 默认配置。作者表示自动 tuner 模块正在开发中。README 中还详细列出了尝试但未奏效的优化方向,供后续开发者避开同类坑。开发者欢迎其他机型用户提交性能报告,特别是出现退化的情况。
附带的 python3 dev/m5/report.py 脚本可在本地输出一份性能报告,方便用户自行复现与验证。
