在Apple Silicon Mac上运行LLaMA
简介
准备好将你的AI研究提升到新的水平了吗?LLaMA - Meta AI的大型语言模型就是你需要的。LLaMA是专为帮助研究人员在AI子领域推进工作而设计的,它以非商业许可证发布,专注于研究用例,向全球的学术研究人员、政府组织、民间社会和学术机构以及工业研究实验室的相关人员开放访问权限。在本文中,我们将深入探讨LLaMA的精彩世界,并探索如何在M1 Mac上使用它,特别关注击何在M1/M2 MacBook Pro上使用llama.cpp运行LLaMA 7B和13B。准备好释放大型语言模型的全部潜力,彻底改变你的研究工作吧!
那么如何在你的MacBook Pro上运行它呢?
运行LLaMA
感谢Georgi Gerganov和他的llama.cpp项目,使得在没有专用GPU的单台计算机上运行Meta的LLaMA成为可能。这太神奇了!
步骤1 安装一些依赖
你需要安装Xcode
来运行C++项目。如果你没有:
1 | xcode-select --install |
同时,使用Brew
来构建C++项目(pkgconfig和cmake)。
1 | brew install pkgconfig cmake python@3.11 |
(可选)安装Python虚拟环境
1 | pip3 install virtualenv |
创建Python虚拟环境
1 | virtualenv (你的项目名称) |
激活你的虚拟环境
1 | source bin/activate |
接下来,安装PyTorch
(推荐安装Nightly版本)和一些其他包
1 | pip install --pre torch --extra-index-url https://download.pytorch.org/whl/nightly/cpu |
1 | pip install numpy sentencepiece |
(可选)尝试Metal Performance Shaders (MPS) backend用于GPU
1 | Python 3.11.2 (main, Feb 16 2023, 02:55:59) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin |
步骤2 下载项目
获取llama.cpp
🫡 仓库:
1 | git clone https://github.com/ggerganov/llama.cpp |
运行make
编译C++代码:
1 | make |
步骤3 下载LLaMA模型
获取模型的两种方式
- 官方表单:https://forms.gle/jk851eBVbX1m5TAv5
- 从Github获取BitTorrent:https://github.com/facebookresearch/llama/pull/73
注意
如果你从Github下载模型,不要使用ipfs链接,使用BitTorrent,以防后续无法转换模型
下载模型后,结构将如下所示:
1 | . |
步骤4 转换LLaMA模型7B
将模型放在llama.cpp仓库的models/目录下。
1 | python convert-pth-to-ggml.py models/7B 1 |
你的输出将如下所示:
1 | {'dim': 4096, 'multiple_of': 256, 'n_heads': 32, 'n_layers': 32, 'norm_eps': 1e-06, 'vocab_size': 32000} |
如果你遇到名为RuntimeError: PytorchStreamReader failed reading zip archive: not a ZIP archive的错误,请检查你的模型和我之前的注意事项。
这应该会生成models/7B/ggml-model-f16.bin
- 另一个13GB的文件。
这个脚本将模型量化为4位:
1 | ./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2 |
步骤5 运行LLaMA模型7B
1 | ./main -m ./models/7B/ggml-model-q4_0.bin \ |
输出:
第一个登上月球的人是在1969年7月时38岁。尼尔·阿姆斯特朗出生在我母亲的家人在萨吉诺和弗林特/海湾城之间的小农场定居后仅一两个月;他们来自宾夕法尼亚州(就像我们大多数人一样)。
在今年晚些时候对他的悼词中 - 他赞扬阿姆斯特朗的"伟大",这反映在尽管经历了2018年最糟糕的政治灾难,人们谈论它的程度比平常多得多)… 奥巴马指出:“我不认为…”
步骤6 运行LLaMA模型13B
要将13B模型转换为ggml
:
1 | python convert-pth-to-ggml.py models/13B/ 1 |
需要依次对每个文件运行quantize
命令:
1 | ./quantize ./models/13B/ggml-model-f16.bin ./models/13B/ggml-model-q4_0.bin 2 |
1 | ./main \ |
尽情享受!
参考资料🙏🏻
1. https://dev.l1x.be/posts/2023/03/12/using-llama-with-m1-mac/
2. https://til.simonwillison.net/llms/llama-7b-m2