1000行C语言搓出GPT-2!AI大神Karpathy新项目狂揽2.5k星

科技动态 2024-04-09 13:55 阅读:

终于,Karpathy的新项目上线了!这次不是什么AI大课,而是一个让人眼前一亮的新项目。仅仅几个小时,这个项目就已经狂揽了2.5k颗星,可见其受欢迎程度。

这个项目的地址是https://github.com/karpathy/llm.c,让人兴奋不已。据说,初创公司们都在等着Karpathy挖掘出新的点子。原来,SUNO最初是nanoGPT的一个分支,而Suno的首款产品Bark受到了nanoGPT的启发。

Karpathy似乎正在尝试重新设计LLM架构,通过llm.c项目来探索一种更简单、更高效的模型训练方法。他曾说过:“我无法创造的,我就无法理解。”这句话完全让AI走向了大众化。

那么,究竟是如何用C语言训出LLM的呢?据说,只需千行C代码就能训完GPT-2。Karpathy在项目开篇介绍中提到了自己正在进行的研究,包括使用CUDA实现、使用SIMD指令加速CPU版本等等。他希望通过维护干净简单的参考实现和更优化的版本,让这些版本接近PyTorch,但只需很少的代码和依赖项。

要训练模型,首先需要下载GPT-2模型的权重文件,并将其作为检查点保存下来。然后,编译代码,设置程序运行的线程数,加载模型的权重和Token,进行微调过程,最终生成一个样本。整个过程中,需要手动编写代码,实现模型中每一层的数据处理流程,包括前向传播、反向传播和参数更新等。

Karpathy还介绍了一个非常小的教程,实现GPT-2模型的单层LayerNorm,是一个很好的起点。他表示,一旦有了所有的层,就可以把它们串联起来,虽然这个过程相当乏味,但却是必不可少的。

未来,Karpathy计划将这个过程迁移到CUDA上,以提升运算效率,甚至达到接近PyTorch的水平,而不需要依赖复杂的库。他已经完成了其中的几层,接下来的工作包括减少计算精度、添加新的层等。

这个项目的未来看起来充满了希望,等着看Karpathy的下一个“从头开始构建”的视频吧!参考资料:https://github.com/karpathy/llm.c,https://twitter.com/karpathy/status/1777427944971083809。