无需高性能GPU,在MacBook(或linux)上运行对标GPT3的LLaMA模型教程
源文来自: https://www.bilibili.com/read/cv22383652
上周,Facebook“被”开源了其对标OpenAI的GPT3的大型语言模型LLaMA。Facebook称LLaMA模型是一个从7B到65B参数的基础语言模型的集合。在数万亿个token上训练们的模型,并表明可以完全使用公开可用的数据集来训练最先进的模型,特别是,LLaMA-13B在大多数基准测试中的表现优于GPT-3(175B)。但是,尽管拥有了泄露的模型,但是根据LLaMA官方的介绍,要想运行该模型需要30GB左右显存的显卡支持,这是个人电脑难以做到的。
两天前,GitHub上的一位开发者ggerganov发布了llama.cpp项目,该项目使用了C++重写了LLaMA模型,使其能够在硬件较弱的电脑上使用支持AVX2指令集的CPU运行LLaMA模型,不需要较高的显卡需求。
项目地址:https://github.com/ggerganov/llama.cpp
该项目的特点是:
1.主要目标是在MacBook上使用4位量化运行模型。
2.纯C/C++实现。
3.使用Apple的M系列芯片加速框架,在MacBook上运行有奇效
4.AVX2支持x86体系结构。
5.混合F16/F32精度。
6.支持4位量化。
7.在CPU上运行。
下面,以我的MacBook Pro M1 Pro 16+512为例,介绍一下如何在MacBook上运行LLaMA模型。Linux用户可以到GitHub地址上查看运行方法,方法大同小异。教程中使用的文件已打包传到阿里云盘,链接见评论区。
1、安装好conda环境和C++编译环境,可以在各大搜索引擎上搜索安装办法,这里不再赘述。
2、下载llama.cpp项目的源码。运行命令
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
3.编译代码。运行命令
4.根据自己的需求下载泄露的LLaMA模型文件,演示使用的是最小的7B版,下载链接如下:
如果下不来:就上https://huggingface.co/nyanko7/LLaMA-7B/tree/main 这个网站下来所有文件。
For the 7B model...
aria2c --select-file 21-23,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
https://huggingface.co/nyanko7/LLaMA-7B/tree/main
For the 13B model...
aria2c --select-file 1-4,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
For the 30B model...
aria2c --select-file 5-10,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
For the 65B model...
aria2c --select-file 11-20,25,26 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
And for everything...
aria2c 'magnet:?xt=urn:btih:b8287ebfa04f879b048d4d4404108cf3e8014352&dn=LLaMA'
5.在llama.cpp文件夹下新建目录models,把下载好的文件按照如下结构放入models文件里
[图片上传失败...(image-58ba57-1681010060939)]
6.安装python虚拟环境,执行如下命令创建虚拟环境并安装依赖:
conda create -n pytorch_env python=3.10
conda activate pytorch_env
pip install torch numpy sentencepiece
7.转换模型文件为ggml FP16 format的格式,执行如下命令:
python convert-pth-to-ggml.py models/7B/ 1
执行完之后7B文件夹会多出一个ggml-model-f16.bin文件
[图片上传失败...(image-3f7cd4-1681010060939)]
8.转换模型为4bits的模型文件
./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2
转换完成后7B文件夹下会出现一个ggml-model-q4_0.bin文件,这也是我们等会运行模型需要用到的文件。
[图片上传失败...(image-499b3a-1681010060939)]
9.运行模型
./main -m ./models/7B/ggml-model-q4_0.bin \
-t 8 \
-n 128 \