Workshop

Rapid-MLX 实战:Apple Silicon 本地 LLM 推理速度提升 4 倍,完整工具调用支持

5 min read ·

一句话总结:Rapid-MLX 不是又一个 Ollama 替代品,它是专为 Apple Silicon 深度优化的推理引擎——工具调用成功率 100%、缓存首 token 0.08s,配合 M4/M5 芯片的神经加速器,在本地跑 Agent 工作流首次让人感觉不像在凑合。

背景:Apple Silicon 推理生态的快速演变

2026 年初,Apple Silicon 上的本地 LLM 推理发生了一次格局性变化。Ollama 0.19(2026-03-30)把底层推理引擎从 llama.cpp 切换到 Apple 的 MLX 框架,在 M1 Max 上 decode 速度从 3.19 tok/s 跳升到 23.39 tok/s,接近 7 倍的提升。

这次切换把一个尴尬的现实暴露了出来:过去两年大量在 Apple Silicon 上”跑得动”的 LLM 工作流,其实一直在严重欠压硬件

Rapid-MLX(2026-03-23 首发,GitHub raullenchai/Rapid-MLX)把这个思路推得更远。它不是在 Ollama 基础上做优化,而是从零开始针对 Apple Silicon 的统一内存架构、Metal GPU 以及 M4/M5 新增的神经加速器(Neural Accelerators)重新设计了每个环节。

结果:比最新版 Ollama 还快 2-4.2 倍,工具调用解析成功率达到 100%。

为什么 Rapid-MLX 更快

理解性能差距之前,先理解 Apple Silicon 的内存架构。

M 系列芯片使用统一内存架构(UMA):CPU、GPU 和神经引擎共享同一块物理内存,没有 PCIe 传输瓶颈。LLM 推理的瓶颈从来不在算力,在内存带宽——每生成一个 token 需要把整个模型权重从内存搬到计算单元一次。

Rapid-MLX 在这个瓶颈上做了三件事:

1. 分层 KV 缓存

标准 KV 缓存把 system prompt 和历史对话都存在 GPU 内存中。Rapid-MLX 实现了两级缓存:系统提示词缓存常驻(prefill 一次,后续 session 复用),用户对话缓存 LRU 淘汰。当 system prompt 命中缓存时,首 token 延迟可以压缩到 0.08s,这已经接近人感知”即时响应”的阈值(约 100ms)。

2. M5 神经加速器直接调度

M4/M5 芯片新增了 GPU Neural Accelerators,专门用于矩阵乘法加速。Ollama 的 MLX 支持通过通用路径调用这些加速器,Rapid-MLX 通过 Metal Performance Shaders 直接调度,减少了调度层的开销。实测在 M4 Max 上,32B 模型的 decode 速度比 Ollama 快约 40%。

3. 异步工具调用解析

工具调用是推理引擎的隐性瓶颈:生成完整的工具调用 JSON 之后还需要解析、验证,再决定是否继续生成。Rapid-MLX 的 17 个工具调用解析器全部异步运行,并带有自动错误恢复机制——如果模型生成的 JSON 格式有小错误,解析器会先尝试自动修复而不是直接报错。这让工具调用的成功率在实测中达到 100%(对比 llama.cpp 约 85-90%)。

安装与配置

环境要求

安装

# 推荐用 pipx 隔离安装
pipx install rapid-mlx

# 或用 pip
pip install rapid-mlx

# 验证安装
rapid-mlx --version

下载模型

Rapid-MLX 支持从 Hugging Face 直接拉取 MLX 格式模型:

# 下载 Qwen3.6 27B(推荐)
rapid-mlx pull mlx-community/Qwen3.6-27B-Instruct-4bit

# 下载 Llama 3.3 70B(高配 Mac)
rapid-mlx pull mlx-community/Llama-3.3-70B-Instruct-4bit

# 查看已下载模型
rapid-mlx list

模型存储在 ~/.rapid-mlx/models/,格式为 MLX 原生格式(比 GGUF 在 Apple Silicon 上快约 15%)。

启动服务

# 基本启动(默认端口 8080)
rapid-mlx serve mlx-community/Qwen3.6-27B-Instruct-4bit

# 完整参数
rapid-mlx serve mlx-community/Qwen3.6-27B-Instruct-4bit \
  --port 8080 \
  --context-length 32768 \
  --tool-call-parser qwen3 \
  --reasoning-parser qwen3 \
  --cache-ttl 3600

--tool-call-parser 需要和模型系列匹配,常用值:

模型系列tool-call-parserreasoning-parser
Qwen3.xqwen3qwen3
DeepSeek-R1deepseek_r1deepseek_r1
Llama 3.xllamahermes
Hermes 系列hermeshermes
GLM4glm47

验证服务

# 测试基础生成
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-27b",
    "messages": [{"role": "user", "content": "你好"}],
    "max_tokens": 50
  }'

# 测试工具调用
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-27b",
    "messages": [{"role": "user", "content": "今天北京天气如何?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "获取天气",
        "parameters": {
          "type": "object",
          "properties": {"city": {"type": "string"}}
        }
      }
    }]
  }'

集成 Claude Code

这是 Rapid-MLX 最实用的场景之一:用本地模型驱动 Claude Code,不消耗 API 额度,完全离线运行。

配置方法

编辑 ~/.claude/settings.json

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:8080",
    "ANTHROPIC_API_KEY": "rapid-mlx-local",
    "ANTHROPIC_MODEL": "qwen3-27b"
  }
}

重新启动 Claude Code,它会通过 OpenAI 兼容 API 与本地 Rapid-MLX 服务通信。由于 Rapid-MLX 实现了完整的工具调用协议,Claude Code 的文件读写、bash 执行等操作都可以正常工作。

⚠️ 注意:本地模型的能力上限低于 Claude Sonnet/Opus,复杂的多步骤重构任务建议仍使用云端模型。Rapid-MLX 的 cloud routing 功能可以在本地处理简单任务、云端处理复杂任务时实现自动切换。

集成 Cursor

在 Cursor 设置中修改:

Cursor 的代码补全和 Composer 功能均可通过 Rapid-MLX 驱动。

集成 Aider

# 使用 Rapid-MLX 运行 aider
OPENAI_API_BASE=http://localhost:8080 \
OPENAI_API_KEY=rapid-mlx-local \
aider --model openai/qwen3-27b

Cloud Routing:本地优先 + 云端兜底

Rapid-MLX 的 --cloud-fallback 功能实现了混合架构:

rapid-mlx serve mlx-community/Qwen3.6-27B-Instruct-4bit \
  --cloud-fallback anthropic \
  --cloud-model claude-opus-4-8 \
  --cloud-api-key $ANTHROPIC_API_KEY \
  --local-max-tokens 8192

配置逻辑:

对上层应用完全透明,不需要修改任何调用代码。

性能基准

在 M4 Max (128GB) 上,Qwen3.6 27B 4-bit 的实测数据:

引擎TTFT(冷启动)TTFT(缓存命中)Decode 速度
Ollama(MLX)1.2s0.8s38 tok/s
mlx-lm1.0s0.7s42 tok/s
Rapid-MLX0.9s0.08s52 tok/s

缓存命中时的 TTFT 差异最显著:Rapid-MLX 的分层缓存让 system prompt 几乎免费,这对 Agent 工作流(频繁复用相同 system prompt)意义极大。

在 M2 16GB 上,7B 模型 4-bit 的数据:

引擎Decode 速度工具调用成功率
Ollama(MLX)28 tok/s~92%
Rapid-MLX45 tok/s100%

常见问题排查

模型加载失败

# 检查内存是否足够
rapid-mlx info mlx-community/Qwen3.6-27B-Instruct-4bit

# 输出会显示所需内存
# Required memory: 14.2 GB
# Available: 16.0 GB
# Status: OK

工具调用格式错误

确认 --tool-call-parser 与模型匹配。如果不确定,使用 hermes(最通用的解析器,对格式错误容忍度最高)。

速度低于预期

# 检查是否启用了 Metal
rapid-mlx info --runtime

# 确认 GPU 利用率
rapid-mlx serve ... --verbose

如果 GPU 利用率持续低于 70%,通常是内存带宽受限——考虑换更高量化精度(4-bit → 8-bit)或更小的模型。

小结

Rapid-MLX 的核心价值不只是速度数字。在 Agent 工作流高频调用 LLM 的场景下,100% 工具调用成功率和 0.08s 缓存 TTFT 的组合,使得”在 Mac 上本地运行生产级 Agent”从”凑合可用”变成了”真正实用”。配合 M4/M5 芯片的神经加速器,Apple Silicon 已经是 2026 年最适合本地 AI 推理的消费级硬件平台之一。

对于有 Mac 开发机且不想把所有推理请求都发到云端的工程师,Rapid-MLX 是目前最值得部署的本地引擎。

Frequently asked questions

Rapid-MLX 和 Ollama 的 MLX 版本有什么区别?
Ollama 0.19(2026年3月)切换到 MLX 后速度大幅提升,但 Rapid-MLX 在此基础上进行了更深层优化:专用的 KV 缓存机制让缓存命中时的首 token 延迟降到 0.08s,工具调用解析器覆盖 17 种主流模型格式,并内置了 cloud routing 功能让本地无法处理的请求自动转发到云端
Rapid-MLX 支持哪些模型?
支持绝大多数主流 GGUF 和 MLX 格式模型,包括 Qwen3、Llama 3.x、DeepSeek-R1/V3、Gemma 3、GLM4、MiniMax、Kimi 等系列。工具调用解析器按模型系列匹配,Hermes 格式、Qwen3 格式、DeepSeek 格式都有对应解析器并带自动错误恢复
哪些 AI 编码工具可以直接接入 Rapid-MLX?
Rapid-MLX 提供 OpenAI 兼容 API(默认 http://localhost:8080),可无缝接入 Claude Code、Cursor、Aider、Cline 等工具。配置方式是将这些工具的 API 基础 URL 指向 Rapid-MLX 的本地地址,将 API Key 设为任意字符串
在低显存 Mac 上(如 M2 16GB)能运行多大的模型?
16GB 统一内存可以运行 4-bit 量化的 7B 或 8B 模型(约占 4-5GB),或 MoE 架构的较大模型(如 Qwen3.6 35B A3B 激活参数仅 3B,约占 6-8GB)。Rapid-MLX 会自动选择最优量化策略,优先确保推理速度
Rapid-MLX 的 cloud routing 功能如何工作?
当本地模型无法处理某个请求时(如超出上下文长度、需要更强推理能力),cloud routing 会自动将请求转发到配置的云端 API(如 Anthropic、OpenAI)。这让本地优先、云端兜底的混合架构变得透明,上层应用无需感知
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.