人工智能 频道

纯C语言手搓GPT-2,前OpenAI、特斯拉高管新项目火了

  近日,Andrej Karpathy 的新项目 "llm.c" 引起了机器学习社区的广泛关注。他使用纯C语言实现了GPT-2的训练,这一创新性的尝试旨在优化大语言模型的训练过程,减少对庞大库的依赖,并提高训练效率。这一项目展示了Karpathy深厚的技术功底和对大语言模型训练过程的深入理解。

  该项目以简洁、高效的代码实现了GPT-2的训练,无需依赖庞大的PyTorch或cPython库。这降低了模型训练的复杂度,并使得部署和运行更加轻便快捷。此外,Karpathy还计划将该项目移植到CUDA上以提高训练速度,并探索更多新型架构以支持更现代的模型。

  Karpathy的这一项目不仅展示了他在人工智能领域的深厚实力,也为机器学习社区带来了新的思考方向。通过优化代码和算法,我们可以更高效地训练大语言模型,为自然语言处理和人工智能领域带来更多的可能性。

  总的来说,"llm.c"项目是一个令人瞩目的创新尝试,它打破了传统大语言模型训练的固有模式,以更高效、更简洁的方式实现了模型训练。我们期待Karpathy在未来能够带来更多类似的创新性项目,为人工智能领域注入新的活力。

  llm.c 旨在让大模型(LM)训练变得简单 —— 使用纯 C 语言 / CUDA,不需要 245MB 的 PyTorch 或 107MB 的 cPython。例如,训练 GPT-2(CPU、fp32)仅需要单个文件中的大约 1000 行干净代码(clean code),可以立即编译运行,并且完全可以媲美 PyTorch 参考实现。

  Karpathy 表示,选择从 GPT-2 开始,是因为它是 LLM 的鼻祖,是大语言模型体系首次以现代形式组合在一起,并且有可用的模型权重。

  原始训练的实现在这里:https://github.com/karpathy/llm.c/blob/master/train_gpt2.c

  你会看到,项目在开始时一次性分配所有所需的内存,这些内存是一大块 1D 内存。然后在训练过程中,不会创建或销毁任何内存,因此内存占用量保持不变,并且只是动态的,将数据批次流过。这里的关键在于手动实现所有单个层的前向和后向传递,然后将它们串联在一起。

  例如,这里是 layernorm 前向和后向传递。除了 layernorm 之外,我们还需要编码器、matmul、自注意力、gelu、残差、softmax 和交叉熵损失。

  「一旦你拥有了所有的层,接下来的工作只是将它们串在一起。讲道理,写起来相当乏味和自虐,因为你必须确保所有指针和张量偏移都正确排列, 」Karpathy 评论道。

  也有人说,这项目简直就是完美的机器学习工程师在线面试答案。

  从这开始,未来该项目的延伸会包括将精度从 fp32 降低到 fp16 / 以下,以及增加几个层(例如 RoPE)以支持更现代的架构,如 llama 2/mistral/gemma/ 等模型。

  最后,Andrej Karpathy 表示,一旦项目稳定起来,就会出关于从头开始用 C 语言写大模型的视频。

  最后需要澄清的是,虽然Andrej Karpathy是一位在人工智能领域有着重要影响的人物,但到目前为止,并没有公开报道显示他用1000行C代码完成了GPT-2大模型的训练。GPT-2等大规模语言模型的训练涉及复杂的深度学习框架、大量的数据和计算资源,通常不会直接用C语言来实现。

  在实际应用中,训练大型语言模型如GPT-2通常会使用高级的深度学习框架,如TensorFlow、PyTorch或Hugging Face的Transformers库。这些框架提供了丰富的功能和优化,使得研究人员能够更容易地构建、训练和部署复杂的神经网络模型。

  如果您对深度学习模型的训练感兴趣,我建议您从学习这些成熟的深度学习框架开始。这些框架通常提供了详细的文档和教程,可以帮助您更快地入门和提高。

  另外,虽然C语言在底层编程和系统级开发中有着广泛的应用,但在深度学习和大规模数据处理方面,它并不是首选语言。Python等高级语言在这些领域更为流行,因为它们提供了更简洁、易读的语法和丰富的科学计算库。

  总之,虽然用C语言实现GPT-2的训练在理论上可能,但在实际应用中并不常见,也不是最高效或最实用的方法。如果您对深度学习感兴趣,建议您关注更高级的语言和框架。

  https://news.ycombinator.com/item?id=39973467

  https://twitter.com/karpathy/status/1777427944971083809

  https://www.youtube.com/watch?v=zjkBMFhNj_g

0
相关文章