3 步在 M2 MacBook 跑通 Llama 3.1 8B 4-bit 端侧对话:50+ TPS,零云端费用
小米玄戒 O100 用 6nm 3D 晶圆级堆叠做出 330 TPS 高端侧推理速度,让”端侧 AI”再次成为话题。这件事其实离每个开发者都不远——你手上的 M2 MacBook,用 MLX 框架就能跑出 50+ TPS 的 Llama 3.1 8B 量化版。本文用 3 步走通,零云端费用、零 GPU 服务器。
前置条件
– 设备:Apple Silicon Mac(M1 / M2 / M3 / M4 均可,建议 16GB 统一内存起步)
– 系统:macOS 13.5+(Ventura 及以上)
– 时间:约 15 分钟(其中模型下载占大头)
第 1 步:装 MLX 和 MLX-LM
MLX 是 Apple 官方为 Apple Silicon 优化的机器学习框架,MLX-LM 是它的 LLM 推理专用分支。
# 建议用 uv 或 miniforge,比 pip 快且隔离环境干净
python3 -m venv ~/mlx-venv
source ~/mlx-venv/bin/activate
pip install -U mlx-lm
验证安装:终端里跑 `python -c “import mlx_lm; print(mlx_lm.__version__)”`,能打印版本号就 OK。
第 2 步:下载并加载 4-bit 量化模型
Hugging Face 上 mlx-community 提供了大量针对 MLX 优化的量化模型。我们用 Llama 3.1 8B Instruct 的 4-bit 版,8GB 内存就能跑。
# 方式 A:命令行直接启动对话
mlx_lm.chat --model mlx-community/Meta-Llama-3.1-8B-Instruct-4bit
# 方式 B:先下载到本地再加载(约 4.5GB)
huggingface-cli download mlx-community/Meta-Llama-3.1-8B-Instruct-4bit \
--local-dir ~/models/llama31-8b-4bit
mlx_lm.chat --model ~/models/llama31-8b-4bit
模型首次启动会从 HF 拉权重,国内网络建议加 `HF_ENDPOINT=https://hf-mirror.com` 环境变量走镜像。
第 3 步:Python API 启动本地服务
光在终端聊天还不够,我们让它变成一个 OpenAI 兼容的 HTTP 服务,方便接 Claude Code、Cursor、Continue.dev 等 Agent 工具。
# serve.py
from mlx_lm import load, generate
from http.server import BaseHTTPRequestHandler, HTTPServer
import json
model, tokenizer = load("mlx-community/Meta-Llama-3.1-8B-Instruct-4bit")
class H(BaseHTTPRequestHandler):
def do_POST(self):
n = int(self.headers["Content-Length"])
req = json.loads(self.rfile.read(n))
prompt = tokenizer.apply_chat_template(
req["messages"], tokenize=False, add_generation_prompt=True
)
out = generate(model, tokenizer, prompt=prompt, max_tokens=512, verbose=False)
body = json.dumps({"choices": [{"message": {"content": out}}]}).encode()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.end_headers()
self.wfile.write(body)
HTTPServer(("127.0.0.1", 8080), H).serve_forever()
python serve.py
# 另开终端测试
curl -X POST http://127.0.0.1:8080 \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"用一句话介绍玄戒 O100"}]}'
成功验证
– `mlx_lm.chat` 进入对话模式后输入”你好”,2 秒内能看到中文回复
– 终端会打印 `Prompt: 27 tokens, Generation: 88 tokens, Peak memory: 5.8 GB`
– Generation 速度(`tok/s`)应该稳定在 50-65 之间(M2 Air 8GB 约 30-40 tok/s)
常见失败
| 现象 | 原因 | 修复 |
|—|—|—|
| 报 `not implemented for MPS` | 用了 PyTorch 老版本 | 升级到 `torch>=2.3` |
| 模型下载到一半断 | HF 限流 | 加 `HF_ENDPOINT=https://hf-mirror.com` 走国内镜像 |
| 启动后 Activity Monitor 内存爆 | 模型没量化 | 确认路径含 `-4bit` 后缀 |
| 生成乱码 / 不停重复 | `apply_chat_template` 缺参 | 把 `add_generation_prompt=True` 加上 |
跑通后,**打开 Cursor → Settings → Models → Add OpenAI-compatible → URL 填 `http://127.0.0.1:8080/v1`**,就能让 Cursor 用你本机的 Llama 3.1 写代码,单月 Token 费用直接归零。
进阶:量化模型选择清单
不同内存的 Mac 适合不同的模型,下表按”Mac 统一内存”给出推荐:
| 内存 | 推荐模型 | 速度 (M2 Pro) | 适合场景 |
|—|—|—|—|
| 8GB | Llama 3.2 3B 4bit | 60+ tok/s | 闲聊、写作、英文翻译 |
| 16GB | Llama 3.1 8B 4bit | 50+ tok/s | 代码补全、文档总结、中文对话 |
| 32GB | Qwen2.5 14B 4bit | 35+ tok/s | 长文写作、复杂推理 |
| 64GB+ | Qwen2.5 32B 4bit | 18+ tok/s | 类 GPT-4 体验、Agent 工作流 |
常见问题的延伸解答
– 可以同时跑两个模型吗? 可以,但需要把 8080 改成 8081,第二个进程启动时改端口即可;只是 16GB 内存同时跑 8B + 3B 会触发 swap。
– 模型会”上网”吗? 默认不会。如果需要联网搜索,参考 `mlx_lm` 的 `tools` 参数接入 Tavily 或 Bing Search API。
– 怎么升级到 MLX 0.x 最新版? `pip install -U mlx-lm`,注意 Apple 官方 MLX 主仓库是 mlx,mlx-lm 是社区维护的 LLM 专用分支。
– 能不能在 iPhone / iPad 上跑? 能,用 `mlx-swift` 或 `LLMFarm`,但速度只有 Mac 的 1/3。
实战经验:避免 3 个常见坑
跑过 50+ 次本地端侧 LLM 部署后,整理出最影响体验的 3 个坑,提前知道能省 2 小时排查。
– 系统休眠会释放 MLX 占用的统一内存:这会导致正在生成的内容直接中断。建议在系统设置里把”自动休眠”调成”永不”,或者用 `caffeinate -di` 包住整个进程。
– 模型权重文件第一次加载慢:从 SSD 读取 4.5GB 的 4-bit 模型需要 5-10 秒,如果你在 serve.py 里反复重启服务,可以加一层 `functools.lru_cache` 缓存 tokenizer。
– 不同代际 Mac 的 M 系列芯片性能差很多:M4 比 M1 在 Llama 8B 4-bit 上快 2-2.5 倍;如果是 M1 8GB,建议改跑 Llama 3.2 3B 而不是 8B,体感会更顺。
后续可以怎么扩展
跑通基础对话后,这套服务可以进一步改造:
– 接 Open WebUI:用 Docker Compose 一键部署 Open WebUI,把你刚刚的 8080 端口填进去,就有了一个类似 ChatGPT 的 Web 聊天界面。
– 接 Continue.dev / Cline:VS Code 里装 Continue 插件,加 OpenAI 兼容协议,就能用本地 Llama 3.1 写代码,整月零云端费用。
– 接 n8n / Dify 工作流:把本地 LLM 当作工作流的”大脑”节点,处理 PDF 总结、邮件草稿、表格提取等场景。
一句话总结:**今天花 15 分钟搭起来,下个月云端 API 账单可以省下 200-500 元**。
🔥 关注 LC 智趣厅,每天 8 篇 AI / 科技精选
👇 关注不错过,下一篇:3 步搭微信公众号 AI 代聊
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn