你是否曾经想过在纯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 | 点击前往 | 点击前往 |
在执行项目安装之前,我们还需要安装Git
和GCC编译器
,请先根据本站所给出的教程安装。
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
的文件。