OpenAI大神Karpathy纯C代码打造简化版Llama2 已获2.2K星
OpenAI的Andrej Karpathy(其在深度学习领域的贡献而闻名)创建了一个简化版的Llama2模型_Baby-Llama,并展示了在资源受限设备上使用纯C代码运行复杂模型的可行性。
创建Llama2模型
Karpathy测试了开源项目Llama2,他在纯C编程语言中将nanoGPT调整为Llama2架构,并通过开发C代码的推理引擎“run.c”来实现。该项目在GitHub上已经获得了2.2K star。
Karpathy的方法成功地实现了高度交互率,即使使用包含数百万参数的合理规模模型,并在TinyStories数据集的1500万参数模型上进行训练。他在M1MacBook Air上报告称,Llama2模型的推理速度为每秒约100个标记,在C代码中实现了这一结果,展示了在资源受限设备上运行复杂模型的可行性。
Karpathy的Baby-Llama方法受到了Georgi Gerganov的项目llama.cpp的启发,该项目几乎与使用C和C 在MacBook上运行第一个版本的LLaMA相同。他的方法涉及使用PyTorch从头开始训练Llama2LLM架构,并将模型权重保存到原始二进制文件中。接着,他写了一个名为“run.c”的500行C文件,加载保存的模型,并使用单精度浮点数(fp32)进行推理。这种简化的方法确保了较低的内存占用,并且不需要外部库,从而在单个M1笔记本电脑上高效执行,无需GPU。
小型LLM的崛起
模型逐渐变小的最大原因是为了在较小的本地设备上进行训练和集成。Karpathy的方法不仅不需要GPU,而且为单设备上的实现提供了案例。此外,Meta与芯片制造商Qualcomm合作,旨在使Llama2在本地硬件上运行,而苹果则推出了为Apple Silicon优化的Transformers架构。Karpathy已经展示了许多可能性。
Karpathy强调这个项目是一个周末实验,并不适用于生产级部署,主要目的是展示在资源受限设备上使用纯C代码运行Llama2模型的可行性,因为长期以来,C语言在机器学习中并不常用,因为它不涉及GPU。
项目网址:https://github.com/karpathy/llama2.c
- 0000
- 0000
- 0000
- 0005
- 0000