llama2.c|纯C语言推理开源语言模型Baby LLaMA

你是否曾经想过在纯C语言中推理一个baby Llama 2模型?没有?现在你可以了!llama2.c|Baby LLaMA

使用这段代码,你可以在PyTorch中从头开始训练Llama 2 LLM架构,然后将权重保存为原始二进制文件,再将其加载到一个简单的500行C文件(run.c)中,用于推理模型,目前仅支持fp32。在我的云Linux开发机上,一个dim 288 6层6头模型(约15M个参数)在fp32下的推理速度约为100 tok/s,在我的M1 MacBook Air上也是差不多。我对于可以用如此简单的方法以高交互速率运行相对规模较小的模型(数千万个参数)感到相当惊讶。

请注意,这只是一个周末项目:使用nanoGPT进行了调整,实现了Llama-2架构而不是GPT-2,并且主要工作是在run.c中编写C语言推理引擎。因此,目前这不是一个真正意义上的生产级库。

llama.cpp致敬,它启发了这个项目。我想要一个超级简单的解决方案,所以我选择硬编码llama-2架构,坚持使用fp32,并且只使用纯C语言编写一个推理文件,没有任何依赖项。

项目仓库

GitHub:karpathy/llama2.c: Inference Llama 2 in one file of pure C (github.com)

环境部署

模型下载

如果你无法通过给出的代码在线下载,也可以通过本站上传到网盘的模型下载,然后移动至项目根目录下即可。

官方下载 国内网盘
model.bin 点击前往 点击前往
model44m.bin 点击前往 点击前往

Windows

在执行项目安装之前,我们还需要安装GitGCC编译器,请先根据本站所给出的教程安装。

Windows系统安装Git请参阅此文章:

Windows系统安装GCC编译器请参阅此文章:


检测当前用户文档下是否存在openai.wiki文件夹,没有则自动创建该文件夹。

if not exist D:\openai.wiki mkdir D:\openai.wiki

通过该命令切换至该目录,方便执行后续操作。

cd /d D:\openai.wiki

执行如下命令,将该仓库远程文件拉取至本地。

git clone https://github.com/karpathy/llama2.c.git

执行如下命令,使命令行切换至克隆到本地的llama2.c库内。

cd /d D:\openai.wiki\llama2.c

执行如下命令,将会自动下载model.bin模型至llama2.c文件夹内。

curl -o D:\openai.wiki\llama2.c\model.bin https://karpathy.ai/llama2c/model.bin

执行如上命令之后,将会在命令行窗口内看到如下输出,待其到100%即下载完成。

D:\openai.wiki\llama2.c>curl -o D:\openai.wiki\llama2.c\model.bin https://karpathy.ai/llama2c/model.bin

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 57.9M 100 57.9M 0 0 1666k 0 0:00:35 0:00:35 --:--:-- 2753k

执行如下命令,将会自动下载model44m.bin模型至llama2.c文件夹内。

curl -o D:\openai.wiki\llama2.c\model44m.bin https://karpathy.ai/llama2c/model44m.bin

执行如上命令之后,将会在命令行窗口内看到如下输出,待其到100%即下载完成。

D:\openai.wiki\llama2.c>curl -o D:\openai.wiki\llama2.c\model44m.bin https://karpathy.ai/llama2c/model44m.bin

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 159M 100 159M 0 0 1538k 0 0:01:46 0:01:46 --:--:-- 1752k

在您下载完成模型之后,我们此时可以让该模型跑起来啦。在终端中执行如下命令,将会自动在项目文件夹内创建一个名为run的文件。

猜你喜欢

转载自blog.csdn.net/u010291330/article/details/132580827