为什么要纯C言语手搓GPT-2,Karpathy回应网友质疑

Karpathy:for fun.几天前,前特斯拉 Autopilot 负责人、OpenAI 科学家 Andrej Karpathy 发布了一个仅用 1000 行代码即可在 CPU/fp32 上完成 GPT-2 训练的项目「llm.c」。llm.c 旨在让大模型(LM)训练变得简单 —— 使用纯 C 言语 / CUDA,不需求 245MB 的 PyTorch 或 107MB 的 cPython。例如,训练 GPT-2(CPU、fp32)仅需求单个文献中的大约 1000 行干净代码(clean

Karpathy:for fun.

几天前,前特斯拉 Autopilot 负责人、OpenAI 科学家 Andrej Karpathy 发布了一个仅用 1000 行代码即可在 CPU/fp32 上完成 GPT-2 训练的项目「llm.c」。

图片

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

图片

项目链接:https://github.com/karpathy/llm.c

项目的 Star 量不到七个小时就冲上了 2000,目前已经接近一万 Star。很多网友惊呼太强了:「即使顶着指针 ptsd,我也能感受到这些代码的美。」

图片

然而,llm.c 项目收到的不只是称赞,还有很多质疑的声音。例如,有网友间接提问:「能具体描述下这个项目做了什么吗,解决了什么问题?」

图片

对此,Karpathy 今天正面回应了网友们的疑问,详细阐述了 llm.c 项目的意义是什么,优缺点有哪些。

图片

机器之心对 Karpathy 叙述原文进行了不改变原意的编译、整理,我们来看下 Karpathy 是怎么说的:

训练大型言语模型 (LLM),例如 ChatGPT,涉及大量代码,复杂度很高。例如,典型的 LLM 训练大概会使用 PyTorch 深度学习库。PyTorch 本身就相当复杂,因为它完成了:

一个无比通用的张量抽象(一种排列和操作数组的方法,这些数组用于存储神经网络参数和激活);

一个无比通用的反向传播 Autograd 引擎(训练神经网络参数的算法) ;

在神经网络中使用的大量深度学习层。 

PyTorch 项目有 11449 个文献中的 3327184 行代码。最重要的是,PyTorch 是用 Python 编写的,Python 本身就是一种无比高级的言语 —— 必须运转 Python 解释器将训练代码转换为低级计算机指令。例如,执行此转换的 cPython 项目包含 4306 个文献中的 2437955 行代码。

llm.c 项目旨在移除整个这些复杂性,并将 LLM 训练简化为其最基本的要素,用无比低级的言语 (C 言语) 间接与计算机对话,并且没有其他库依赖项,唯一的抽象是汇编代码本身。

令人惊讶的是,训练像 GPT-2 这样的 LLM 实际上只需求在单个文献中使用大约 1000 行 C 言语代码。我通过间接在 C 言语中完成 GPT-2 的神经网络训练算法来完成这种压缩。这实际上很困难,因为你必须详细了解训练算法,能够导出整个层反向传播(backpropagation)的 forward pass 和 backward pass,并无比仔细地完成整个数组索引计算,因为没有可用的 PyTorch 张量抽象。但一旦这样做了,并且通过再次检查 PyTorch 来验证正确性,你就会得到一些无比简单、小且精致的东西。

那么,为什么人们不一直这样做呢?

第一:这放弃了很大的灵活性。如果你想改动神经网络,在 PyTorch 中你大概只需求变动一行代码。而在 llm.c 中,改动很大概会涉及更多代码,大概会更加困难,并且需求更多专业知识。例如。如果涉及一个新的操作,你大概就需求做一些微积分,并写出它的 forward pass 和 backward pass 以进行反向传播,并确保其在数学上是正确的。

第二:放弃速度,至少一开始是这样的。天下没有免费的午餐 —— 不应该指望仅 1000 行代码就能达到最先进的速度。PyTorch 在后台做了很多工作,以确保神经网络无比高效。不仅整个张量操作都无比仔细地挪用最高效的 CUDA 内核,而且还有 torch.compile 等等,以进一步分析和优化神经网络并有效地在计算机上运转。

现在,原则上,llm.c 应该能够挪用整个相同的内核并间接运转。但这需求更多的工作,就像上述第一点一样,如果变动神经网络或正在运转的计算机的任何内容,你大概必须使用不同的参数挪用不同的内核,并且大概会手动进行更多变动。

总的来说,llm.c 是训练 GPT-2 的间接完成。这个完成结果出人意料地简短。但 llm.c 不支持其他神经网络,仅支持 GPT-2,如果你想变动神经网络的任何内容,则需求专业知识。幸运的是,整个最先进的 LLM 实际上与 GPT-2 根本没有太大的区别。并且,llm.c 必须进行额外的调整和完善,但原则上我认为它应该几乎能够媲美,甚至超越 PyTorch,因为我们消除了整个开销。

最后,我为什么要做这个工作?因为这很有趣。它也很有教育意义,因为只需求那 1000 行无比简单的 C 言语代码。它只是一些数组和对其元素进行一些简单的数学运算,例如 + 和 *。对于正在进行的更多工作,它大概会变得实际有用。

参考链接:https://twitter.com/karpathy/status/1778153659106533806

原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/wei-shen-me-yao-chun-c-yan-yu-shou-cuo-gpt2-karpathy-hui/

(0)
上一篇 2024年 4月 10日
下一篇 2024年 4月 12日

相关推荐

  • 智能创造企业还在受困数字化转型?不妨试试生态系统打法 | 演讲解读

    后疫情时代,智能创造企业如何提高自身竞争力与收益?据德勤与创新联盟(MAPI)日前开展的调研显示,采用生态系统打法带来的收益,可以是其他企业的两倍。生态系统打法要求智能创造企业不再各自为营,而是有意识地与供应商、服务商等各方衔接,建立强大的内部供应商收集,获取数字化才能与解决方案,为独特的目标一致解决业务挑拨。整理 | 力琴演讲来源 | 德勤官网“产能瞬息万变…我们搞不清什么产品销路好抑或哪些员工能出勤到岗,所以只能被迫(通过智能创造办法)加速行动节奏。”疫情之后,让不少企业意识到数字

    2020年 11月 23日
  • 线上分享 | Transformers库维护者之一、UCSD博士生分享库背后的故事

    自 2017 年提出以来,Transformer 已经成为占据主导地位的自然语言处理(NLP)架构,在自然语言理解和自然语言生成等任务上表现出的性能超过了卷积和循环神经网络等其他神经模型。之后,Transformer 的训练数据和模型规模也不断扩展,从而促进了高效并行训练以及长期序列特征捕获。

    2020年 12月 11日
  • 详解AI加速器(一):2012年的AlexNet到底做对了什么?

    AI、机器进修、深度进修的概念可以追溯到几十年前,然而,它们在过去的十几年里才真正流行起来,这是为什么呢?AlexNet 的基本结构和之前的 CNN 架构也没有本质区别,为什么就能一鸣惊人?在这一系列文章中,前苹果、飞利浦、Mellanox(现属英伟达)工程师、普林斯顿大学博士 Adi Fuchs 尝试从 AI 加速器的角度为我们寻找这些问题的答案。当代世界正在经历一场革命,人类的体验从未与科技如此紧密地结合在一起。过去,科技公司通过观察用户行为、研究市场趋势,在一个通常必要数月甚至数年时候的周期中优化产品线来改进

    2022年 1月 13日
  • 开源!港中文、MIT、复旦提出首个RNA基石模型

    本文中 RNA-FM 模型的出现一定程度上缓解了 RNA 带标注数据紧张的现状,为其他钻研者提供了访问大批量无标签数据的便捷接口。并且,该模型将以 RNA 范围基础模型的身份,为该范围的各种各样的钻研提供强有力的支援与帮助。

    2022年 7月 16日
  • 性能提升、成本降低,这是分布式强化进修算法最新研究进展

    深度强化进修(Deep Reinforcement Learning,DRL)是一种公认的解决连续决策问题的有效技术。为了应对 DRL 的数据低效(data inefficiency)问题,受到分布式机器进修技术的启发,分布式深度强化进修 (distributed deep reinforcement learning,DDRL) 已提出并成功应用于盘算机视觉和自然语言处理领域。有观点认为,分布式强化进修是深度强化进修走向大规模应用、解决复杂决策空间和长期规划问题的必经之路。分布式强化进修是一个综合的研究子领域,需

    2024年 2月 15日
  • 模型鲁棒性好不好,复旦大学一键式评测平台告诉你

    复旦大学自然言语处置惩罚实验室发布模型鲁棒性评测平台 TextFlint。该平台涵盖 12 项 NLP 使命,囊括 80 余种数据变形步骤,花费超 2 万 GPU 小时,进行了 6.7 万余次实验,考证约 100 种模型,选取约 10 万条变形后数据进行了言语合理性和语法正确性人工评测,为模型鲁棒性评测及提升提供了一站式解决方案。

    2021年 4月 6日
  • 芯耀辉完成4亿融资,红杉华夏领投助力解决芯片IP痛点

    芯片IP领先企业芯耀辉科技(以下简称”芯耀辉”)近日完成天使轮及Pre-A轮超4亿元融资。Pre-A轮由红杉华夏、高瓴创投、云晖资源和高榕资源联合投资,松禾资源、五源资源(原晨兴资源)、国策投资和大横琴集团等机构参投。老股东真格基金和大数长青同时追加投资。融资将用于吸引海内外尖端技巧人才,提升产物交付能力,功能深化和芯片生态连接能力升级。同时,芯耀辉将进一步投入服务体系。成立于2020年6月,芯耀辉集结了全球尖端的IP行业人才。中心团队均拥有数十年研发、产物及管理背景,以自主研发的进步前辈工艺芯片IP为中心,致力于服务

    2021年 2月 24日
  • 学术交换、干货分享!2021WAIC·隐衷计较学术交换会报名开启!

    自数据成为新的生产要素后,数据流通与共享就成为热点关切,相关政策与立法也不断往纵深推进。比如《汽车数据安全管理若干规定(征求意见稿)》是国内汽车数据规模的首次立法尝试,代表了典型传统行业在数据治理上的实践。而最新《深圳经济特区数据条例(征求意见稿)》探索建立数据交易制度,更是立法层面促进释放数据价值的创新亮点。如何基于数据安全、隐衷保护前提下,链接数据、实现多方协同释放数据价值?——隐衷计较技术,成为该命题的破题之举。作为实现数据可用不可见的技术体系,隐衷计较技术正成为数据安全保护和企业发挥

    2021年 6月 17日
  • 比照进修引领弱标签进修新SOTA,浙大新研究入选ICLR Oral

    本文介绍浙江大学、威斯康星大学麦迪逊分校等机构的最新工作 PiCO,相关论文已被 ICLR 2022 录用(Oral, Top 1.59%)!偏标签进修 (Partial Label Learning, PLL) 是一个经典的弱监视进修问题,它允许每一个训练样本关联一个候选的标签荟萃,适用于许多具有标签不确定性的的现实世界数据标注场景。然而,现存的 PLL 算法与完全监视下的法子依然存在较大差距。为此,本文提出一个协同的框架解决 PLL 中的两个关键研究挑战 —— 表征进修和标签消歧。具体地,

    2022年 2月 17日
  • 我,波士顿能源的机器人工程师,这是我的一天

    波士顿能源大家都很熟悉,但该公司员工的任务和生活却很少有人了解。特别是新冠疫情在美国的蔓延,员工的日常任务和生活不可避免地受到了影响。本文就带大家看看波士顿能源的员工如何度过自己的一天。

    2021年 5月 27日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注