MTP 头被静默忽略:修复三行代码让 Mac 本地解码提速 63%-79%

Micha0827 · reddit · 2026-09-23

Reddit 用户 Micha0827 在 M2 Max 上对比 mlx-serve 与 LM Studio 时发现一个隐蔽坑:mlx-serve 要求 MTP 投机解码头的张量带 mtp. 前缀,但 HuggingFace 上发布的 mlx-community/Qwen3.8-27B-MTP-4bit 权重没有该前缀,加载时无任何报错和警告,服务器只是静默回退到 Prompt Lookup Decoding。

如何判断是否中招:看日志里的 spec-stats 行——mode=pld 表示 MTP 头没被加载,mode=mtp attempts=31 accepts=67 perdraftpct=69.8% 才是正常状态。另外权重文件必须放在模型目录的 mtp/weights.safetensors(HF 发布名是 model.safetensors),用符号链接即可。

修复只需三行:用 mx.savesafetensors 给所有 key 加上 mtp. 前缀重新保存。

实测收益(Qwen3.8-27B 4-bit,同权重、5 次中位数、每条 prompt 用唯一前缀避免缓存):真正加载 MTP 后 decode 达 13.0/20.1 tok/s(短/长文本),无投机解码时只有 8.0/11.2,LM Studio 同权重为 11.8/11.6——即 decode 提速 +63%/+79%。值得注意的是,无投机解码时 LM Studio 反而更快,MTP 才是反超关键,静默丢失代价很大。

限制:MoE 架构的 MTP 头目前完全加载失败(已确认前缀正确仍报 MlxError),Qwen3.6-35B-A3B 无法使用,dense 27B 正常,作者已提交 issue 并征集其他人在 Apple Silicon 上跑通 MoE MTP 的案例。环境:mlx-serve 26.9.5、MLX 0.32.2、macOS 26.6.2、M2 Max 96 GB,数字从客户端流式输出测得。

原文链接 →

「Infra」频道最新

更多「Infra」频道 AI 资讯 →