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

    ChatGPT狂飙160天,世界已经不是之前的样子。
新建了免费的人工智能中文站https://ai.weoknow.com
新建了收费的人工智能中文站https://ai.hzytsoft.cn/

更多资源欢迎关注


几天前,前特斯拉 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 语言代码。它只是一些数组和对其元素进行一些简单的数学运算,例如 + 和 *。对于正在进行的更多工作,它可能会变得实际有用。

    ChatGPT狂飙160天,世界已经不是之前的样子。
新建了免费的人工智能中文站https://ai.weoknow.com
新建了收费的人工智能中文站https://ai.hzytsoft.cn/

更多资源欢迎关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/610471.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matrix-breakout-2-morpheus 靶机渗透

信息收集: 1.nmap存活探测: nmap -sn -r 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-06 12:13 CST Nmap scan report for 192.168.10.1 Host is up (0.00056s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…

深入理解图形处理器(GPU):加速人工智能和大数据计算的引擎

文章目录 1. 什么是GPU?2. GPU的工作原理3. GPU的应用领域4. GPU与CPU的比较参考与推荐 前言: 图形处理器(GPU)不再仅仅是用于图形渲染的硬件设备。如今,GPU已经成为加速人工智能、大数据计算和科学研究的关键引擎。本…

XAI有什么用?探索LLM时代利用可解释性的10种策略

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 你是否也好奇,在大模型时代,可解释性人工智能技术(XAI&am…

python使用概率算法模拟寻找伴侣

对于模拟寻找伴侣的问题,人在特定时期内能够遇见的异性是有限的,假设在某段时期内能够遇见的异性人数是n,那么问题在于在不能全面对n位候选人进行评估的情况下,以最大概率选中最好的那位。 假设n位候选人的水平用n个不同的数值表…

php-redis windows ,pecl 已经不维护了,解决方案:php 8.2 | 8.3+ redis extension windows

从论坛上pecl 已经不维护了,直接让大家到ci 去下载 https://stackoverflow.com/questions/76496488/redis-dll-not-found-for-php8-2/76496489#76496489 让我们找最新的一次commit ,然后又action 构建,再下载,这样的话也好&#…

PUBG绝地求生更新后无法启动/更新后卡顿?3个解决方法分享

在绝地求生中,团队协作也是非常重要的一点。咱们可以运用strong标签来着重“团队协作”。与队友紧密配合、彼此援助,一起拟定战术和战略,将会大大提高在游戏中获得成功的几率。在绝地求生中获得成功并不简单,但只需咱们把握了一些…

计算机服务器中了faust勒索病毒怎么办?Faust勒索病毒解密工具流程步骤

对于现在的众多企业来说,计算机服务器成为大家工作中不可或缺的工具,利用计算机服务器可以更好地开展各项工作业务,企业计算机服务器也大大提升了企业生产运营效率。然而,网络技术的发展也为企业的数据安全带来威胁,近…

IO端口与IO内存:CPU如何访问设备内存?

文章目录 1. 概要2. 基本概念2.1 CPU与内存、设备的交互2.2 I/O内存2.3 I/O端口 3. 小结 1. 概要 本文主要学习下CPU访问设备内存的两种方式。 通常,厂商按照IO空间性质将IO分为如下两种: I/O内存:Memory-Mapped I/O(MMIO);I/O端…

Leetcode刷题之消失的数字(C语言版)

Leetcode刷题之消失的数字(C语言版) 一、题目描述二、题目解析 一、题目描述 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作…

抖音小店无货源爆发期过了吗?现在还能做吗?

大家好,我是电商花花。 抖音小店爆发期过了吗? 我并不觉得,反而抖音小店的流量越来越大了,今年抖音小店日活跃用户已经突破到了9亿,有更大的市场和流量了,且现在做店越来越多了,再加上平台的支…

VNCTF2024 RE yun WP

动态调试血的教训 不过这题比较麻烦,native层没有x86架构,不能用虚拟机跑,得用真机,而且有的真机还装不上,动调贼麻烦。 那就静态分析 jadx可以看到一些简单的字符串判断逻辑 IDA逆一下so文件(注意用7.7打…

高阶流程图(SIPOC)

SIPOC高阶流程图是一种流程映射和改进方法,它使用可视化的方式描述一个或多个流程的输入和输出。SIPOC是五个单词的首字母缩写,分别代表供应商(Suppliers)、输入(Inputs)、过程(Processes&#…