Skip to content

Ollama MLX 后端 - Mac 本地模型速度翻倍指南

Ollama 0.19 在 Apple Silicon 上引入 MLX 后端,但不会自动启用。需要拉取带特定 tag 的模型变体才能获得速度提升,实测同模型同机器 decode 速度从 ~36 tok/s 提升到 ~78 tok/s。

背景:Ollama 的双引擎架构

之前:  Ollama ──→ llama.cpp (跨平台,通用)
现在:  Ollama ──┬─→ llama.cpp (默认路径)
                 └─→ MLX (Apple Silicon 专用,更快)
                         │
                    由模型 tag 决定走哪条路
  • llama.cpp — 久经验证的跨平台推理引擎,Linux/Windows/Mac 通用
  • MLX — Apple 专为 Apple Silicon 设计的 ML 框架,深度优化统一内存架构

如何启用 MLX 路径

前置条件: - Ollama >= 0.19 - Apple Silicon Mac(M1/M2/M3/M4/M5) - 32GB+ 统一内存(官方建议)

MLX 路径的 tag 标识:

关键词 格式说明 示例
nvfp4 NVIDIA 4-bit 浮点量化 qwen3.5:35b-a3b-coding-nvfp4
mxfp8 MLX 8-bit 浮点 qwen3.5:mxfp8
mlx-bf16 MLX BFloat16 qwen3.5:mlx-bf16

不含以上关键词的 tag → 走 llama.cpp 路径

操作步骤:

# 1. 更新 Ollama
ollama --version  # 确认 >= 0.19

# 2. 拉取 MLX 变体(以 Qwen 3.5 为例)
ollama pull qwen3.5:35b-a3b-coding-nvfp4

# 3. 运行(Ollama 自动识别 tag 选择 MLX 引擎)
ollama run qwen3.5:35b-a3b-coding-nvfp4

# 4. 查看 decode 速率
ollama run qwen3.5:35b-a3b-coding-nvfp4 --verbose
# 底部会显示 eval rate: ~78 tokens/sec

如何找到 MLX 变体

问题: Ollama 模型搜索页(ollama.com/search)暂未索引 MLX 变体,直接搜会得到社区上传的其他版本。

解决方案(按优先级):

1. 官方博客(最权威)
   https://ollama.com/blog/mlx
   列出所有已支持 MLX 的模型

2. Web 搜索
   搜索 "ollama mlx qwen3.5" 或 "ollama mlx qwen3.6"
   能快速找到对应 tag

3. GitHub Issue / Reddit
   社区讨论常有完整 tag 列表

目前支持 MLX 的模型: - Qwen 3.5 系列(首发) - Qwen 3.6 系列 - 更多模型持续添加中


实测性能对比

测试环境: MacBook Pro M3, 128GB RAM, Qwen 3.5 35B A3B

MLX 路径 (nvfp4):     ~78 tokens/sec  ████████████████████
llama.cpp 路径 (默认): ~36 tokens/sec  ████████████
                                      ────────────────────
                                      ~2.2x 速度差距

Ollama 官方基准(M5 Pro/Max,更新数据):

指标 llama.cpp (Q4_K_M) MLX (NVFP4) MLX (int4)
Prefill (tok/s) 基线 显著提升 1851
Decode (tok/s) 基线 ~78 (M3) 134

M5 系列芯片额外利用 GPU Neural Accelerator,TTFT 和 decode 进一步加速。


NVFP4 量化格式

NVFP4 是 NVIDIA 的 4-bit 浮点量化格式,Ollama 首次在 MLX 后端中支持:

NVFP4 优势:
├── 更低内存带宽 → 更快推理
├── 更小存储体积
├── 与云端推理(生产环境)结果一致 → 本地/云端 parity
└── 支持 NVIDIA model optimizer 优化的模型

限制:
├── 仅 macOS 版 Ollama 支持(Linux/Windows 不支持)
├── 当前仅有少量模型提供 NVFP4 变体
└── 非 MLX 后端无法使用

缓存改进(Ollama 0.19)

MLX 后端还带来了缓存机制的升级,对 Agent 编码场景尤其重要:

改进前:                       改进后:
┌──────────────────┐         ┌──────────────────┐
│ 每次对话独立缓存  │         │ 跨对话复用缓存    │
│ 内存浪费大        │         │ 共享 system prompt │
│ 分支时缓存失效    │         │ 智能检查点保存    │
└──────────────────┘         │ 共享前缀更长存活  │
                             └──────────────────┘
  • 跨对话缓存复用 — 共享 system prompt(如 Claude Code)不重复计算
  • 智能检查点 — 在 prompt 关键位置保存缓存快照,减少重复处理
  • 更智能的驱逐 — 共享前缀在分支切换时存活更久

快速决策:该用哪个?

你在 Mac 上用 Ollama?
├── 模型有 MLX 变体? ──是──→ 用 MLX tag (nvfp4/mxfp8)
│                         速度 ~2x,缓存更好
│
└── 没有 MLX 变体? ──────→ 用默认 tag (llama.cpp)
                          稳定可靠,模型覆盖广

注意:
├── 追求编码/Agent 场景 → MLX 变体(缓存改进大)
└── 追求模型多样性 → 默认路径(更多模型可选)

参考资料

相关笔记