Karpathy爱上羊驼:纯C代码实现婴儿Llama2,MacBook可运行,已揽1.6k星

作者: 杜伟

来源: 机器之心

发布日期: 2023-07-27 12:25:56

Karpathy利用周末时间,做了一个关于Llama2的有趣项目——「llama2.c」,该项目可以让你在PyTorch中训练一个baby Llama2模型,然后使用近500行纯C、无任何依赖性的文件进行推理,并在M1芯片的MacBook Air上以fp32的浮点精度、18 tok/s的速度对故事进行采样。

上个周末,Karpathy花了整个周六来忙一个Llama2的有趣项目。这一周来,Meta开源的Llama2火遍了整个AI社区。这不,连特斯拉前AI总监、年初重回OpenAI的Andrej Karpathy也坐不住了。他利用周末时间,做了一个关于Llama2的有趣项目——「llama2.c」。GitHub地址:https://github.com/karpathy/llama2.c具体是什么呢?

他表示「llama2.c」可以让你在PyTorch中训练一个baby Llama2模型,然后使用近500行纯C、无任何依赖性的文件进行推理。并且,这个预训练模型能够在M1芯片的MacBook Air上以fp32的浮点精度、18 tok/s的速度对故事进行采样。

Karpathy介绍称,「llama2.c」的灵感来自llama.cpp,后者由资深开源社区开发者Georgi Gerganov创建,可以在MacBook上使用4-bit量化运行第一代LLaMA模型。

对于「llama2.c」,它的训练代码由nanoGPT修改而来,用来训练Llama2架构的模型。核心是在如下run.c中编写C推理引擎,不过它目前并不是一个生产级库。下⾯是部分推理代码。完整代码地址:https://github.com/karpathy/llama2.c/blob/master/run.c

结果令Karpathy非常惊讶,你可以在(M1)CPU的纯单线程C语言中以fp32的交互速率来推理更小(O (~10MB))的模型。当然,他表示自己没有尝试对最小规模的Llama2模型(70亿参数)进行推理,他预计速度会非常慢。目前,Karpathy在M1 MacBook Air上,能够以fp32的浮点精度、100tok/s的速度对15M参数的288 6层6头的模型进行推理。

之后,Karpathy对项目进行了更新,使用「-O3」进行编译可以将M1 MacBook Air上的tok/s从18增加到了98。这还没完,使用「-funsafe-math-optimizations」进行编译更是将tok/s增加到315。他表示,只要在gcc命令中包含更多字符,速度就能提升17.5倍。也许你要问了,这个项目有什么意义呢?

在Karpathy看来,在一些较窄的领域(如生成故事)中,人们可以使用极其小的Transformers来做有趣的事情。因此,这种可以移植的纯C实现或许非常有用,我们可以通过简单的方法高交互速率地运行合理大小的模型(几千万参数)。

有网友对「llama2.c」的开发过程很感兴趣,很多人都会有这样的想法,只是在等待合适的时机,他们没意识到几天内就可以完成很多工作。Karpathy回复称,自己对利用float32权重块及其上的微小推理代码来生成故事非常感兴趣。所以他花了整个周六的时间(从起床一直到睡觉)来写代码,然后让项目工作。此外,Karpathy还表示自己将出讲解视频。

项目详情到目前为止,「llama2.c」项目已经在GitHub上获得了1.6k的Stars,并在快速增长。下面简单介绍一下该项目的运行步骤。为了使用纯C语言运行一个baby Llama2模型,你需要以下的模型检查点。下载TinyStories数据集上训练的一个15M参数的模型(大约58MB),并将它放入默认检查点目录中。然后编译并运行C代码。请注意这只是原始tokens流。

遗憾的是,我们现在必须通过一个简单的转换封装器来运行C代码(只有30行)。最后你将看到文本流。在Karpathy的M1 MacBook Air上,运行速度约100 tok/s,对于超级原生的fp32单线程C代码来说还不错。示例输出如下所示。

wget https://karpathy.ai/llama2c/model.bin -P out gcc -O3 -o run run.c -lm ./run out/model.bin pip install sentencepiece python run_wrap.py更多细节请查看原项目。

UUID: bde5a0d8-6315-486b-8f0d-e8f9518fceaf

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/学术头条公众号-pdf2txt/学术头条2023年/学术头条_2023-07-27_OpenAI联创Karpathy爱上羊驼:纯C代码实现婴儿Llama2,MacBook可运行,已揽16k星.txt

是否为广告: 否

处理费用: 0.0043 元