纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了
文章摘要
【关 键 词】 Andrej Karpathy、C语言、GPT-2、llm.c、机器学习
Andrej Karpathy,前特斯拉Autopilot负责人和OpenAI科学家,近日发布了一个名为「llm.c」的项目,该项目仅使用大约1000行纯C语言代码,就能在CPU/fp32上实现GPT-2模型的训练。
这一成就在机器学习社区引起了广泛讨论,项目在GitHub上的Star数量在短时间内迅速增加。
Karpathy选择从GPT-2开始,是因为它是大型语言模型(LLM)的先驱,具有现代形式的组合,并且已有可用的模型权重。
在llm.c项目中,所有所需的内存在开始时一次性分配,训练过程中不会创建或销毁任何内存,内存占用量保持不变。
项目手动实现了所有单个层的前向和后向传递,并将它们串联起来,例如layernorm、编码器、matmul、自注意力、gelu、残差、softmax和交叉熵损失等。
Karpathy目前正在将项目逐层移植到CUDA上,以提高效率,并期待能在PyTorch的合理范围内提升性能,但不依赖于任何重型依赖项。
他还计划将项目的精度从fp32降低到fp16/以下,并增加一些新层以支持更现代的架构。
使用llm.c需要下载并tokenize数据集,例如tinyshakespeare数据集。
项目提供了一个脚本来下载GPT-2权重并将其保存为C语言中可加载的检查点。
然后,使用这些权重进行初始化并进行训练。
编译完成后,可以运行训练程序,并使用Adam优化器进行微调。
生成的token ID需要解码回文本,这可以通过C语言或其他工具实现。
Karpathy还提供了单元测试来确保C代码与PyTorch代码一致,并附上了一个教程,介绍如何用C语言实现GPT-2模型的单个层(layernorm层)。
他还计划制作关于从头开始用C语言编写大模型的视频教程。
此外,机器之心还宣布将于4月13日在北京海淀举办AI技术论坛,聚焦于视频生成技术、多模态大模型等前沿领域的技术突破和应用实践。
原文和模型
【原文链接】 阅读原文 [ 1954字 | 8分钟 ]
【原文作者】 机器之心
【摘要模型】 gpt-4
【摘要评分】 ★★★★☆