欢迎光临散文网 会员登陆 & 注册

apple sillicon在llama.cpp下运行llama2过程

2023-08-11 11:31 作者:画面  | 我要投稿

苹果芯片下部署大模型算是比较小众,所以写一篇过程,记录一下。llama2的模型比较大,可以通过申请下载。llama2在mac的部署分为两种,其中一种是text generation webui,text generation是比较全面的工具,支持多种模型读取形式,包括transformer,llama.cpp,exllama, 另外一种是直接使用llama.cpp。

首先,讲一下为什么不建议直接用text generation webui的方式搭建,因为text generation的llama.cpp调用是通过llama-cpp-python(一种python wrapper),llama-cpp-python不一定会指向本地的llama.cpp(llama.cpp的更新速度很快,llama-cpp-python不一定跟得上),有可能会导致llama.cpp下转换的llama2模型在text generation webui无法正确读出,或者即使能够使用,但是没有mps加速。hugging-face下TheBloke提供了一批转换过的llama2模型,但是这些在text generation webui下不支持mps加速。fp16下,带mps加速的会比不带mps加速的快3倍。

过程分为几步,环境的搭建,模型性能调优,写提示。

环境搭建

安装的大致顺序如下:

xcode - > vscode -> brew -> python -> github desktop

github desktop把llama.cpp clone到本地,可以随时更新最新版本。

在llama.cpp目录下pip install -r requirement.txt 下载依赖库,并把mps选项打开编译安装。

模型性能调优

默认70b,使用python convert.py 模型路径,把模型转换为ggml。

使用如下./main -m ./models/70B/ggml模型文件.bin -gqa 8 -ngl 1 -t 线程数量 进行试运行。

运行的log如果有metal performance,mps则成功被调用,否则重新打开mps选项并编译llama.cpp。在mps打开的情况下,线程数量不一定是mac的线程最大值为最快,一般来说,t为2/3*tmax为最优。gqa在70b下强制为8,否则会报错。ngl设为一个大于等于1的数值,就可以打开mps加速。

建议多做尝试,并记录速度,把参数调整至合适。

写提示文本

在prompts下复制chat_with_bob.txt的文本,编写提示词,这一部是用来设置启动时的提示词,类似于text generation的角色卡。

最终运行

./main -m ggml模型文件 -gqa 8 -ngl 1 -t 16 -f 提示词 -r "User:" --repeat_penalty 1.0 --color -i

其中,-r "User:"是提示文本的用户轮。这里t为16,我试下来会更快一些。









apple sillicon在llama.cpp下运行llama2过程的评论 (共 条)

分享到微博请遵守国家法律