macOS 大模型本地部署日常使用

date
Jan 21, 2024
slug
macOS 大模型本地部署日常使用
status
Published
tags
LLM
macOS
summary
macOS 大模型本地部署日常使用
type
Post
我的日常开发设备是 M2 Max 64G,最近想要测试下在本地起大模型作为日常使用是否可行,选了 llama.cpp 和 mlx 这两个推理框架作为对比。mlx 是苹果推出的 Apple silicon 专用机器学习框架,除了推理任务,也可以进行模型训练,llama.cpp 刚开始是专为 Apple silicon 开发的推理框架(现在也支持 Linux 和 Windows),支持多种量化方法,从 2bit 到 8bit,tradeoff 在于资源消耗和模型能力的退化,一般推荐 4bit 做推理,性能损失在可接受的范围。
关于测试模型选择,在 7B~34B 这个区间,大模型的能力随着参数的增加提升还是很明显的,虽然现在有很多很强的 7b 模型号称达到了两倍参数量模型的效果,不过我觉得以后对于配置还行的(非入门级)设备,14b/34b 的 int4 量化版会是跑本地模型的首选。这次测试选了自己基于 qwen-14b SFT + DPO 训练的模型做测试,虽然这个模型跑过很多评估集,但其实我自己没怎么日常试用过,或许从日常使用中能够获得新的训练调优灵感、方向。

推理速度 benchmark 结果

mlx 版本:0.0.10
框架
精度
权重大小(GB)
内存占用(MB)
速度(tokens/s)
mlx
int4
8.7
9638.88
17.33
mlx
fp16
28
21130.97
8.78
llama.cpp
int4(q4_1)
9.0
8592.7
30.25
llama.cpp
int8
15
14358.31
21.05
llama.cpp
fp16
28
27023.94
12.5
从表格中可以看到当前阶段 llama.cpp 还是快挺多的,毕竟是专门优化的推理库。

客户端

调研了一圈发现支持本地模型的客户端基本都是基于 llama.cpp 的,例如 lmstudio 和 Ollama。lmstudio 需要升级到 macOS 13.6,我的系统比较老,就没测试,但是整个界面给我的感觉是太啰嗦了,而且也没有全局快捷键、预定义 prompt 模版之类的功能。
notion image
Ollama 有推荐一些客户端,看了一圈感觉都不是很喜欢,最后选择了 Raycast 的 Ollama 插件。ollama 加载自定义的 gguf 模型文件需要有一个额外的转换过程 `ollama create`,这个过程中可以定义模型 sampling 的一些参数,例如 temperature 、template 等,ollama 插件中的预制 prompt 模版是使用 system 实现的,所以 `ollama create` 时一定要加上 system,我用的是 chatml 的 template。
这个插件的完成度很高,可以多轮对话,也可以获得光标选取的文本,不过创建自定义模版感觉还是不是很方便,就先这样用着吧。
notion image

© PanicByte 2021 - 2026 沪ICP备2023032072号-1