>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

在 Apple Silicon 上使用 MTPLX 将本地神经网络速度提升两倍

MTPLX

如果你在 MacBook 上运行过最新的 Qwen 系列模型,你可能已经注意到生成较长的回复时,会明显触及内存带宽瓶颈。通常会使用投机解码来加速,但传统方法有一个令人不快的缺点:你必须在 Mac 宝贵的统一内存中保留第二个小型 draft model。

最近我发现了开发者 Youssof Altoukhi 的 MTPLX 项目。作者决定充分利用 Apple Silicon 架构的性能,以及已经内置于 Qwen 3.5、3.6 和 3.8 等现代模型权重中的多 token 预测 heads (MTP)。

无需第二个模型的 MTP 技巧

大多数现有运行时只是忽略权重中的 MTP heads。MTPLX 的工作方式不同。

模型本身会提前起草多个 token,然后通过 MLX 在单次前向传播中验证整个批次。验证使用 Leviathan 和 Chen 的精确拒绝采样算法,并进行残差校正。

在实践中这意味着什么?没有简化或启发式方法。概率分布与常规逐步生成完全相同。如果你设置 temperature=0.6top_p=0.95,模型会以与不使用 MTP 时完全相同的方式响应,只是速度快得多。

在配备 16 GB 内存的 M4 Mac mini 上,加速比达到 1.6 倍,在 M5 Max 芯片上提升高达 2.24 倍。

MTPLX Dashboard

内部结构:应用和 CLI

该项目提供两种形式:适用于 macOS 14+ 的原生 GUI 应用程序和经典 CLI 工具。

图形客户端处理所有繁重工作。首次启动时,它会分析可用内存,选择合适的模型,下载模型,设置隔离的 Python 环境,甚至提供风扇管理功能,让你的 MacBook 在长时间任务中不会降频。

MTPLX Chat Interface

如果你更喜欢终端,可以通过 Homebrew 或 pip 安装:

或者通过 pip:

主要功能

  1. 自动 draft depth 调优。MTP 效率取决于具体芯片和内存总线宽度。 mtplx tune --retune 命令在你的硬件上以不同深度(Depth 1、2、3)运行模型,并锁定最快的选项。如果你的配置中 MTP 突然输给常规自回归模式,程序会诚实地禁用 draft。
  2. 本地兼容服务器。 mtplx serve 命令在端口 8000 上启动服务器。它兼容 OpenAI (/v1/chat/completions) 和 Anthropic (/v1/messages) 格式。Claude Code、Cline、Continue 和 Open WebUI 开箱即用。
  3. 内置 embeddings 和 reranking。你不需要单独的 RAG 服务器。守护进程可以并行持有 MLX embedding 和 reranker 模型,根据请求按需加载到内存中。
  4. 用于构建自己模型的 Forge 工具。该包包含 mtplx forge 工具,可将 Hugging Face 仓库转换为 MLX 格式,微调 MTP adapter,并测量前后的速度。

Forge Tool

如何使用服务器

启动服务器后,你可以使用标准请求进行查询:

如果你正在构建 agent 系统或 RAG pipeline,请立即指定搜索模型:

会话保存到 SSD,因此当服务器重启时,之前长对话的上下文几乎可以立即恢复。

项目局限性

没有妥协就没有奇迹,所以请记住以下几点:

  • 该工具严格为 Apple Silicon(M1 芯片及更新版本)编写,依赖 MLX 框架。Linux 用户和 NVIDIA GPU 用户应该使用 vLLM 或 SGLang。
  • MTPLX 无法将任意 MTP heads 附加到随机模型上,因为权重不匹配会破坏生成的数学准确性。你需要使用作者在 Hugging Face 官方目录中的经过验证的构建(Qwen 3.5、3.6、3.8、Gemma 4),或使用内置的 Forge 从头训练 adapter。

值得一试吗

如果你在 Mac 上编写代码,并通过 Continue 或 Cline 使用本地 LLM,MTPLX 可以提供出色的速度提升,无需购买额外软件。在 Qwen 3.8 27B 等模型上,自动完成响应和代码生成的差异是立即可以感受到的。

该项目采用宽松的 Apache-2.0 许可证分发,源代码干净,可以通过 mtplx bench 命令直接从终端复现基准测试。本地开发的一个绝佳发现。

相关项目