MLX 和 llama.cpp 怎么选:Mac 本地大模型运行时对比 - MLX 和 llama.cpp

MLX 和 llama.cpp 怎么选:Mac 本地大模型运行时对比

在 Mac 上运行本地模型的人很快就会遇到两个名字。llama.cpp 和它的 GGUF 文件,是 Ollama 和 LM Studio 的底层。MLX 是苹果自己为 Apple 芯片做的数组框架,它的语言模型包 mlx-lm 使用另一种格式的模型。两者都使用 Mac 的统一内存,也都可以很快。这篇讲 MLX 和 llama.cpp 的指南,会解释它们各是什么、怎么安装和运行、模型格式有何不同、可能需要调高哪个内存限制,以及怎样不靠道听途说来选择。如果你刚接触用 Mac 做本地 AI,请先读Mac 指南。

核对说明:安装要求和命令来自 MLX 安装页面、mlx-lm 的 README 和 llama.cpp 的 README,均于 2026-10-30 阅读。速度数字由显存带宽推算,不是实测。写这篇文章时我们没有对任何一个运行时做基准测试,也不声称其中一个更快;诚实的答案是,这取决于你的模型、量化和版本。

要点速览(更新于 2026-10-30)

  • MLX 需要 Apple 芯片、macOS 14.0 或更新版本、Python 3.10 或更新版本;用 pip install mlx-lm 安装语言模型工具。
  • llama.cpp 是跨平台的,通过 ARM NEON、Accelerate 和 Metal 把 Apple 芯片当作一等目标;它使用的 GGUF 文件在 Windows 和 Linux 上也能用。

  • 按工作方式选,而不是按传闻选:喜欢图形界面的用户可以在 LM Studio 里两个都试,只用 Mac 的 Python 用户可以用 mlx-lm,需要跨系统共享文件的人应该留在 GGUF。

MLX 和 llama.cpp 各是什么

MLX 的仓库把它描述为 Apple 芯片上的机器学习数组框架,由苹果机器学习研究团队开发。它有类似 NumPy 的 Python 接口、惰性计算、动态计算图和统一内存模型:数组存放在共享内存里,运算可以在 CPU 或 GPU 上执行而无需拷贝数据。mlx-lm 包建立在它之上,用于文本生成和微调,带有 Hugging Face 集成、量化工具、聊天命令和服务器。Hugging Face 上的 MLX Community 组织托管了成千上万个已经转换好的模型。

llama.cpp 是一个无依赖的纯 C/C++ 实现,可以在多种硬件上运行。它的 README 声明 Apple 芯片是一等公民,通过 ARM NEON、Accelerate 框架和 Metal 做了优化。它读取 GGUF 文件,一种单文件的模型格式,在GGUF 指南里有介绍,它也是 Ollama 和 LM Studio 的 GGUF 模式的底层引擎。README 展示了从 Hugging Face 下载模型并作为聊天或 OpenAI 兼容服务器运行的命令。

Mac 上两条本地推理路线的结构图:使用 llama.cpp、Ollama 和 LM Studio 的 GGUF 路线,以及使用 mlx-lm 的 MLX 路线
图 1:在 Apple 芯片上运行模型的两条路

安装和运行

对于 MLX,请确保你有原生的 Python 3.10 或更新版本和 macOS 14.0 或更新版本,然后安装包并运行模型:

pip install mlx-lm
mlx_lm.generate --prompt "How tall is Mt Everest?"
mlx_lm.chat

README 里的默认模型是 MLX Community 的 4-bit Llama 3.2 3B,你可以用 --model 参数选择别的模型。这个包还可以用 mlx_lm.server 启动 API 服务器,并用它的 convert 函数从 Hugging Face 转换和量化模型。

对于 llama.cpp,在 Mac 上最简单的办法通常不是自己编译,而是使用已经包含它的工具。Ollama 和 LM Studio 都包含,Ollama 指南和 LM Studio 教程给出了步骤。如果你想直接用这个项目,README 介绍了直接从 Hugging Face 安装并运行模型,编译指南则涵盖从源码构建。较新的版本展示的是统一的聊天和服务命令;旧版本使用单独的 llama-cli 和 llama-server 程序,请阅读你所用版本的 README。

模型格式与量化

两个世界使用不同的文件。llama.cpp 使用带有 Q4_K_M 这类量化类型的 GGUF,我们在量化指南里有解释。MLX 使用它自己的格式,通常来自 mlx-community 组织,量化在转换模型时选择,比如 4-bit 或 8-bit。给其中一个用的文件在另一个里运行不了,所以要下载与你的工具匹配的版本。4-bit 的 MLX 模型和 Q4_K_M 的 GGUF 大小相近但不完全相同,质量也可能略有差别,所以要用你自己的提示词来对比,而不是假定它们相等。

方面 MLX(mlx-lm) llama.cpp(GGUF)
平台 Apple 芯片,也有 CUDA 后端 Apple 芯片、NVIDIA、AMD、Vulkan、CPU
模型文件 mlx-community 的 MLX 格式或自己转换 Hugging Face 和许多发布者的 GGUF
安装 pip install mlx-lm 通过 Ollama、LM Studio 或项目本身
接口 Python 接口、聊天、生成、服务器 命令行、服务器,以及建立在它之上的许多工具
微调 mlx-lm 中的 LoRA 和全量微调 不是它的主要用途
跨机器共享文件 实际上只在 Mac 上 同一个文件可用于 Windows、Linux 和 Mac

Apple 芯片上的内存限制

Mac 的内存由 CPU 和 GPU 共享,但 macOS 限制 GPU 可以锁定多少。mlx-lm 的 README 解释说,相对机器内存来说很大的模型可能会很慢,在 macOS 15.0 或更新版本上,mlx-lm 会尝试锁定模型和缓存所占用的内存。如果你看到它关于模型所需内存超出允许范围的警告,可以用 sudo sysctl iogpu.wired_limit_mb=N 调高限制,其中 N 要大于模型的大小(以 MB 计)并小于机器的内存。要给 macOS 和你的其他应用留足内存,并记住这个设置在重启后不会保留,除非你另作处理。同样的算术也适用于 llama.cpp:权重加 KV 缓存必须装得进 GPU 可用的内存,见上下文指南。

Mac mini M6 与 Mac mini M5 Pro 运行 8B 和 32B 模型的推算速度上限分组柱状图
图 2:由显存带宽推算的上限,不是实测速度

速度:我们能说什么、不能说什么

两个运行时的生成速度都取决于显存带宽。把我们记录的带宽除以约 4.9GB 的 8B Q4_K_M 模型的大小,153 GB/s 的 Mac mini M6 推算上限约为每秒 31 个 token,307 GB/s 的 Mac mini M5 Pro 约为 63。对于约 19.7GB 的 32B 模型,上限约为 8 和 16。这些是上限,不是测量值。哪个运行时更接近上限,取决于版本、模型和设置;两个项目优化得都很快,公开的对比文章很快就过时。如果速度对你重要,请在你自己的机器上用你自己的模型测试两者,方法见我们的评测阅读指南。

如何选择运行时

按你的工作方式选择,而不是看哪个名字更火。下表把区别变成决策,图里用简短的形式又重复了一遍。

如果你…… 从这里开始 因为
想要图形界面和最简单的设置 LM Studio 或 Ollama 都隐藏了细节并处理下载
与 Windows 或 Linux 机器共享模型文件 使用 llama.cpp 工具的 GGUF 一个文件到处可用
在 Mac 上写 Python,想编写脚本或微调 mlx-lm Python 接口、量化和 LoRA 工具
需要给其他应用提供 OpenAI 兼容接口 Ollama、llama.cpp 服务器或 mlx_lm.server 三者都能提供
拿不定主意 用自己的提示词两个都跑 质量和速度取决于你的模型
五种情况下优先尝试哪种 Mac 运行时的表格
图 3:该从哪个运行时开始

公平的测试很简单。选一个同时有两种格式、量化相近的模型,用相同的上下文长度运行相同的提示词,记录提示词处理时间、生成速度和回答质量。两个项目的每次更新之后都重复一遍,因为它们变化很快。如果某个工具对你的负载明显更好,就用它;如果差不多,就选工作流更适合你的那个。Ollama、LM Studio 与 llama.cpp 的对比列出了基于 GGUF 的几种工具的实际差别。

对于长提示词,要同时检查提示词处理速度和生成速度。mlx-lm 提供可配置的预填充步长,默认 2048,还有提示词缓存命令用来复用长上下文,这对每次都发送相同系统提示词的助手很有帮助。llama.cpp 服务器同样会缓存提示词。请在你用的工具里测试这个功能,而不是想当然。

在 Mac 上微调

如果你想让模型适应自己的数据,根据 README,mlx-lm 包含 LoRA 和全量微调,并支持量化模型。这让它成为在 Mac 上试验微调最简单的办法之一,只是受内存限制。LoRA 指南解释了一次微调需要多少内存,以及为什么大统一内存的 Mac 适合小实验,但与 GPU 服务器相比会比较慢。

你需要哪台 Mac

运行时的重要性不如内存。我们的参考价格里,24GB 内存、512GB 存储的 Mac mini M6 为 9,999 元,64GB 内存、1TB 的 Mac mini M5 Pro 为 24,249 元,128GB 内存、1TB 的 Mac Studio M5 Max 为 41,749 元。这些是 2026-10-30 的官方标价,不含任何升级。24GB 统一内存可以舒适地运行 8B 和 14B 模型,32B 模型只能配短上下文,因为 macOS 会为自己保留一部分内存。64GB 能让 32B 模型配长上下文运行,Q4_K_M 的 70B 模型需要约 43.1GB,装下后只剩不大的缓存。128GB 则可以运行非常大的混合专家模型。

带宽是故事的另一半。我们记录的带宽是 M6 mini 的 153 GB/s 和 M5 Pro 的 307 GB/s,所以更快的芯片让同一个模型的生成上限大约翻倍。如果你打算经常使用大模型,先买内存,再考虑带宽;如果你主要和 8B 模型聊天,你不会感觉到不同规格之间的差别。Mac mini 服务器指南讲了一台常开机器的取舍。

实用的设置

许多 Mac 用户最后两个都用。他们保留 Ollama 或 LM Studio 用于日常聊天和需要 OpenAI 兼容接口的工具,想试 MLX 模型或做实验时,就在虚拟环境里安装 mlx-lm。给每个工具各自的模型文件夹,留意磁盘,因为一个 70B 的文件就要几十 GB,并简单记下哪些模型文件适用于哪个工具。想要一个小型常开服务器,请看 Mac mini 服务器指南。

常见错误

  • 下载了错误的格式。 GGUF 文件在 mlx-lm 里运行不了,MLX 模型也不能在 llama.cpp 里运行。
  • 相信旧文章里的速度结论。 两个项目变化很快,请测试你的版本。
  • 把内存占满。 给 macOS 和你的应用留出空间。
  • 在 Intel Mac 上用 MLX。 它需要 Apple 芯片。
  • 混用 Python 环境。 给 mlx-lm 用一个干净的虚拟环境。

常见问题

在 Mac 上 MLX 比 llama.cpp 快吗?

取决于模型、量化和版本。我们没有做过基准测试,所以请用你自己的模型测试两者。

安装 MLX 需要什么?

Apple 芯片、macOS 14.0 或更新版本、原生的 Python 3.10 或更新版本,然后 pip install mlx-lm。

能在 MLX 里使用 GGUF 文件吗?

不能。mlx-lm 使用自己的模型格式,通常来自 Hugging Face 上的 mlx-community 组织。

LM Studio 两者都支持吗?

LM Studio 通过 llama.cpp 提供 GGUF,并在 Apple 芯片上提供 MLX 引擎,所以可以在一个应用里对比;请查看它当前的文档。

运行大模型时怎么调高内存限制?

在 macOS 15 或更新版本上,mlx-lm 建议使用 sudo sysctl iogpu.wired_limit_mb=N,N 要大于模型大小并小于你的总内存。

对新手哪个更好?

先用 Ollama 或 LM Studio,如果你想用 Python 控制或微调,再试 mlx-lm。

和我们聊聊

在 Mac 上跑本地模型,不确定该用哪个工具?欢迎加入社区,或发邮件到 admin@microaione.com。

参考资料:MLX 安装指南、mlx-lm 仓库、llama.cpp 仓库、Hugging Face 上的 MLX Community。

类似文章