当前位置:首页|资讯|OpenAI|GitHub|LLaMA

无需高性能GPU,在MacBook(或linux)上运行对标GPT3的LLaMA模型教程

作者:羊驼大法发布时间:2023-03-13

上周,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.编译代码。运行命令

make

4.根据自己的需求下载泄露的LLaMA模型文件,演示使用的是最小的7B版,下载链接如下:

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文件里

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文件



8.转换模型为4bits的模型文件

./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

转换完成后7B文件夹下会出现一个ggml-model-q4_0.bin文件,这也是我们等会运行模型需要用到的文件。

9.运行模型

./main -m ./models/7B/ggml-model-q4_0.bin \
  -t 8 \
  -n 128 \
  -p 'The first man on the moon was '

-n参数代表的是需要生成内容的长度,-p参数代表的是你的输入。


经过测试,7B模型生成128位token的速度挺快的,大概十多秒。LLaMA模型主要使用英文预料进行训练。我测试使用的7B模型对中文的支持不太友好,对于中文问题答非所问。有时间我再测试一下更大的模型,看看效果如何。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1