上周,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项目的源码。运行命令
3.编译代码。运行命令
4.根据自己的需求下载泄露的LLaMA模型文件,演示使用的是最小的7B版,下载链接如下:
5.在llama.cpp文件夹下新建目录models,把下载好的文件按照如下结构放入models文件里
6.安装python虚拟环境,执行如下命令创建虚拟环境并安装依赖:
7.转换模型文件为ggml FP16 format的格式,执行如下命令:
执行完之后7B文件夹会多出一个ggml-model-f16.bin文件
8.转换模型为4bits的模型文件
转换完成后7B文件夹下会出现一个ggml-model-q4_0.bin文件,这也是我们等会运行模型需要用到的文件。
9.运行模型
-n参数代表的是需要生成内容的长度,-p参数代表的是你的输入。
经过测试,7B模型生成128位token的速度挺快的,大概十多秒。LLaMA模型主要使用英文预料进行训练。我测试使用的7B模型对中文的支持不太友好,对于中文问题答非所问。有时间我再测试一下更大的模型,看看效果如何。