CUDA is a parallel computing platform developed by NVIDIA that allows developers to use GPUs for general-purpose processing. GPUs, with thousands of cores, excel at handling simple tasks in parallel, making them ideal for tasks like deep learning, video editing, and fluid simulations. CUDA accelerates these tasks by enabling fast mathematical operations across many cores, which would take significantly longer on a CPU.
GPUs are essential for training LLMs because the core operations in these models, such as matrix multiplication and activation functions, can be parallelized. Matrix multiplication, for example, involves solving a large puzzle where each piece can be processed independently. GPUs, with their thousands of cores, can handle these operations much faster than CPUs, making them indispensable for training and running LLMs efficiently.
Elliot approaches learning by diving into 'rabbit holes' of complex topics, taking extensive notes on his learning journey, and identifying pain points. He then uses these insights to teach others effectively. His method involves understanding the difficulty of a topic before mastering it, which allows him to explain concepts in a way that is accessible to beginners. This approach has been particularly effective in his courses on CUDA and building LLMs from scratch.
CUDA is used in a wide range of applications beyond AI and deep learning, including cryptocurrency mining, graphics rendering, video editing, and fluid simulations. Its ability to perform fast mathematical operations in parallel makes it a versatile tool for any task that requires high computational throughput.
Elliot emphasizes the importance of sleep, aiming for eight hours a night, as it significantly boosts his productivity. He also maintains a healthy diet and has recently started incorporating exercise into his routine. Additionally, he uses time-lapse videos to document his coding sessions, which helps him stay motivated and focused during long work periods.
NVIDIA's approach involves simulating chip designs before sending them to foundries for production. This allows them to iterate quickly and reduce the risk of errors. By relying on simulations rather than physical prototypes, NVIDIA can innovate faster and more efficiently, which has contributed to their success in the GPU market.
Elliot believes that while scaling up models like GPT has been effective, future advancements will likely come from architectural innovations and improving data quality. He predicts that researchers will find ways to 'hack' scaling laws, making models more efficient and capable without simply increasing their size. Additionally, he foresees the development of entirely new architectures beyond transformers, which could lead to even more powerful AI systems.
Elliot starts by reading the abstract to understand the paper's main idea, then skims through sections like introduction, related work, and results. He focuses on keywords, bold text, and images to grasp the core concepts. For deeper understanding, he uses tools like Google Search, Perplexity, or AI models like Claude to clarify unfamiliar terms. He also emphasizes the importance of implementing algorithms from papers in tools like Jupyter notebooks to solidify his understanding.
Elliot recommends three key papers for beginners: 'Attention is All You Need,' which introduces the transformer architecture; 'A Survey of Large Language Models,' which provides a high-level overview of LLMs; and 'QLORA: Efficient Fine-Tuning of Quantized LLMs,' which focuses on efficient fine-tuning techniques. These papers offer a solid foundation for understanding the core concepts and advancements in LLMs.
Elliot believes that while a computer science degree is valuable, especially for beginners, self-directed learning through projects and experimentation can be more effective for those who are serious about mastering the subject. He argues that hands-on experience and tinkering with code can accelerate learning and provide deeper insights than traditional coursework. However, he acknowledges that a degree can still be beneficial for certain job opportunities and structured learning.
在本周播客节目中,freeCodeCamp创始人Quincy Larson采访了Elliot Arledge。他是一位20岁的计算机科学专业的学生,他创建了几个流行的freeCodeCamp课程,主题涵盖LLM、Mojo编程语言以及使用CUDA进行GPU编程。他从加拿大艾伯塔省埃德蒙顿加入我们。我们讨论了:- 从零开始构建AI系统- Elliot如何如此快速地学习这么多知识以及他的方法- 他如何阅读学术论文- 他的计算机科学学位课程与他的自主学习在介绍中,我播放了1988年《双截龙II》游戏配乐歌曲“Into the Turf”本播客得到Wix Studio赠款的支持。Wix Studio为开发人员提供工具,可以快速构建网站,所有功能都开箱即用,然后可以使用代码进行扩展、替换和突破界限。了解更多信息,请访问https://wixstudio.com。本播客还得到11,043位通过每月捐款支持freeCodeCamp的好心人的支持。加入这些好心人,通过访问https://www.freecodecamp.org/donate来帮助我们的使命。我们在谈话中讨论的链接:- Elliot在freeCodeCamp上的Mojo课程:https://www.freecodecamp.org/news/new-mojo-programming-language-for-ai-developers/- Elliot在freeCodeCamp上的CUDA GPU编程课程:https://www.freecodecamp.org/news/learn-cuda-programming/- Elliot关于从零开始构建LLM的Python课程:https://www.freecodecamp.org/news/how-to-build-a-large-language-model-from-scratch-using-python/- Elliot的YouTube频道:https://www.youtube.com/@elliotarledge- Elliot在GitHub上的许多项目:https://github.com/Infatoshi</context> <raw_text>0 有时人们会观察某事物,他们只会看到它的表面积。就像他们会看到这个完整立方体的表面积一样。当他们跳到表面上时,他们会发现,哦,这个东西是坚固的。我不能再反弹了。然后它也有一定的深度。所以你会看到所有正在发生的其他事情,就像,哦,我就去学习那个。然后你意识到当你跳到立方体的那个部分时,它就像,哦,有一整条直线向下,以及随之而来的一堆其他东西,对吧?所以这绝对让我措手不及。这些东西总是让我难以招架,但这是值得的。欢迎回到Free Code Camp播客,这是对开发人员进行原始、未经编辑的采访的来源。
今天的音乐介绍由我自己在鼓、吉他、贝斯和键盘上演奏,1988年《双截龙II》中的“Into the Turf”。♪♪♪
♪♪♪
欢迎回到Free Code Camp播客。我是Quincy Larson,freeCodeCamp.org的教师和创始人。每周我们都会与开发人员、创始人以及科技领域的有抱负的人们进行交谈。本周我们与Elliot Arledge交谈。他是一位20岁的计算机科学专业的学生,他创建了几个流行的Free Code Camp课程,主题涵盖LLM、Mojo编程语言以及使用CUDA进行GPU编程。他从加拿大艾伯塔省埃德蒙顿加入我们。
在我们与Elliot交谈之前,本播客得到Wix Studio赠款的支持。Wix Studio为开发人员提供工具,可以快速构建网站,所有功能都开箱即用,然后可以使用代码进行扩展、替换和突破界限。了解更多信息,请访问wixstudio.com。本播客还得到11,043位通过每月捐款支持Free Code Camp的好心人的支持。加入这些好心人,通过访问freecodecamp.org/donate来帮助我们的使命。
Elliot,欢迎来到播客。你好。我很高兴来到这里。谢谢,Quincy。是的。你是我在Free Code Camp播客上采访过的最年轻的人,年仅20岁。我很高兴来到这里。
我只想再次感谢你创建了这个很棒的CUDA课程,它非常受欢迎。很多人现在都在学习GPU编程。你能告诉我们CUDA是什么吗?也许可以谈谈它的历史,以及你为什么觉得需要学习这个相当高级、相当难以学习的工具?是的。我的意思是,CUDA的整个过程是从……开始的。
你从这些CPU开始,对吧?CPU非常擅长执行复杂的任务,但它们的内核数量非常少,可能只有六个或八个内核。
然后就像,好吧,我可以跨越少量内核执行任务,并执行相当困难的任务。但是如果我想跨越大量内核执行简单的任务呢,对吧?这就是GPU的由来。NVIDIA在这方面做了很多工作,他们发布了一款名为CUDA的软件。因此,CUDA,你可以说,并行编程平台,嗯,
CUDA被广泛用于不同的方式。我认为我的清单太长了。我甚至没有记住它。就像,你可以用它来进行加密货币挖掘、图形处理、深度学习,嗯,
视频编辑、流体模拟。你可以用它来做很多事情。这就是并行运行非常非常快的数学运算的思想。这就是重点。是的。为了定义你使用的一些术语,CPU,中央处理器,人们使用……
你知道,对于大多数个人计算来说,基本上这个中央处理器只有一个线程。也许它是一个具有八个内核或类似内核的多核CPU,可以处理大量线程,对吧?但这与处理数千个线程相比根本不算什么。这与例如4090相比根本不算什么。一些观众可能拥有4090或3090。其中一个可能拥有大约8000到16000个内核,对吧?是的。
是的,这些基本上……差别很大,是的。这些基本上是比较简单的,不如CPU强大和复杂,但由于拥有如此多的内核,你可以做一些事情,例如流体动力学模拟,你模拟大量不同粒子的位置等等,而传统的CPU只能按顺序批量处理所有这些,这需要太多时间,对吧?你可以在GPU上用一个小时完成的事情,可能需要……
用CPU需要好几天的时间,对吧?是的。是的,完全正确。如果我有,比如说我有100万个工作要做,而我有一个CPU,它有10个非常非常快的工人,也许他们可以工作,我不知道,大约在……
速度单位10。然后我有一个GPU,它有10000个工人,可以以5或2的速度单位工作。就像GPU在这些并行任务上的速度仍然比它快几个数量级一样。所以是的,这是一个,这是一个,这太疯狂了,技术发展到了这种地步。是的。是的。
是的,你就在先锋队,学习如何使用这个工具。显然,CUDA并不是一个新的工具。我认为它已经存在了大约15年或20年了,由NVIDIA创建,以利用其强大的GPU。NVIDIA,当然,是我们所有人青少年时期使用的3D显卡公司。如果你,比如,你知道,如果你是一个像我这样的X一代人,比如,你会去,你——
节省,你知道,好几个月像割草之类的。你会买一个图形处理器,然后你就可以玩像地理图形这样的快速游戏,而不是,你知道,呃,CPU。是的。处理像像素化的图形之类的东西。它使一切变得非常流畅。就像快进,你知道,大约25年左右。是的。而这家公司是地球上最有价值的公司,因为事实证明,对于许多工业应用来说,呃,
你知道,你确实需要大量的处理能力,并且你需要并行地进行这种处理能力。是的。所以他们创造了这种语言。是的。也许,对不起,请继续。
我本来想说,伙计,NVIDIA,他们已经爬到了如此高的阶梯。我昨天看了股票,我想,哦,我的天哪,过去一年上涨了183%。我认为他们现在的市值约为3.2万亿美元,当你想到这一点时,这简直令人难以置信。它是一家图形卡和并行处理器制造公司。他们甚至不制造硬件。他们编写硬件的蓝图,然后付钱给其他人来打印。他们只是构建它的架构和使其快速运行的软件。
他们所做的事情令人惊叹。是的。我们可以长时间讨论这个问题,因为这是一家在创新方面令人难以置信的公司,就他们基本上模拟一切而不是实际生产一个工作的芯片的方式而言。他们只是模拟一切,然后他们说,我们认为这会奏效。然后他们将其运送到代工厂,代工厂花费数十亿美元来打印这些芯片,希望它们……
模拟是准确的,芯片实际上可以工作。是的,他们在这一方面取得了显著的成功,这使他们能够比传统的芯片制造公司更快地迭代。因此,让我们谈谈这对于……
构建AI系统有什么好处,我知道这是你花很多时间研究的领域。当然,呃,你已经创建了一个关于从头开始构建你自己的LLM的课程,基本上,呃,在free code camp上。我已经在节目说明或视频描述中链接了你开发的几个课程,具体取决于你在哪里观看这个节目,但是让我们谈谈为什么GPU对于LLM特别重要。是的。我的意思是,这一切的核心实际上只是,呃,
在这两种大型语言模型中发生的两种主要操作。你可以将其简化为语言模型,然后语言模型通常基于,现在,它们基于转换器架构,对吧?所以你可能听说过GPT这个词。这是生成式预训练转换器。这些转换器主要由矩阵乘法组成,所以是矩阵乘法和激活函数。
现在,CUDA之所以能够如此显著地加速这些操作,是因为矩阵乘法就像解决一个巨大的难题。所以想象一下,你正在尝试拼凑一个难题,对吧?你不需要一个碎片才能拼凑另一个碎片,你可以独立地完成所有碎片,它们彼此之间并不依赖,对吧?因此,当你能够一次取一个碎片,并将其有效地批量处理到该硬件上的所有不同内核时,你可以非常非常快速地进行矩阵乘法,对吧?
对于那些做过线性代数的人来说,用列对行进行点积,进行数千次、数百万次、数十亿次的点积,我认为我在做CUDA课程时运行了一个基准测试,将一个4000乘以96乘以4000的矩阵,一个4096乘以4096的矩阵本身相乘。所以有很多数字,将它们相乘。这是在……
我认为在我的GPU上不到十分之一秒就完成了。
所以这太疯狂了。所以有矩阵乘法,这是深度学习中的主要操作,对吧?然后还有另一个,那就是激活,你基本上只是取矩阵或张量中的每个数字,然后你基本上对它进行一个函数运算。例如,像正弦或余弦或ReLU,对吧?这只是对该数字进行简单的运算。你做一个单一的……
就像很容易将并行计算应用于这些东西并使其快速运行一样。这就是你看到这些东西加速的主要原因。是的。我的意思是,如果你在CPU上运行一个语言模型,然后在GPU上运行它,那将会有巨大的差异。你可能什么有用的东西都看不到,因为它在CPU端的运行速度太慢了。所以是的,这太疯狂了,伙计。
是的,为了定义一些术语。所以,当然,矩阵乘法,你有一个很大的数字网格,你将它们相乘。顺便说一句,我喜欢那个拼图的比喻。那是因为如果你仔细想想,每个人都拼过拼图,他们知道,好吧,你可以让很多人一起拼拼图,它实际上会更快。对。
解决填字游戏不一定能通过多人合作而加快速度,因为它可能会稍微加快一点,但收益递减。但是如果你有100……
人们解决一个十万块的拼图,你最好相信它会完成。我不知道,至少可能比一个人做快50倍。对。就像,就像并行化可能会有收益递减,但当拼图足够大时就不会这样了。对。当你做的时候,拼图相当大,呃,你说什么?你说你正在做一个4000乘以96的矩阵,呃,4096乘以4096。然后它自己乘以它自己。好的。
是的。所以,是的,这太疯狂了。我的意思是,通常在深度学习中,你不会有像字面意义上的4096那么大的矩阵。它通常不像那么大。就像批大小乘以上下文窗口中的令牌数乘以通道数或嵌入维度。这通常不像,这不像超级超级高。这就像你可以,也许是,我不知道,但这并不是一个……
当你能够在像H100这样的非常非常快速的硬件上运行它时,我认为这就是XAI、OpenAI和Anthropic以及所有这些公司使用的硬件。我认为Anthropic也使用其他一些东西,例如AWS Tranium。但是是的,你明白了。当你拥有某些专门设计用于执行非常非常快速的、高吞吐量计算任务的特定硬件时,这将是一个完全不同的游戏。
是的。好吧,我们可以整天谈论GPU和CUDA,但我真的对你是如何设法学习所有这些东西感兴趣。因为我认为肯定有一些,如果你想学习如何构建AI系统,请查看Elliot的课程。他有一个全面的CUDA课程。他还开设了一个使用Python从零开始构建AI系统的课程。但是如果你想学习如何学习……
这个人是坐下来努力工作的典范。你有一些你做的延时视频,你只是坐下来编码12个小时,它只是超级加速的。它只有两分钟长,你只是喝水,起床去洗手间,然后基本上只是努力工作。这真的很酷。它就像精力过剩。我喜欢它。它让我兴奋起来,让我自己也开始工作,因为——
没有什么比观看别人工作更能激励你自己的工作了。这就像观看NBA比赛,然后去健身房举重,或者去球场投篮。你很好奇,并且兴奋起来。你也在分享你创建这些延时视频的方法。如果有人想创建一个超快的游戏,
加速版本的他们在办公桌上的工作,或者你可以在你的屏幕上做。我见过很多人,比如那个运行的人,有一个游戏专注于学习代码。我不记得名字了,但他总是发布这些,我做了大约24小时的代码会话,这将是他的屏幕,以及他移动不同元素,以及在后端和前端之间来回跳转。而且,
打开浏览器。那些超级轻松。那大约是10年前的事了。但是,就像,我想,伙计,这太棒了。就像以100倍的速度观看Twitch,或者说,观看Twitch上的实时编码。所以,所以是的,你有精力,在我深入探讨你的学习方法之前,我很想知道一些关于你的日常工作的信息,以及你如何保持精力充沛。因为你似乎精力充沛。
我确实有,我想你可以说,我的确是20岁。也许这有帮助。嗯,我通常很擅长向我的身体提供健康的食物。我的运动量并不惊人,但是,但是,呃,像,像过去一周一样,我确实,呃,我确实开始注意到差异了,巨大的差异。呃,你知道,我一直在睡八个小时,这,这就像一个超级能力,睡八个小时。嗯,
你不会相信的,对吧?所以你一天有16个小时。也许一两个或三个小时花在做事情上,只是整理。然后你一天还有13、14个小时留给工作、学习、你的工作或任何事情。也许如果你有家人,你正在和家人一起度过时光,对吧?也许你一天有8到10个小时可以学习。
现在就像你得到这些小时,你把剩下的时间用来做你能做的事情。然后你把这八个小时留下来,如果那是一天非常非常忙碌的一天,也许是七个半小时。但是你想保留它,你想每天都争取八个小时。这是一个超级能力。每次我试图将其推到5或6个小时时,我最终发现我的这一周都被毁了。
就像,我仍然可以完成一些事情,但这并不完全相同。所以我会说睡眠非常重要。你知道,我知道对于开发人员来说,很难睡觉,因为你总是你的大脑总是处于继续前进的状态,它会没事的。我第二天早点起床就行了。是的。是的。
我的意思是,当你试图解决问题时,你必须睡觉,你知道吗?是的。当你试图解决问题时,你,你对解决这个问题有了偏执狂般的专注,就像,该死,为什么这不起作用?你知道,就像很难说,哦,我必须睡觉一样。是的。是的。
是的,我的意思是,如果你可以拥有那种你可能在少量睡眠的情况下获得几个小时的精力,你就会得到——如果你睡八个小时,你就会整天拥有这种精力。所以就像选择一样。如果你那天不够快,就像,好吧,也许你应该第二天完成更多工作,对吧?是的。那是你的错。不要为了这个而糟蹋你的身体。你知道什么很酷吗?八小时的睡眠。你知道什么更酷吗?
九小时的睡眠。如果你尝试九小时的睡眠,你将很难回去。你会感觉你服用了无限药丸或类似的东西。有一些作弊码已经被激活了。IDF,无论《毁灭战士》中的作弊码是什么,都能让你进入上帝模式,对吧?感觉就像那样,因为你只是在全速前进,每一次互动都感觉简单得多。我真诚地认为人类过去就是这样睡觉的。
每天10个小时,12个小时。他们会在整个冬天睡觉,你知道,就像基本上一样。这是真的吗?是的。就像人类,当外面很冷的时候,他们只是待在,你知道,在他们的洞穴或他们建造的任何建筑物里。他们只是睡很多觉,因为它可以节省卡路里。而且,嗯,你知道,像,
我认为当你睡觉时,你的身体衰老速度会慢一些等等。所以它实际上会稍微延长你的寿命。关于睡眠有很多科学研究,我不会假装读过很多,但我确实知道,睡眠不足会累积,不仅在大脑中,而且在不同的器官中也会累积。而且,而且睡眠就像排毒一样。就像,这是你的机会,你身体的机会去清理所有,你知道,
你只是通过生活、四处奔波、去健身房、处理生活中的压力而产生的副产品。看孩子。看九个小时的问题是,一旦我达到八个小时,通常是我的最佳状态。也许八个半小时,这取决于我有多么睡眠不足,但有时八个半小时也有效。但是一旦我开始超过九个小时,比如10个小时,我甚至睡了13个小时,那太多了。哦,我的天哪。我没有,是的。我,
我的意思是,对于其中一些延时视频来说,每天实际上是18个小时。然后在周末,你就会严重睡眠不足,即使13个小时也不够。是的。所以我的建议是不要让自己处于必须补觉的地步。是的。
不。我的意思是,如果你坚持良好的作息时间,这通常会奏效。我认为在某个点之后,你会得到递减的回报。所以说,在九个或十个小时之后,你就会开始感觉像你提到的那种“无限药丸”。但是过了一会儿,比如几个小时后,我做过这个。一开始感觉很棒。你可以出去。你不需要伸展或任何东西。一切感觉如此自由。然后
突然之间,它击中你,就像你吃了某种很难消化的东西,你的身体正在工作,你没有精力思考。这很奇怪。我觉得——我不知道我是不是唯一一个。可能不是。但我通常喜欢用一整天来最大限度地利用我能做的事情。
是的。我的意思是,对我来说,小睡是一种绝望之举。就像你精力非常低落,你只是说,我今天不行了。我要打个盹。就像,所以对我来说,这是最后的手段,但是我喜欢,我醒来后,我感觉我的嘴里有小睡的味道,我感觉很困倦,就像有人在我的躯干里放了一堆酸一样。我只是说,啊,
你知道,我为什么醒着?但是如果你不继续睡觉,你就会完全打乱你的睡眠时间表,你知道吗?但是是的,无论如何,我们可以谈论睡眠。向任何不关心睡眠的听众道歉,但这很重要。我认为你和我都会同意。充足的睡眠很重要。有些人由于各种原因非常忙碌。我们很容易说,哦,想办法腾出时间睡觉。很多人,他们有需要照顾的年迈亲属。他们有年幼的孩子。他们打着多份工来支付他们高昂的房租。你知道,还有很多类似的事情。就像,我的心与你们同在,但是如果你能找到一种方法来
安排你的睡眠时间表,这将使你更容易解决生活中的许多其他问题。它确实帮助我弄清楚如何……甚至能够……这有点像……你称之为……这有点像连锁反应,我不知道这是否是最好的词。
良性循环?如果你能够从某一天开始,每天多睡一两个小时,从而获得更多的精力,那么这将使你更容易规划剩下的时间。它使它更容易……
是的。
所以必须声明的是,我们俩都不是睡眠科学家。这些只是我们自己的个人轶事观察。但是是的。所以让我们谈谈你做的其他事情,你随着时间的推移而养成的模式、习惯,这些帮助你能够吸收大量的编程知识,并帮助你坐下来实际去做。是的。我的意思是,当我打算学习一些新东西时,它……
你经常会听到这个词“兔子洞”,你向下走,你不知道你要进入什么。也许你听说过有人提到过它。也许你在YouTube上看到了来自Fireship或Free Code Camp的快速概述,你只是想,你喜欢深入研究它,就像,也许会有有趣的东西从这里出来,对吧?那些深夜的兔子洞潜水。我发现这些通常是我过滤掉最佳想法的地方。所以很多,我喜欢在……
我构建的一些想法和产品上投入大量思考。所以在free code camp上,尤其是我通常最终只是走上了教育的道路,只是想与人们分享一些知识,向某人展示如何构建某些东西,因为在学习如何去做这件事时,这是一个巨大的痛点。所以,
你知道,从兔子洞开始,找出许多这些痛点,然后你把它们写下来,对吧?这非常重要。这是我能够教授事物的一个非常重要的部分。为什么人们说我会教东西。好吧,我不确定我实际上是一个多么好的老师。我不知道。这有点像其他人观察并告诉我,但是……
是的,当你能够经历某些事情,并且学习起来很困难,并且把这些东西写下来,不仅在你理解它的时候,而且在你理解它之前你在想什么,那么解释事情就容易得多。当事情到来时,人们更容易理解事情,对吧?所以当某人,比如说,在一个领域拥有博士学位,他们已经走到这里,下面很多其他的东西已经消散了,它并没有消失,但它已经消散了一些。现在他们只是徘徊在顶部。
我和一些这样的人谈过话,我甚至也参加过一些课程,它确实,呃,是的,它,它,它,它很难学习一些东西,如果某人没有像这样一路走下来的话。所以,你知道,我的意思是,这就是为什么,部分原因是LLM课程我认为如此出色。呃,我收到了很多关于这方面的非常好的反馈,因为它是一个如此密集的,像记笔记的学习过程,对吧?
我一点也不开玩笑。我从——这可能是我一生中最好的决定开始的。我从学校、从大学坐火车回家,我在手机上看YouTube,我看到一个名叫André Karpathy的家伙的视频。你们中的一些人可能知道他是谁。是的,他是AI开发、AI系统开发领域的一位传奇人物。
在本周播客节目中,freeCodeCamp创始人Quincy Larson采访了Elliot Arledge。他是一位20岁的计算机科学专业的学生,他创建了几个流行的freeCodeCamp课程,主题包括大型语言模型(LLM)、Mojo编程语言以及使用CUDA进行GPU编程。他来自加拿大艾伯塔省埃德蒙顿。我们讨论了:- 从零开始构建AI系统- Elliot如何如此快速地学习这么多知识以及他的方法- 他如何阅读学术论文- 他的计算机科学学位课程与他的自主学习在介绍中,我播放了1988年《双截龙II》游戏配乐歌曲“Into the Turf”。本播客得到Wix Studio赠款的支持。Wix Studio为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问https://wixstudio.com。本播客还得到11,043位通过每月捐款支持freeCodeCamp的好心人的支持。加入这些好心人,通过访问https://www.freecodecamp.org/donate来帮助我们的使命。我们在谈话中讨论的链接:- Elliot在freeCodeCamp上的Mojo课程:https://www.freecodecamp.org/news/new-mojo-programming-language-for-ai-developers/- Elliot在freeCodeCamp上的CUDA GPU编程课程:https://www.freecodecamp.org/news/learn-cuda-programming/- Elliot关于从零开始构建LLM的Python课程:https://www.freecodecamp.org/news/how-to-build-a-large-language-model-from-scratch-using-python/- Elliot的YouTube频道:https://www.youtube.com/@elliotarledge- Elliot在GitHub上的许多项目:https://github.com/Infatoshi</context> <raw_text>0 是啊,是啊,那家伙是个天才。我不知道他是怎么做到的。但我看过他的一次讲座。那是一场关于如何从零开始构建GPT的两个小时的讲座,对吧?如何在自己的Windows、Linux或Mac电脑上构建一个可以对话的Transformer语言模型,对吧?不管是什么。我当时正在看这个。
然后我无法理解前10分钟的内容。我真的很苦恼。我觉得这很有趣,因为我想了解ChatGPT的工作原理。我想,我想理解这个。太酷了。只是通过这个过程,并坚持理解最初的想法,比如如何将单词标记化,然后取消标记化。对。像这样的简单事情现在非常琐碎,就像在你之后,在你经历之后一样,但只是经历了最初的步骤,嗯,
我想,好吧,我理解这里的一些痛点。如果,这是一个完全疯狂的想法。我想,如果我联系Free Code Camp,说,嘿,我认为我可以更好地涵盖这个主题以及其他主题。我甚至还没有看完整个内容。我只是联系了你们,我说,嘿,你们能发布我的这段视频吗?就像我完成后,我创建语言模型的视频。
然后你们回复我说,是的,发一段演示视频过来。我发了过去,你们说,是的,去做吧。我当时处于一种状态,我完全吓坏了。我想,哦,我的天哪,这是真的了。所以我整个夏天都在快速运行,做着同样的事情,比如弄清楚标记器,然后写下痛点,然后继续前进。最终,这实际上比我想象的要困难得多。
我以为一个月就能完成。结果花了三四个月。但最终,我能够得到一些听起来比较合理的英语。它不像对话那样,但你可以理解它在做什么,对吧?它正在复制,我认为是《绿野仙踪》的文本。这就是我们用来训练它的文本。是的,所以,通过你们联系我,那是我做过的最好的决定。好吧,我只是想——仅仅这一点?是的,是的。
我只是想说,大多数人学习软件工程是通过学习FreeCodeCamp。你学习软件工程,在这种情况下,是通过教授FreeCodeCamp。你基本上创建了这个教育产物,你可以及时学习。哦,我需要很好地学习这个主题,这样我才能教授这门课程。我认为这是一个惊人的方法。这就像……
几乎就像把“在实践中学习”提升到一个新的水平,就像“在教学中学习”。我个人也通过这种方式学习了很多主题,因为我编写了我们第一个HTML、CSS、JavaScript课程,交互式的那个。并非所有内容都是我编写的,但很多都是。很多事情我不得不回去真正学习基础知识,这样我才能教它们。
当你想到人们会等待的时候,这是一个很好的学习动力。如果你要进行技术演讲之类的事情,也是一样。该死,我不能让人失望。当我站在那里的时候,我真的很需要了解我的东西。它为你提供了一种激励,一种“成败在此一举”的类型。我必须学习。所以你给自己点燃了一把象征性的火。
现在你必须跳舞,否则你就会被烧死。我不知道这个比喻是怎么用的,但这太酷了。再说一次,我要再次感谢你伸出援手。我们很高兴结果很好。当然,你在音频视频方面做得非常好。你显然对这个主题充满热情。
我们收到很多人的投稿,他们只是说,哦,是的,我将阅读GPT告诉我的内容,它将是,你知道的,但你显然确实对不同的主题等有实际的工作知识。所以很容易说“是”。我们很高兴我们这么做了。
是的,这是一段相当长的旅程。我对CUDA教程也做了同样的事情。我不会撒谎。我做了完全相同的事情。Andhra Karpathy发布了一个名为LLM.C的GitHub仓库,他们在其中使用原始CUDA训练GPT。他们复制了GPT-2。这是一个旧的语言模型,早于ChatGPT。它是一种非常古老的
可以说,最初的突破之一。当GBD2发布时,每个人都像,啊,然后GBD3,啊,对吧?每个人都吓坏了。是的,GBD2是——是的,它就像一个你可以——的仓库
是的。然后GPT-3显然也是一个低谷时刻,但GPT-3.5。GPT-3的宣传更多。是的,那时全世界都像,哇。那时世界在几个月内发生了翻天覆地的变化。是的,太疯狂了。但这个项目几乎就是你用原始CUDA训练整个东西。所以它只是用C语言和CUDA编写,你只需要训练这个东西。是的。
关于莎士比亚的文本。所以,是的,我当时正在看这个,我无法理解正在发生的事情。除了正在进行的Python代码之外,我什么都理解不了。我想,哦,天哪,我永远不会理解这个。没有希望了。我最好还是坚持使用Python。然后我不知道,一些,我不知道是什么。我有点记得一些侵入性的想法,就像,让我们去做吧。你知道吗?是的。
我不知道。我不在乎你是否记得这个,这个是什么样的,我决定这是什么时候的事情。但是,但是是的,就像我当时想,好吧,LM.C对我来说显然是一个痛点,作为一个初学者,一个理解如何构建神经网络但不是用C语言的人,我可以使用PyTorch构建它们,但我不能用C语言和CUDA构建它们。所以我想,你知道的,也许我们应该进入这个持续了,持续了大约一周的兔子洞。在我决定之前,
是的,我可能只是从这个中创建一个课程。所以是的,几乎完全相同的想法,除了没有实际的课程可以作为基础。就像,我这里有一个偶像崇拜的对象。它就像,让我们朝着这样的目标努力。
我实际上并没有接近它。我实际上并没有接近它,但我已经足够了解如何性能优化,所谓的CUDA内核,非常非常快的函数。内核是在GPU上运行的。我学习了如何优化它们,比如分析和执行所有这些操作,然后训练……
实际上训练了一个名为MLP的小型神经网络,以学习对手绘数字进行分类并给出正确的输出。所以你输入一个28x28像素的图像,然后它输出类似于0到9之间的概率分布。它就像选择哪个,对吧。你选择概率最高的选项,然后
呃,我训练了,我实际上构建了它。这花了我,这实际上花了我大概一个月半到两个月的时间来完成这部分工作。但是是的,只是学习一切,然后调试,并确保所有数据都按照我想要的方式流动。是的。这是一段相当长的学习旅程,但你知道,这就是你开始的地方,对吧?你不能,呃,
所以有时人们会看一些东西,他们会看到它的表面积。他们会看到整个立方体的表面积。当他们跳到表面上时,他们会发现,哦,这个东西是坚固的。我不能再反弹了。然后它也有一定的深度。所以你会看到所有这些正在发生的事情,它就像,哦,我就去学习那个。然后你意识到当你跳到立方体的那个部分时,它就像,哦,有一个完整的——
有一条直线向下,以及随之而来的一堆其他东西。这绝对让我措手不及。这些东西总是让我措手不及,但这是值得的。太棒了。是的,这是一个很好的比喻。就像,我认为很多人贪多嚼不烂。他们的眼睛比他们的肚子大。哦,这有多难?然后他们意识到,哦,该死,这里有很多依赖项。有很多东西。这就是很多人停下来的地方。
很多人跳到立方体上,他们就像,该死,我的腿疼。什么情况?你知道,这根本不柔软。就像我在德克萨斯州达拉斯住的地方,我住在普莱诺。我们有这个,世界上最大的充气城堡,整个东西都很巨大,而且,
你基本上可以爬到这座巨大的山顶上。那里有一座巨大的充气城堡山。你可以站在那里,你可以看到几英里远的地方。整个东西都被充气城堡的东西包围着。我带我的孩子们去了那里,这只是一次非凡的令人振奋的体验。我认为它叫做Funbox。它是季节性的。它并不总是存在。但如果你在达拉斯,或者他们可能把它带到其他城市,一定要去。值得花20美元或其他什么来在世界上最大的充气城堡上跳跃,然后……
玩得开心。但是,但是就像,你知道,当你描述那个,那个可爱的,
有很多时候我就像,哦,这看起来很容易。到达那里一点也不难。结果是,我就像,我非常小心翼翼地爬上去。所以这让我想到,如果我想深入研究一些东西,对吧?是的,你可以绝对实现可以识别数字的神经网络,比如PyTorch或TensorFlow,对吧?这本身并不是火箭科学。这很难,但是,
但是当你试图用C语言做的时候,难度就完全不同了,对吧?当你试图用CUDA做的时候。我认为这是一个相当标准的,就像第一次编程作业。我认为几个课程,几个大型开放式在线课程,他们会把它作为他们早期的作业之一,因为它确实是一个非常好的方法,可以快速了解如何训练一些东西,并实际拥有可以工作的东西。我认为预测引擎,应该就是这么称呼的,或者预测,或者预测。
它会计算出哪个数字可能是。它以概率的方式做到这一点,对吧?无论多么糟糕,就像我的女儿实际上,她,她像一个愚蠢的轶事,但是我的女儿,呃,
她觉得在她的7上画一条线很有趣。因为正常的手写数字就像一个7。结果她在钢琴考试中得了满分。但是她其中一个问题,她认为她应该画一个花哨的7。它看起来像一个1。而且……
我们都看着它。我们想,这是一个1。对。她非常沮丧,因为她试图让她的7变得花哨,用花哨的数字,它根本无法被人类识别。无论如何,这是一个愚蠢的故事,但这令人沮丧。这整整一下午她都因为试图让她的数字过于花哨而无法被人类理解而感到沮丧。嗯,
所以即使对人类来说,也有一些模糊的地方,对吧?如果你曾经尝试阅读你的医生的笔迹,当他们给你开药的时候,众所周知,医生们的笔迹很糟糕。所以,也许像一个可以解释的AI系统会非常有用。我相信现在有很多这样的系统。是的。你只需要快速截个图,然后是的。发送,发送过去。这是什么意思?
是的,我们应该拍张照片,然后把它交给GPT-4,然后说,嘿,这是什么数字?这会让你更加沮丧。但是所以……
我喜欢你抓住一些东西然后深入研究的方法。当然,你撞到了那堵墙,你撞到了你正在跳跃的坚硬表面,你意识到它没有让步。这将是,有很多钻头。有很多墙。不仅仅是一堵墙。所以你有没有像某种,
当你撞到墙时的方法,就像,显然,如果你想到一堵真实的墙,你可以尝试爬过去,你可以尝试绕过去,也许墙在某个地方结束,你可以绕过去,对吧?你也许可以挖到它的下面,你可以尝试像,你知道的,大力士一样冲过去,但是,你如何处理当你撞到墙时的情况,你突然意识到,该死,我力不从心了?
嗯,通常我会非常难过,然后去YouTube、Discord或Twitter之类的网站,然后一个小时都不看这个问题。这通常是,这通常是一个信号,就像,我受够了。好吧,你可以,你可以去那里。我不会看你。然后它来了,我不知道,可能是一个小时,或者可能两天左右。我会回来,我会想,等等,我想我知道该怎么做了。然后我会摆弄一下,做更多的事情。然后最终经过足够的循环,它通常会起作用。我的意思是,
很多人认为我很自律。我不那么自律。如果出现一些困难的事情,我不会立即在当天解决。通常有很多拖延。没有人是完美的。但是,为了,我想,说到重点,就我如何能够解决问题而言,
解决问题的意思是,我的意思是,如果我试图解决PyTorch中的神经网络问题与试图调试一些C或CUDA代码,这是不同的,对吧?当你使用Python时,通常你会遇到不同类型的错误,而当你使用C语言时则会遇到不同类型的错误。对于Python,我的意思是,我使用一个名为Cursor的文本编辑器,对吧?我的意思是,你知道这是什么。Cursor太棒了。Cursor就像AI赋能的。
是的,就像你拥有它一样。它是VS Code的一个分支。所以你这边有你的文件,然后你有你的代码。你的代码在顶部,然后是你的终端,你可以上下翻转。然后你在旁边有聊天框,你可以选择你想要的模型。所以有像OpenAI 01。有像Cloud 3.5 Sonnet New。有你可以使用的所有不同的模型。
我通常使用Claude 3.5 Sonnet模型。它们在编码方面是最好的,甚至都不是很接近。有时O1也不错,但我通常对Claude有很好的体验。是的。所以我通常会查看一个文件。我会尝试用我自己的大脑来推断,而不用AI帮我思考。我通常会查看它,然后想,嗯,这里有什么问题?这里下面有一条下划线。这是一个我们可以使用的函数吗?它在文档中存在吗?还是你编造的?
你在生成它时编造的吗?对。然后我会,我会,我会看看文档,或者我会说,嘿,你编造的吗?它会说,哦,是的,我实际上是编造的。然后它会去更改它。它就像,哦,现在可以用了。是的。
是的。是的。这种情况经常发生。就像我每天都在写代码一样,现在我一直在为Minecraft模组编写很多Java代码,它会,是的,它会在模组中,在Minecraft Forge或Fabric中,无论我使用什么,都会产生一些函数。我会说,嗯,你确定它存在吗?它会说,啊,被你抓住了。是的。它会去纠正自己。嗯,是的,我认为AI增强的编码非常好,能够非常快速地完成事情。嗯,
能够像编写一些样板代码一样,样板代码很难。我的意思是,我不只是想坐在键盘上连续敲一个小时。它就像,好吧,我心里有这个想法。去创建一个模板,我以后再升级。让基本功能正常工作,这样我就可以在其上添加东西了,对吧?这部分对人们来说在智力上是困难的。
它不一定是样板代码。这些东西只是令人讨厌的枯燥工作,你实际上不再需要做很多了。更多的是,我试图解决的实际工程问题是什么?为什么这个问题如此困难?我可以在哪里找到解决方案?这些东西,大部分应该在你的大脑中完成,对吧?是的。
对。如果你对这个主题有点陌生,你可以使用语言模型来帮助你。但一般来说,你应该用你的大脑来完成这些任务。你不想让语言模型自己去旋转它。它会很快消耗你的API积分。所以。
是的,把它放到Cursor中,然后……无论是在Jupyter Notebook中还是在C文件中或CUDA文件中,都可以尝试一下。样板代码,然后添加这个。如果我想测试TensorFlow操作,我会说,好吧,这些在哪里?我会查看NVIDIA文档,然后我会说,哦,找到了。请插入这个好吗?然后它就像,哦,它有效还是无效?然后我可以查看……是的,逐层分解,对吧?通常……
这通常是我处理整个CUDA方法的方式。就像课程中的所有CUDA代码,以及识别数字的副项目一样,我会,比如,使用Cursor快速完成一些事情,以确保它有效。以后再担心健壮性,对吧?只是尝试,比如,让MVP工作。是的。
然后,呃,然后如果,如果它,如果它在某个时候有效,这通常是我在一两天内就能完成的工作。然后在那时,它就像,好吧,现在让我们分解它。如果我不理解某些东西,我会说,嘿,这是什么?然后你就,你知道的,你拥有所有这些工具,对吧?这只是你如何使用它们的问题。你可以,你知道的,你拥有非常强大的语言模型。你拥有所有这些文档,你可以浏览所有这些文档。嗯,
然后当然你可以使用你自己的推理。永远不要忘记那件事。是的,这是一个,是的。我的意思是,呃,人脑在做事情方面仍然比整个组织结构、整个,你知道的,复杂的分布式软件系统要好得多。就像人脑一样,不要低估它。不要低估你自己的大脑和你自己想出新颖解决方案的能力。是的。
是的。太棒了。我很高兴你从中获得了如此多的知识。我有点害怕……
我有点害怕下一代这些东西会有多么强大。我的孩子们可能只需要在他们的Mac M8 Max或其他什么东西上调出一个VS Code的分支,当它发布的时候。他们会飞速前进。我会说,你写了这个吗?他们会说,不,Claude 7为我写的。是的。对吧?或者GPT-8,无论是什么。
没有什么可以替代真正理解幕后发生的事情。通过深入到C层和CUDA层,你比大多数开发人员做得更深几层,坦率地说。我认为这完全令人钦佩。我想和你谈谈这个。你曾经说过大学是一个备用计划。你技术上需要完成你的大学学位吗?
也许不需要。你也许可以出去找工作。我的意思是,对于那些了解如何进行CUDA开发的人来说,市场非常火热,对吧?然而,你就在那里。我认为你是二年级学生。对吗?大学?是的,我是一名二年级的计算机科学专业学生。是的。那么,你能对比一下你通过你的计算机科学学位学习的东西吗?我将以此为前提,就像,
我非常支持去获得计算机科学学位,除非你处于职业生涯中期或后期。回到大学学习不一定有意义。但是如果你有能力在大学学习某个科目,你应该学习计算机科学。我坚信,如果你不知道未来会怎样,这是你能获得的最有报酬、最灵活的瑞士军刀式学位。
对不起。我,就像,可能在影响你的答案,Elliot,并且,就像,把我的所有,就像,信仰摆在桌面上。但我真的告诉人们,就像,你会听到人们贬低计算机科学学位。哦,他们正在教授所有这些30年前、40年前的旧东西。就像,所有新的东西都是建立在旧东西的基础上的,对吧?就像SQL、Python、C、Linux。就像,这些是较旧的技术,成熟的技术,所有东西都是建立在这些技术之上的。
对。所以,所以回顾并学习它们并没有什么坏处,而且它们并没有改变太多。对。在,你知道的,很多正在发挥作用的概念中。我的意思是,我,我通常认为,对于计算机科学学位来说,这与其说是教授旧的东西,我的意思是,当然你需要学习C,你需要学习Python 3,你需要学习SQL,无论是什么。嗯,
我认为这不是学习这些东西的问题。我认为这是他们如何教授这些东西的问题,他们教授这些东西的方法,例如实验室,他们会给你一个带回家的作业。也许这做起来不是很愉快。对。我的意思是,我的意思是,也许你,也许这只是在准备你,做你的家务,这样如果你将来没有有趣的任务,你就在为那做准备。但是,
但是我的意思是,基于,基于这两个,我想我已经有一年多一点了。嗯,因为下一个,新的一个刚刚开始第二年,基于我的经验。嗯,
我的意思是,对于初学者来说,对于那些从未学习过编程的人来说,我认为这是可以的。但是如果你真的认真对待它,我认为你可以做得更快。通过理解进行项目并整天尝试和摆弄东西实际上是一种更快的方法,我认为你可以完全超越计算机科学学位。是的。所以我想我的问题是,
你计划完成你的学位吗?我不知道你的父母是否会听到这个,希望他们不会说,什么?我必须小心我说的话。我爸爸会看这个,他会说,嘿。不,但假设微软或其他大型科技公司,或者像游戏开发公司这样的更专业的公司联系了你,他们说,嘿。
你想实习吗?然后在实习之后,他们说,嘿,你想留下来工作吗,而不是完成学业?因为我们宁愿……雇主总是会试图……如果他们认为你已经准备好了,他们不会希望你把注意力分散在学习和工作之间。因为……不,要么是全职,要么是不工作。是的。我的意思是,他们可能会……有夜校和一些……
你知道的,学校甚至会支付你回去读硕士学位的费用等等。但是,就像,我认为现在人工智能发展速度如此之快,而且涉及的资金数量如此之多,坦率地说,公司可能会要求你,你必须有唯一的关注点,或者他们可能不会要求,但他们肯定会,
施加压力。每次他们和你谈话时,你还在做学校的事情。所以假设你实习了。我不知道你是否已经安排了实习。你在学校很早。但是假设你实习了,他们确实想把你转为全职员工。你会有多想离开学校去工作?绝对的。100%。100%的诱惑成功?我的意思是——
就像现在谈话一样,我有一些机会,但没有什么是有保证的。它不像是有保证的。我的意思是,这,我不知道。我必须小心这一点,因为现在我们发布了这个,就像每周几天,无论是什么。这可能会在接下来的几周、几个月或几年内发生很大的变化。它可能会发生很大的变化。是的。所以——
在本周播客节目中,freeCodeCamp创始人Quincy Larson采访了Elliot Arledge。他是一位20岁的计算机科学专业的学生,他创建了几个流行的freeCodeCamp课程,主题包括大型语言模型(LLM)、Mojo编程语言以及使用CUDA进行GPU编程。他来自加拿大艾伯塔省埃德蒙顿。我们讨论了:- 从零开始构建AI系统- Elliot如何如此快速地学习这么多知识以及他的方法- 他如何阅读学术论文- 他的计算机科学学位课程与他的自主学习在介绍中,我播放了1988年《双截龙II》游戏配乐歌曲“Into the Turf”。本播客得到Wix Studio赠款的支持。Wix Studio为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问https://wixstudio.com。本播客还得到11,043位通过每月捐款支持freeCodeCamp的好心人的支持。加入这些好心人,通过访问https://www.freecodecamp.org/donate来帮助我们的使命。我们在谈话中讨论的链接:- Elliot在freeCodeCamp上的Mojo课程:https://www.freecodecamp.org/news/new-mojo-programming-language-for-ai-developers/- Elliot在freeCodeCamp上的CUDA GPU编程课程:https://www.freecodecamp.org/news/learn-cuda-programming/- Elliot关于从零开始构建LLM的Python课程:https://www.freecodecamp.org/news/how-to-build-a-large-language-model-from-scratch-using-python/- Elliot的YouTube频道:https://www.youtube.com/@elliotarledge- Elliot在GitHub上的许多项目:https://github.com/Infatoshi</context> <raw_text>0 嗯,我有一些朋友,他们在离职后从事这些工作,他们的工作机会实际上被撤销了。在大规模裁员期间,他们获得了遣散费等等。所以没有什么是有保障的。绝对不要认为这是理所当然的。但假设至少其中一个机会实现了,如果你有一篮子机会——
多元化降低风险,对吧?就像你有一篮子潜在的机会。让我们假设至少其中一个很可能成功。
是的。如果其中一个很可能成功,并且确实进行了面试,得到了offer。我不会再上学了,就这么简单。好吧。为了离开,我什么都愿意做。我的意思是,我现在从我的学位中学到的东西并不多,说真的。我现在正在学习Python数据结构和算法课程,大约完成了一半。好吧,这还不算太难。
我的意思是,如果我现在离开,我可能会错过以后一些更有趣的东西。但出去在一个实验室里做一些很酷的AI项目,并与非常非常酷的人一起工作,完全是值得的。是的,我会毫不犹豫地接受。是的,我很高兴听到你对自己很坦诚,并且你已经考虑过这些事情。因为你可能会面临很多压力,不仅仅是来自家庭的压力,还来自你的同学等等,也许还有你的教授。
你的学校允许你复学吗?斯坦福大学很有名,你可以随时离开,然后回来。人们会去创办一些不成功的创业公司,然后回来完成学业,因为斯坦福大学的学位在就业市场上非常值钱。你也会在学习过程中学到很多东西。所以他们有一种多孔的、类似于膜的东西,你可以双向通过。对。嗯,
你在那里是什么样的情况?当然,我的知识,我以前住在旧金山和海湾地区。我对那里的科技生态系统很了解,那是软件开发的众所周知的圣地。但我对加拿大市场,例如埃德蒙顿,了解较少。那里的就业市场是什么样的?雇主对辍学的人友好吗……
例如,像他们在帕洛阿尔托那样吗?所以,我的意思是,这里有阿尔伯塔大学。我有麦克尤恩大学,这就是我上的大学。我以前也上过NAIT。至于……
至于就业市场,我实际上不太确定。我没有跳槽。我没有明确地在城市里寻找机会,主要是因为大型公司都在加利福尼亚州、奥斯汀,甚至欧洲。谁知道呢?所以现在我已经,我已经和,我的样本量不大,所以我不想说。我不希望这被理解为,我不希望这被严重看待,但我已经和,
我想在我的城市里只有一两个人正在积极招聘软件工程师。每次都是,你有没有学位?是或否?
你没有学位。我们很想和你一起工作,但很抱歉,我们不能。所以,我的意思是,我已经向他们展示了我做的一些工作。他们说,对不起,我们不能。就像,好吧,你错过了。是的,而且,公平地说,公司是规避风险的,他们用来降低风险的方法之一就是,好吧,让我们只雇佣已经完成学业的人。这就是原因之一。不是每个人。是的。是的,继续。不。
不是每个人——每个辍学计算机科学专业的学生都不会像我或下一个人一样,对吧?所以规避风险非常重要。他们必须小心谨慎。但我认为还需要——他们实际查看并评估人的过程,可能需要改进,对吧?如果你只是看看任何一个人,然后说,哦,不,你没有学位。我们不能录用你。我认为这里需要更多的东西。
是的。很多硅谷公司似乎都是采取这种方法。我认为我听到的一个统计数据是,如果你只是四处走动,比如谷歌的校园或脸书的校园,抓住一个随机的工程师,你找到工程师的可能性要高20倍。他们拥有学位的可能性比没有学位的可能性高20倍。但是。
这些大型科技公司和其他大型雇主都愿意聘用员工。所以这意味着第21个人可能会,你知道,没有学位。所以,而且我确实认识很多工作的人,呃,
他们中的许多人往往年纪较大,没有学位,因为他们工作了很长时间。也许他们在最初的硅谷泡沫时期就从事这项工作,并且他们有很多机会。他们从未需要回学校学习之类的事情。但这确实是一条可行的道路。所以你所说的与我认为典型的求职者体验相符,即使他们很优秀,他们也可能只是感到失望。
因为他们不符合拥有学位的条件而被直接拒绝,这就是我告诉人们坚持下去并获得学位的原因之一,除非你有一些非常戏剧性的机会,或者你恰好去的是像斯坦福大学这样的学校,在那里你可以轻松地作为本科生重新入学,如果事情由于某种原因没有成功的话。是的。所以,呃,是的。
我真的很想从你那里了解的一件事就是你认为事情将如何发展,因为你拥有自己构建了许多这些系统的优势。你拥有观察LLM改进的优势,这是一个AI的非常具体的方面,但它可以说是目前发展最快、最有前景的领域。嗯,我当然很想听听你是否认为还有其他有前景的领域,但是,嗯,
你认为这将走向何方?作为一名与这些系统密切合作的软件工程师,并且阅读大量研究论文的人,你的想法是什么?是的。我的意思是,就事情的发展方向而言,如果你回顾一下,如果你回顾一下,
到最初的GPT-1,我认为是由OpenAI领导的,一直到GPT-3。你看看其中的一些核心内容,很多都是大规模的。大部分只是扩大模型规模。这就是大部分工作。就像,购买更多GPU,使用更大的超参数在这些神经网络上运行,例如更大的批量大小、更长的上下文窗口,
更大的嵌入维度标记。你只是在扩大规模,添加更多层。对。但我真正感兴趣的部分是弄清楚如何打破这些缩放定律,不是打破它们,
而是找到不同的架构,或者找到可以添加到现有架构中或用新事物替换现有架构的东西,这将使缩放更好。对。所以现在,如果你有,我不知道,一些像基本损失曲线那样代表语言模型缩放的东西,基本上缩放会下降。
你可以用非常高的精度预测,给定任何数量,给定模型,给定模型大小和输入的训练量,损失将是多少。对。所以这些是,这基本上是OpenAI和谷歌已经讨论和发布的缩放定律。而且,呃,
它主要只是扩大规模。它,它基本上是扩大模型规模。对。但是如果你添加新的架构技巧,例如,对于那些了解注意力机制的人,如果你能够找到一种更好的注意力机制来完成相同的工作,但它可能更高效,那么你可以添加更多层,因为你可以将更多注意力机制放入相同大小的模型中。对。或者你可以获得更多,更多学习和所谓的“智能”每个标记。这是预测的。嗯,
那么理想情况下,这就是你想推送到你的生产模型中的东西,对吧?所以像GPT-4这样的东西,我的意思是,它可能有一些……我的意思是,它已经包含了所有这些东西,对吧?也许GPT-4没有。也许GPT-5会有。谁知道呢?但我主要寻找的是如何……所以有一些事情,我依稀记得,但是
呃,它正在提高数据的质量。所以这是第一点,当你,当你训练模型时,你希望数据尽可能高质量。如果它鼓励积极思考,如果它鼓励模型以某种方式表现,从而产生更好的输出,这是一件非常好的事情。你希望你的数据超级高质量。这是一个难题,因为很难生成大量非常高质量的数据。这是非常昂贵的,对吧?这就是为什么他们向承包商支付数百万美元来构建这些东西。嗯,
然后是架构技巧。我有很多关于我们如何稍微改变transformer并使其变得更好的研究论文,也许它会减少噪声或其他什么,或者它会捕获不同类型的模式,或者这个小技巧更强大,无论是什么。我喜欢寻找这样的东西,因为它有点
绕过缩放定律。它使缩放更好。所以你可以用更小的模型完成相同的工作,或者如果你保持相同大小的模型,你可以提高性能,对吧。或者智能,无论你想用什么,我认为评估是正确的术语。这不会是,这不会是智能。因为这很难真正量化。更多的是评估性能。但这将是另一天的讨论。
然后是,我不知道,还有分词器。还有很多不同的东西我都在寻找。不仅仅是神经网络。不仅仅是数据。你必须考虑一切。对。当你找到一堆有效的东西,并且你将它们聚合到同一个模型中,并且它仍然有效,那就是,那就是这些新的模型发布的样子。对。对。
当你将一百个不同的微小突破结合起来,并且当它们放在一起时,它们都成立,这就像,这被认为是一个突破,或者,或者我不知道,你想用什么术语来形容它。是的。是的。我通常喜欢很多小的增量提升,但是我们取决于它们在流程中的位置,可能会对流程的其余部分产生过大的影响。
你可能会在早期发现一些东西,比如分词器中的优化,它恰好对系统的其余部分产生了这种戏剧性的杠杆作用。是的,可能有一些事情会突然改变它,但同样,它仍然会聚合所有这些小的甚至相当大的变化,从而使模型得到改进。我的意思是,这不仅仅是……如果你添加一样东西,它可能只是一个突然的变化。它可能不是。如果你添加……
通常情况是这样的,你有很多小事情,你不会看到模型改进的突然变化。用户在看到新的模型发布时会看到这一点。他们看到的是我们从这里开始。我们从这里到那里,但研究人员看到的是每个改进的小点。就像,如果你,如果你发现了一些东西,如果你每天提高1%,
那么在年底,你会像,我不知道,无论什么时间。这将是一个惊人的数量,对吧?所以研究人员每天或每周都能看到这1%。然后当你把所有这些都加起来的时候,在顶部,就像,哦,我的天哪,这太疯狂了。我现在害怕这个东西了。它太聪明了。是的,只是戏剧性的复合回报。我同意。
我喜欢你所说的模型发布似乎是一个巨大的飞跃,但这是因为有很多小的增量变化,就像工程师花时间思考这些不同的东西并尝试不同的实验一样。然后所有这些都会随着时间的推移而累积。然后模型发布,也许我们会在一年左右的时间里获得GPT-5,但它将是——
你知道,在流程的各个点上有很多小的创新。我说流程,因为我不确定机器学习工程师会称整个过程为最终产生这个可以进行推理的模型的过程。对。嗯,但是,
当然。但你会得到这些好处。因此,对于一个像“哇,这比以前好多了”这样的消费者来说,人们可能会夸大其词,认为Skynet明年就会出现,因为看看它今年进步了多少。但是——
在某些方面,也有递减的回报。我们一直在讨论睡眠的递减回报。我们一直在讨论花时间思考问题的递减回报。所有这些事情。递减规律确实是自然界中最基本、最重要的现象之一。它也适用于机器学习研究。是的。
你认为接下来会发生什么?这只是一个疯狂的猜测。随便乱射。对。但是,比如,根据你目前对科学和工程的理解,你认为未来五年模型增长可能会发生什么?你认为,你知道,阅读所有这些不同的论文,你认为我们将继续获得这些戏剧性的飞跃,还是你认为事情会放缓,或者根据你目前对科学和工程的理解,将会发生什么?
所以这非常有趣。每当有人发表关于他们认为将会发生什么的大胆声明时,有时有人可能会把这个放在Twitter或X上。他们可能会说,这是Elliot的什么离谱预测?什么鬼?但是,但是我想只是,只是为了,你知道,
如果我们忽略这一点,我认为有很多变量,对吧?请不要这样做。如果你正在听这个,请不要这样称呼他,这是什么疯狂?请把它放在上下文中。告诉他听这个播客,这样他们才能真正了解谈话的背景,而不是一些被挑选出来的摘录,让Elliot看起来像是在试图成为某个未来学家之类的东西。是的。我的意思是,我想有……
有很多变量,对吧?我不认为只有一件伟大的事情会发生。我认为现在的研究进展相当不错。但是如果我保持这些不变,我可以说也许在接下来的某个时候会出现Claude 4或Claude 5——想想当前的Anthropic Claude 3.5十四行诗新版本。对。
但也许在编码任务上要好得多。也许它能正确回答95%的问题,并且让你超速运行。我认为这样想是可以的,这很天真。但在我看来,我不认为它会永远只是transformer的缩放。获得一个真正聪明的模型需要大量的计算。我不认为你能够永远扩展GPU。我认为会有更高效的方法来完成类似的任务。
所以,与其只是采用经典的GPT进行下一个标记预测,并试图尽可能多地将智能放入这个文本中,因为它正在对下一个单词进行采样,我认为……
我认为这很容易使用,但这可能不是最好的方法,对吧?所以当你采用像光标文本编辑器这样的东西时,当你拥有这些能够取得快速进展的超级加速的研究人员时,因为AI实际上帮助他们更快地编写代码,当他们编写更好的代码时,这些AI就会改进。可以说这是一个递归改进。然后不仅仅是将这种改进应用于transformer本身,而是找到一些其他的架构,比如,不同的……比如,不是transformer。比如,完全丢弃它。或者不要完全丢弃它,但也许可以从中借鉴一些想法,然后尝试其他东西,对吧?我认为这里可能有许多探索和潜在的非常好的机会。再说一次,这就像……
一片漆黑。你什么也看不见。你不知道你要去哪里。当你开始探索这个领域时,关于它的文献并不多。但是当你开始探索这个领域时,有很多东西可以探索。你不知道潜力有多大。
对。所以,我认为当你能够用像光标这样的快速文本编辑器快速测试事物时,你能够更快地找到这些其他的非transformer的东西。我认为如果我们得到这样的东西,我认为这很可能会发生,我们可能会看到一些完全陌生的东西,甚至比现在的transformer更陌生,你知道吗?
是的。当你与GPT-4或Claude 3.5对话时,感觉就像你正在与外星人对话。当,当,当人们看到这些,呃,当人们看到这些AI电影时,他们会看到机器人接管等等,这不像现在的transformer。transformer,它们接受一些输入,并且它们有所有这些相互关注的标记。并且有很多特征正在被,呃,被剖析。最终它只是吐出,什么最有可能,比如,但是什么最有可能成为最好的答案?我想预测的下一个词,对吧?它,
它可能不是那样的。机器人不是那样的,对吧?这些机器人是——它们是有意识的实体。它们的大脑中有一些循环往复的循环,就像来回移动一样。循环神经网络就像人脑,不像现在的LLM。是的。
是的。
是的。
所以我觉得像这样一些东西,你会有这些循环往复的东西,也许它会是除了循环之外的其他东西。我不知道。
但我认为这里有一些潜力。我很高兴听到你认为我们现在正在构建的这些LLM工具可能会帮助我们发现其他分支,其他途径来构建更强大的系统。所以这些可能会加速我们到达更强大的系统。这真的很酷。我还有一个问题要问你。我想注意你的时间。
你是一个阅读这些论文的人。我不知道有多少20岁的年轻人会闲逛并阅读,比如,你知道,关于不同开创性技术的学术论文。因为通常在实施之前就已经写好了。所以你可以通过阅读论文来了解事情的发展方向。你如何阅读学术论文?因为它是不是超级超级吓人?是的。
是的,这绝对是超级吓人的。我记得我第一次尝试理解和稍微解析的一些论文。当你浏览它时,这绝对非常可怕,不仅仅是尝试蛮力从上到下阅读,而是你只是看着它。就像,好吧,我在这里处理什么?你看到所有这些公式和东西以及所有这些奇怪的数学表达式,你就像,
呃,什么鬼?不。然后你点击关闭。就像,不,谢谢。嗯,但是,但是我想只是通过这些,嗯,
我现在没有——像现在一样,我没有目前将论文分解到我想要的深度,主要是因为时间。我没有整天阅读AI论文的时间。但我尽我所能,对吧?比如,如果我从学校回家乘坐火车或公共汽车,我会拿出我的活页夹,浏览一两篇论文,快速浏览一下,了解一下,尝试提出一些问题。通常——
通常当我浏览一篇论文时,我会先看摘要。这是第一部分。你只想理解,好吧,他们在做什么?这里的一般想法是什么?即使它没有立即点击,你仍然想理解,好吧,我们在这里做什么?这是什么意思?让我们将标题与摘要关联起来。他们在做什么?然后你浏览各个部分。你只看粗体文本,例如介绍、相关工作、介绍。
比如什么,呃,实验结果,所有这些,对吧?你只查看所有这些部分,并查找关键字,查找粗体字,也许是图像,并尝试理解,获得更多上下文,对吧?嗯,
这还取决于你在寻找什么。如果你只是在看一些东西,尝试从中学到一些想法,你可以走这条路。但是很多人都在看一篇论文,他们试图理解这实际上对我有什么好处?如果我去学习这个,它会让我的研究和工程改进多少?所以……
有时人们会直接跳过。他们会阅读摘要,然后直接跳到结果。比如这实际上有多好,对吧?坦率地说,这就是我通常的做法。如果不是你。是的,是的,对吧?这实际上好吗?我认为这是一个安全的选项,看看这实际上好不好?你看到它在评估的基准是什么,然后从那里开始。但是如果你正在查看结果,并且你也在尝试
你也在尝试学习并可能构建这个东西。我认为重要的是……
理解你正在阅读的部分。阅读时查找关键词。不要仅仅假设你大脑中的所有内容都会有意义,因为它不会。你会看到很多词,你看到的词中可能有20%或30%,20%的重要词,你可能完全不知道它们在说什么。所以你会在你的纸上圈出来,或者在你的文档上突出显示它,然后
你会问这个问题,你可以更深入地挖掘它。比如这是什么意思,对吧?你可以调出一个语言模型,或者调出谷歌搜索,甚至调出困惑度。我知道困惑度是我使用的一个很棒的工具。是的,它是一个AI驱动的搜索引擎。
是的。是的。比如我实际上在我的键盘上按command shift P。它会在中间弹出一个小的搜索标签,类似于Mac spotlight。我只是输入一些东西。它会搜索互联网上的所有链接,并给我最好的链接。对。这真的很好。但我通常会浏览,我会像,
我通常会浏览它。当我查看某个段落时,我会选择性地阅读哪些段落以及阅读顺序,但我通常会从上到下阅读,因为这是,我的意思是,我不知道。我认为不从上到下阅读是一个坏主意。你只是想了解,他们在这里表达了什么?你圈出那些没有意义的词。我的意思是,它是有结构的,对吧?论文之所以这样结构化,是因为学术论文的作者和编辑,你知道,组织,他们希望你以这种方式阅读期刊文章。是的。
以这种线性方式,因为这就是他们结构化的原因,对吧?所以很抱歉跳出来陈述显而易见的事情,但我赞扬你实际上是按照预期的方式使用它。是的。是的,这很重要。如果我错过了一些细节,我深感抱歉。我通常会浏览……
从上到下,非常选择的段落。你可以选择你正在查看的段落。你不会像读故事书一样阅读它。这总是一个坏主意。你很早就学会了这一点。像读故事书一样阅读是一个坏主意。或者至少我发现这不太有用。但是是的,你可以把它分成其他人做了什么?
他们在这里做了什么?所以通常我做笔记最多的地方是当他们概述了一些算法时,他们会对他们在这里到底在做什么以及他们使用的所有这些不同的变量进行一些文本描述。这就像把这些东西放在一起,然后把它投射到文本或图纸上,或者任何可以让你理解的东西上。我认为这非常重要。你知道,能够
在本周播客节目中,freeCodeCamp 创始人 Quincy Larson 采访了 Elliot Arledge。他是一位 20 岁的计算机科学学生,创建了几个流行的 freeCodeCamp 课程,主题涵盖大型语言模型 (LLM)、Mojo 编程语言以及使用 CUDA 进行 GPU 编程。他来自加拿大艾伯塔省埃德蒙顿。我们讨论了:- 从零开始构建 AI 系统- Elliot 如何如此快速地学习以及他的方法- 他如何阅读学术论文- 他的计算机科学学位课程与他的自主学习在介绍中,我播放了 1988 年《双截龙 II》游戏配乐歌曲“Into the Turf”本播客得到 Wix Studio 赠款的支持。Wix Studio 为开发人员提供工具,可以快速构建具有所有开箱即用功能的网站,然后使用代码扩展、替换和突破界限。了解更多信息,请访问 https://wixstudio.com。本播客还得到 11,043 位通过每月捐款支持 freeCodeCamp 的好心人的支持。加入这些好心人,通过访问 https://www.freecodecamp.org/donate 来帮助我们的使命。我们在谈话中讨论的链接:- Elliot 在 freeCodeCamp 上的 Mojo 课程:https://www.freecodecamp.org/news/new-mojo-programming-language-for-ai-developers/- Elliot 在 freeCodeCamp 上的 CUDA GPU 编程课程:https://www.freecodecamp.org/news/learn-cuda-programming/- Elliot 关于从零开始构建 LLM 的 Python 课程:https://www.freecodecamp.org/news/how-to-build-a-large-language-model-from-scratch-using-python/- Elliot 的 YouTube 频道:https://www.youtube.com/@elliotarledge- Elliot 在 GitHub 上的许多项目:https://github.com/Infatoshi</context> <raw_text>0 拿一些东西,基本上就是,就是你在读完其他大部分内容后看到算法工作原理的部分所花费的时间。当你看到核心算法本身或提出的算法时,你可以在 Jupyter Notebook 中,在 PyTorch 或其他什么东西中,多快地实现它?对。你多快能从 A 到 B?呃,我觉得这是核心问题之一。我知道,嗯,
像 André Karpathy 这样的人,或者我不知道 Ilyas 在 Skever 是否这样做。我知道像 Alec Radford 这样的人。我从 OpenAI 那里听说了很多关于他的事情。这些人会——他们只会看看一些东西或有一些想法,以及如何——这就像我多快能把它放到 Jupyter Notebook 中一样,对吧?让单元格工作。确保它们不会出错。完成了。然后你测试并在它实际工作后对它进行实验,然后继续。所以——
我想这确实取决于你阅读的论文类型。我有一些论文非常依赖 CUDA 性能。嗯,然后其中一些,嗯,
其中一些可能更多的是基于数据的——或者不是数据库,而是基于数据的。所以也许他们使用某种类型的后训练机制在神经网络上,使其在某些方面特别聪明,或者不会对某些事情做出不道德的回应。是的,有——我想这取决于。但我通常坚持这样的结构:它像树一样深度优先搜索。你从顶部开始——
以某种方式组织到底部。它不会是一刀切的,对吧?所以很多这都是我有点含糊其辞,使用模糊的术语。很多都是你必须找出什么最适合你。但据我所知,这是我发现最简单的方法。是的,我想随着你逐渐获得越来越多的背景知识和——
对你正在学习的领域的熟悉程度越来越高,那么就能更容易地找出这里真正有趣和相关的内容。但对于第一篇论文,也就是你之前发表的关于 LLM 入门的课程,你其中包含三篇学术论文。著名的“Attention is All You Need”论文,一篇关于 LLM 的综述,以及 QLORA,一种对量化 LLM 进行高效微调的方法。
你会说这三篇论文是一个好的起点吗?如果你只是想尝试阅读为科学家和拥有博士学位的人设计的学术论文,而不是为外行人设计的,而是为有抱负的论文读者设计的,可以从这些开始吗?是的。
是的。我认为,嗯,我认为,我的意思是,时代变化很快。每天都有新的论文发表。因此,很难具体地说这些论文会永远存在。我仍然认为这可能不是我能做出的最佳选择,但我认为它们还不错。嗯,我会解释我的理由。所以你有了“Attention is All You Need”,这是我课程中核心内容的核心。就像,好吧,这就是一切的基础。学习这个。这很重要。嗯,
然后你有一篇关于大型语言模型的综述。对于那些只想查看不同的训练语言模型并查看它们如何比较,并大致了解事物如何工作,而无需像我们在课程中的 Jupyter Notebook 中那样进行超级技术性操作的人来说,对吧?就像那些东西,QLORA 论文就是为了这个。所以 QLORA,它不再只是超级高级的,而是更多地是添加这种,添加这种特殊的方式,一种超级高效的方式来微调
并量化和微调现有的预训练语言模型。你特别地……我不想深入探讨它的技术细节,但你有一个较小的矩阵,你用它与较大的矩阵(即更大的网络)进行运算。然后你基本上……你能……
你能非常高效地训练它,因为进行的操作更少。你没有训练整个模型,比如更新其中的每一个东西。你只需要这个较小的东西乘以这个较大的东西,并且你实际上只修改了其中的一小部分。所以它效率高得多。当你量化它时,这是另一件技术性的事情,量化就像当你从 FP32 权重转换为 FP16 或 FP8 时一样。是的,基本上是把它分解成更小的位。
是的,因为量化是我们音乐中做的事情。例如,如果你不是一个很好的鼓手,你可以通过量化来修复你的鼓点。我不这样做,但这是一种让你的鼓点听起来更好的捷径。
非常感谢你分享这些关于深入研究这些论文的许多见解。我将鼓励所有收听节目的听众查看 Elliot 的课程,当然,我已经在下面链接了。你绝对可以阅读更多关于他的信息。你有一个非常酷的个人网页。向在 2024 年维护个人网页的人致敬。我鼓励大家去那里,购买一个域名,拥有你自己的命运,拥有你在互联网上的房产,方法是像 Elliot 那样建立一个个人网页。
而且,和你交谈真是太愉快了。我喜欢你对所有这些不同方面走向何方所持有的平衡观点。我喜欢你对事情进展速度和事情将如何改进的谨慎乐观态度。在这个领域你必须小心,是的。是的。我的意思是,那里有很多炒作,但也有很多现实。就像这些工具……
非常有用。我还没有使用 Cursor。就像我主要只是使用,呃,你知道,LLM 来进行,像,像以对话的方式进行开发。呃,但是,但是那,那听起来像是一个非常酷的工具。嗯,呃,是的,像我,我会鼓励人们从 Elliot 那里学习更多,并继续关注这个播客,我将邀请许多其他杰出人物和产品
神童,如果我可以这么说的话,呃,你知道,那些早熟的人,他们像 Elliot 一样超越年龄的智慧。嗯,我们将获得聪明人的一个很好的横截面。Elliot,我很乐意将来再次邀请你,呃,也许一年左右。而且,根据事情的进展,事情进展的速度,也许会更早,但感觉有很多事情可以谈论。而且,呃,
我真的很期待看到你在改进你自己的流程、你自己的学习以及你自己的工具和应用程序的开发方面取得的进展。感谢你如此开放地公开学习,并通过 freeCodeCamp 社区和你的 YouTube 频道分享你学习的这些成果,你在上面有很多很酷的小教程,比如,你知道,你的,呃,树莓派,呃,
GPT 教程真的很酷。今天早上吃早餐的时候我看了。看到你只是连接东西,只是做事情,这真的很酷,对吧?无许可创新,只是走出去完成它并学习它。没错。是的,伙计。这是关于旅程,你知道吗?是的。好吧,再次感谢。感谢所有收听节目的听众,祝大家度过一个美好的星期。下周再见,编程愉快。