Andrej Karpathy - LLM in Review

谈笑风生 621 views 3 replies
#1 ·

2025 年 LLM 年度回顾

作者:Andrej Karpathy

2025 年是大型语言模型(LLM)进步强劲且充满事件的一年。以下是我个人认为值得注意且有些令人意外的“范式变革”列表——这些变革改变了整个格局,并在概念上让我印象深刻。

1. 来自可验证奖励的强化学习(RLVR)

在 2025 年初,所有实验室的 LLM 生产流程大致如下:

  1. 预训练(类似于 2020 年的 GPT-2/3)

  2. 监督微调(InstructGPT,约 2022 年)

  3. 来自人类反馈的强化学习(RLHF,约 2022 年)

这曾经是训练生产级 LLM 的稳定且经过验证的配方。在 2025 年,来自可验证奖励的强化学习(RLVR)成为新增的主要阶段,成为事实上的新标准。通过在多个环境中(例如数学/代码谜题)针对自动可验证的奖励训练 LLM,LLM 会自发发展出人类看来像“推理”的策略——它们学会将问题解决分解为中间计算,并学会多种问题解决策略,来回迭代以找出答案(参见 DeepSeek R1 论文中的例子)。在之前的范式中,这些策略很难实现,因为不清楚 LLM 的最优推理轨迹和恢复过程是什么样子——它必须通过针对奖励的优化自己找出有效的方法。

与 SFT 和 RLHF 阶段不同(两者都是相对较短的微调阶段,计算量较小),RLVR 涉及针对客观(不可作弊)的奖励函数进行训练,这允许进行更长的优化。事实证明,运行 RLVR 提供了很高的能力/成本比,它吞噬了原本打算用于预训练的计算资源。因此,2025 年的大部分能力进步来自于 LLM 实验室消化这个新阶段的计算过剩,我们看到了规模大致相同的 LLM,但 RL 运行时间更长。此外,这个新阶段独有的特点是,我们获得了一个全新的控制旋钮(以及相关的缩放定律),可以通过生成更长的推理轨迹并增加“思考时间”来控制能力,作为测试时计算的函数。OpenAI o1(2024 年末)是 RLVR 模型的首次演示,但 o3 发布(2025 年初)是明显的拐点,你能直观感受到差异。

2. 鬼魂 vs. 动物 / 锯齿状智能

2025 年是我(以及我认为整个行业)第一次开始更直观地内化 LLM 智能的“形状”。我们不是在“进化/培养动物”,而是在“召唤鬼魂”。LLM 栈的一切都不同(神经架构、训练数据、训练算法,尤其是优化压力),因此我们得到的情报空间中的实体完全不同,用动物的视角来思考它们是不合适的。从监督信号的角度看,人类神经网络优化的是部落在丛林中的生存,而 LLM 神经网络优化的是模仿人类的文本、在数学谜题中收集奖励,以及在 LM Arena 上获得人类点赞。由于可验证领域允许 RLVR,LLM 在这些领域附近的能力会“突增”,整体表现出有趣的锯齿状性能特征——它们同时是天才通才和困惑的、认知受限的小学生,随时可能被越狱技巧欺骗而泄露你的数据。

image

人类智能:蓝色,AI 智能:红色。我喜欢这个模因的这个版本(抱歉,我丢失了原帖在 X 上的引用),它指出了人类智能也以自己的方式是锯齿状的。

与此相关的是,我在 2025 年对基准测试的普遍冷漠和信任丧失。核心问题是,基准测试几乎本质上就是可验证环境,因此立即容易受到 RLVR 和其较弱形式(如合成数据生成)的影响。在典型的“benchmaxxing”过程中,LLM 实验室的团队不可避免地在基准测试占据的嵌入空间小区域附近构建环境,并生长出锯齿来覆盖它们。在测试集上训练成了一种新艺术形式。

碾压所有基准但仍未达到 AGI 会是什么样子?

我在此主题上写了更多内容:

3. Cursor / LLM 应用的新层级

Cursor 最值得注意的地方(除了它今年的迅猛崛起之外)是,它令人信服地揭示了“LLM 应用”的新层级——人们开始谈论“Cursor for X”。正如我在今年 Y Combinator 演讲中强调的(演讲稿 和 视频),像 Cursor 这样的 LLM 应用为特定垂直领域捆绑和编排 LLM 调用:

  1. 它们进行“上下文工程”

  2. 它们在底层编排多个 LLM 调用,串成越来越复杂的 DAG,仔细平衡性能和成本权衡。

  3. 它们为人类交互提供特定应用的 GUI

  4. 它们提供“自治滑块”

2025 年有很多讨论集中在这一新应用层级的“厚度”上。LLM 实验室会捕获所有应用,还是 LLM 应用有广阔的绿地?就我个人而言,我怀疑 LLM 实验室会倾向于培养通用能力的大学生,但 LLM 应用会通过提供私有数据、传感器和执行器以及反馈循环,来组织、微调并实际驱动它们成为特定垂直领域的专业部署团队。

4. Claude Code / 住在你电脑上的 AI

Claude Code(CC)是第一个令人信服的 LLM 代理演示——它以循环方式串联工具使用和推理来进行扩展问题解决。此外,CC 对我来说值得注意的地方在于,它运行在你的电脑上,与你的私有环境、数据和上下文一起。我认为 OpenAI 在这点上错了,因为他们将 codex / 代理努力集中在 ChatGPT 编排的云端容器部署上,而不是 localhost。虽然云端运行的代理群感觉像是“AGI 终局”,但我们生活在能力锯齿状的中间世界,起飞速度足够慢,因此简单地在电脑上运行代理,与开发者和他们的特定设置手拉手合作更有意义。CC 在优先顺序上做对了,并将其打包成美丽、简约、引人入胜的 CLI 形式因子,改变了 AI 的样子——它不再只是像 Google 那样的网站,而是一个“小精灵/鬼魂”,“住在”你的电脑上。这是与 AI 交互的新范式。

5. Vibe 编码

2025 年是 AI 跨越能力门槛的一年,使得人们可以通过英语构建各种令人印象深刻的程序,而忘记代码的存在。有趣的是,我在 这条推文 中创造了“vibe coding”这个术语,完全没想到它会传播这么远 :)。有了 vibe coding,编程不再严格限于高度训练的专业人士,任何人都能做。在这个意义上,它是我在《权力归于人民:LLM 如何颠覆技术扩散脚本》中写的另一个例子,说明(与以往所有技术形成鲜明对比)普通人从 LLM 中获益远多于专业人士、公司和政府。但 vibe coding 不仅赋能普通人接近编程,它还赋能训练有素的专业人士编写更多(vibe 编码的)原本不会被编写的软件。在 nanochat 中,我 vibe 编码了自己的自定义高效率 BPE 分词器,用 Rust 而不是采用现有库或深入学习 Rust。我今年 vibe 编码了许多项目,作为我想要存在的快速应用演示(例如参见 menugen、llm-council、reader3、hacker news 时间胶囊)。我还 vibe 编码了整个临时应用,只是为了找一个 bug,因为为什么不呢——代码突然变得免费、临时、可塑、用完即弃。Vibe 编码将重塑软件并改变职位描述。

6. Nano Banana / LLM GUI

Google Gemini Nano Banana 是 2025 年最令人惊叹、改变范式的模型之一。在我的世界观中,LLM 是类似于 1970s、1980s 等时代的计算机的下一个主要计算范式。因此,我们将看到类似原因驱动的类似创新。我们将看到个人计算、微控制器(认知核心)或代理互联网等的等价物等等。特别是就 UI/UX 而言,与 LLM“聊天”有点像在 1980s 向计算机控制台发出命令。文本是计算机(和 LLM)的原始/首选数据表示,但它不是人类的首选格式,尤其是输入。人们实际上不喜欢阅读文本——它缓慢且费力。相反,人们喜欢视觉和空间方式消费信息,这就是传统计算中发明 GUI 的原因。同样,LLM 应该用我们喜欢的格式与我们对话——图像、信息图、幻灯片、白板、动画/视频、网络应用等。当然,早期的和当前的版本是像 emoji 和 Markdown 这样的东西,它们是“打扮”和视觉布局文本的方式,用标题、粗体、斜体、列表、表格等让消费更轻松。但谁来实际构建 LLM GUI? 在这个世界观中,Nano Banana 是这种可能样子的早期暗示。而且重要的是,它不仅仅是图像生成本身,而是来自文本生成、图像生成和世界知识的联合能力,所有这些都纠缠在模型权重中。

37e84759c630018e9be706352da697dd


TLDR。 2025 年是 LLM 激动人心且有些意外的一年。LLM 正在新兴为一种新型智能,同时比我预期的聪明得多,也比我预期的笨得多。无论如何,它们极其有用,我认为行业甚至还没有实现它们当前能力潜力的 10%。同时,还有这么多想法可以尝试,从概念上讲,这个领域感觉非常开放。正如我今年在 Dwarkesh 播客 中提到的,我同时(表面上自相矛盾地)相信我们将看到快速且持续的进步,并且 还有很多工作要做。系好安全带。

我虽然行过死荫的幽谷,也不怕遭害,因为你与我同在。
诗篇 23:4

#2 ·

Andrej Karpathy's keynote on June 17, 2025 at AI Startup School in San Francisco

Software Is Changing (Again)

软件正在(再次)改变

Software 1.0 -> 3.0

大家好。

哇,这里人真多。你们好。

我今天很兴奋能来到这里,和大家谈谈人工智能时代的软件。我听说在座的很多人是学生——本科生、硕士生、博士生等等,你们即将步入行业。我认为,现在进入这个行业是一个极其独特且非常有趣的时机。根本原因在于,软件正在再次发生改变。

我说“再次”,是因为我其实已经做过这个演讲了。但问题是,软件一直在变,所以我总有新素材来做新的演讲。而且这次改变非常根本。我认为,大体上,软件在过去 70 年里,在如此根本的层面上并没有太大变化,然后在最近几年,它快速改变了大约两次。因此,有大量的工作要做,有大量的软件需要编写和重写。

让我们来看看软件的领域。如果把这个想象成软件的地图,这是一个叫“GitHub 地图”的很酷工具。这是所有已经被编写的软件——这些是指令计算机在数字空间中执行任务的代码。如果你放大看,这里是各种不同的仓库,这就是所有写过的代码。

几年前,我观察到软件正在改变,出现了一种新型软件,我当时称之为“Software 2.0”。想法是:Software 1.0 是你为计算机写的代码;Software 2.0 基本上是神经网络,特别是神经网络的权重。你不是直接写这些代码,而是更多地调整数据集,然后运行优化器来创建神经网络的参数。当时,神经网络被视为一种分类器,就像决策树之类的。所以这个框架当时显得更合适。现在,我们实际上有了 Software 2.0 领域的 GitHub 等价物——Hugging Face 基本上就是 Software 2.0 的 GitHub。还有 Model Atlas,你可以可视化那里写的所有代码。顺便说一句,中间那个巨大的点是 Flux 图像生成器的参数。每当有人在 Flux 模型上微调时,就相当于在这个空间里提交一个 git commit,创建一个不同的图像生成器。
image

所以,我们有:Software 1.0 是编程计算机的代码;Software 2.0 是编程神经网络的权重。这里是一个 AlexNet 图像识别神经网络的例子。

到最近为止,我们熟悉的所有神经网络基本上都是固定函数的计算机——比如图像到类别之类的。最近发生的变化——我认为是一个相当根本的变化——是神经网络通过大型语言模型变得可编程了。在我看来,这是一种全新的计算机,值得给它一个新名称:Software 3.0。基本上,你的提示(prompt)现在就是编程 LLM 的程序。而且非常引人注目的是,这些提示是用英语写的。这是一种非常有趣的编程语言。

简单总结区别:比如做情感分类,你可以想象写一些 Python 代码,或者训练一个神经网络,或者提示一个大型语言模型。这里是一个简短的提示,你可以想象改变它,以略微不同的方式编程计算机。所以我们有 Software 1.0、Software 2.0,现在我认为我们正在看到——你们可能见过很多 GitHub 代码不再只是代码,里面夹杂着大量英语——一种新的代码类别正在增长。不仅仅是一种新的编程范式,更令人惊奇的是,它是用我们的母语英语写的。

几年前,当这个想法让我震惊时,我发了条推文,这是我目前置顶的推文:令人惊奇的是,我们现在正在用英语编程计算机。

我在特斯拉时,我们在做自动驾驶(Autopilot),试图让汽车自己开车。我当时展示了一张幻灯片:汽车的输入在底部,通过软件栈产生转向和加速。我当时观察到,Autopilot 里有大量的 C++ 代码(这是 Software 1.0),还有一些做图像识别的神经网络。随着我们不断改进 Autopilot,神经网络的能力和规模在增长,同时所有 C++ 代码都被删除了。很多原本用 1.0 写的能力和功能被迁移到 2.0。例如,很多跨相机图像和跨时间的拼接信息由神经网络完成,我们删除了大量代码。所以 Software 2.0 栈实际上吞噬了 Autopilot 的软件栈。我当时觉得这很了不起,现在我们又在看到同样的事情:一种新型软件正在吞噬栈。我们有三种完全不同的编程范式。如果你即将进入行业,精通所有三种是个非常好的主意,因为它们各有优缺点。你可能想用 1.0、2.0 或 3.0 实现某些功能:是训练神经网络?只是提示 LLM?还是写明确的代码?我们都需要做这些决定,并且可能需要在这些范式之间流畅切换。

接下来我想先谈谈 LLM,以及如何思考这个新范式、生态系统——这个新计算机长什么样,生态系统是什么样的。我被安德鲁·吴很多年前的一句话打动(安德鲁接下来就要演讲了),他说“AI 是新电力”。我确实认为这捕捉到了很有趣的东西:LLM 确实有公用事业的特性。

LLM 实验室如 OpenAI、Google Gemini、Anthropic 等,它们投入资本支出训练 LLM,这相当于建设电网;然后有运营支出,通过 API 向我们提供智能,这是按百万 token 计费的计量访问。我们对这个 API 有很多像公用事业一样的要求:低延迟、高可用性、一致质量等。在电力中,你会有转移开关,可以在电网、太阳能、电池或发电机之间切换;在 LLM 中,我们有 OpenRouter,可以轻松切换不同类型的 LLM。因为 LLM 是软件,它们不争夺物理空间,所以可以有六个“电力供应商”,你可以随时切换。最近几天我们看到很多 LLM 宕机,大家就卡住了没法工作。当最先进的 LLM 宕机时,实际上就像全球智能褐变——行星变得更笨了。我们对这些模型的依赖已经很剧烈,而且还会继续增长。

image

但 LLM 不仅仅有公用事业的特性,也有一些晶圆厂(fab)的特性。因为训练 LLM 需要的资本支出非常大,技术树发展迅速,所以 LLM 实验室内部集中了很多深层技术、研发秘密。但这个比喻也有点模糊,因为这是软件,软件更易变通、更难防御。

我认为最贴切的比喻是:LLM 非常类似于操作系统。这不仅仅是电力或水这样的商品,而是越来越复杂的软件生态系统。生态系统的形成方式也很相似:有少数闭源提供者(如 Windows 或 macOS),然后有一个开源替代品(如 Linux)。对于 LLM,我们也有少数竞争的闭源提供者,而 Llama 生态目前可能最接近未来可能成长为 Linux 的东西。现在还很早,这些只是简单的 LLM,但我们开始看到它们会变得更复杂——不仅仅是 LLM 本身,还有工具使用、多模态等。

我曾经试着画过这个:LLM 就像一个新操作系统,LLM 相当于 CPU,上下文窗口相当于内存,LLM 在用这些能力协调内存和计算来解决问题,看起来很像操作系统。还有一些类比:你可以把一个应用(如 VS Code)下载下来,在 Windows、Linux 或 Mac 上运行;同样,你可以把一个 LLM 应用(如 Cursor)在 GPT、Claude 或 Gemini 上运行,只是下拉菜单切换。

image

我们现在有点像 1960 年代:LLM 计算还很昂贵,这迫使 LLM 集中在云端,我们都是瘦客户端,通过网络交互,没有人能完全利用这些计算机,所以使用分时(time-sharing)有意义——我们都是批处理中的一个维度。这很像当时的计算机:操作系统在云端,一切通过网络传输,有批处理。个人计算革命还没发生,因为不经济。但有些人已经在尝试,比如 Mac Mini 很适合一些 LLM 的批处理 1 推理(全是内存绑定)。这些可能是个人计算的早期迹象,但还不清楚会是什么样子,也许你们有人会发明它。

image

另一个类比:当我直接用文本和 ChatGPT 或其他 LLM 对话时,我感觉像通过终端直接和操作系统对话。目前还没有真正通用的 GUI——聊天只是文本气泡。有些应用有 GUI,但没有跨所有任务的通用 GUI。

LLM 在某些方面与早期计算和操作系统有独特不同。我写过一篇关于这个特性的文章:LLM 颠倒了技术扩散的方向。通常新技术(如电力、密码学、计算、飞行、互联网、GPS)先被政府和企业采用,因为新且贵,后来才扩散到消费者。但 LLM 是反过来的:最早用的是怎么煮鸡蛋之类的。这很吸引人——我们有了一个神奇的新计算机,它在帮我煮鸡蛋,而不是帮政府做军事弹道计算。企业和政府其实在采用上落后于我们普通人。

总结到现在:LLM 实验室生产 LLM,这是一种准确的说法,但 LLM 是复杂的操作系统;它们处于计算的 1960 年代,我们正在重新做一遍计算;目前通过分时和公用事业方式提供。全新且前所未有的是,它们不在少数政府和企业手中,而在我们所有人手中——因为我们都有电脑,这只是软件,ChatGPT 瞬间被传送到数十亿人的电脑上。这太疯狂了。现在是我们进入行业并编程这些计算机的时候。

部分自治

在编程 LLM 之前,我们需要花点时间思考它们是什么。我特别喜欢谈它们的“心理学”。

LLM 就像有心理的人——它们会“走神”、会犯错。所以在构建时,要把人类放在循环中:生成 - 验证 循环要非常快。提示要具体,避免模糊导致验证失败。很多时候,我们需要中间产物来约束 AI,比如在教育中,先让老师创建课程(可审计),再让 AI 根据课程教学生,这样 AI 就被“拴住”了,不会走偏。

我对部分自治不陌生——我在特斯拉做了五年自动驾驶。这也是部分自治产品。仪表盘里有 Autopilot 的 GUI,显示神经网络看到的画面,还有自治滑块——我们逐渐让系统为用户做更多事。我第一次体验自动驾驶是 2013 年,在 Waymo 的车上绕帕洛阿尔托开了 30 分钟,完美无干预。那时我觉得自动驾驶马上就来了。但 12 年后的今天,我们还在努力。Waymo 看起来无司机,但还有大量遥操作和人类干预。我们还没真正解决这个问题,但肯定会成功,只是花了很长时间。软件很棘手,驾驶很棘手。所以当有人说“2025 是 Agent 之年”时,我很担心——这应该是“Agent 之十年”。我们需要人类在循环中,要小心,这是软件。

我喜欢《钢铁侠》的比喻:战衣既是增强(Tony Stark 能控制),也是 Agent(有时能自主飞行)。我们有自治滑块。目前阶段,用不可靠的 LLM,更多是建“钢铁侠战衣”而不是“机器人”:建部分自治产品,有自定义 GUI 和 UI/UX,让人类的生成 - 验证循环极快。但不要忘记原则上可以自动化,要有自治滑块,思考如何逐步滑动它。

image

另一个独特维度:编程语言是英语,突然每个人都是程序员了,因为每个人都会说自然语言。这非常乐观、前所未有。以前需要 5-10 年学习才能在软件领域做点事,现在不是了。

“Vibe coding”(氛围编码)——用自然语言描述想法,让 AI 生成代码——成了大梗。孩子们在用它编程,这很健康,是软件开发的入门药。我自己也试了:我建了一个 iOS app(我不会 Swift),一天就跑起来了;还建了 menu.app——拍菜单照片,生成菜品图片(现在是我的主要成本中心,我亏了不少钱)。

有趣的是,代码部分很容易,最难的是让它“真实”:认证、支付、域名、部署。这些是 DevOps,在浏览器里点来点去,极慢。文档告诉我“去这个 URL,点这个下拉,选择这个……”——计算机在告诉我该点什么,为什么不是它自己做?

image

所以,最后一部分:我们能不能直接为 Agent 建东西?我不想做这些点击,能让 Agent 做吗?

现在有了一种新的数字信息消费者和操纵者:以前是人类通过 GUI,或计算机通过 API。现在有 Agent——它们像人一样的人形灵魂在互联网上。我们能不能为它们构建基础设施?

例如:robots.txt 告诉爬虫如何行为;可以有 lm.txt,用简单 markdown 告诉 LLM 这个域名是干什么的。很多文档是为人类写的(列表、粗体、图片),LLM 难读。一些服务开始提供 LLM 专用文档(Vercel、Stripe),用 markdown。文档里“点击这里”对 LLM 没用,要换成 curl 命令。Anthropic 的 Model Context Protocol 也是直接对 Agent 说话的协议。

image

image

还有一些小工具让数据对 LLM 友好:把 github.com 改成 get-ingest.com,就能得到所有文件拼接的纯文本;Deep Wiki 让 AI 分析 repo 生成文档。

image
image

即使未来 LLM Agent 能自己点击,我们还是值得迎上前半步——让信息更容易访问,因为视觉/点击仍昂贵且易错。

总结:进入行业的好时机。我们需要重写海量代码——专业程序员和“氛围编码者”都会写。LLM 像公用事业、像晶圆厂,但尤其像操作系统——现在是它们的 1960 年代。它们是会出错的人形灵魂,我们要学会与它们合作,调整基础设施。构建 LLM 应用时,要让生成 - 验证循环极快,创建部分自治产品,也要直接为 Agent 写代码。

回到钢铁侠比喻:未来十年,我们会把滑块从左(增强)滑到右(Agent)。我迫不及待想和你们一起构建它。

image
image

谢谢大家。

我虽然行过死荫的幽谷,也不怕遭害,因为你与我同在。
诗篇 23:4

💯️❤️
2
mod #3 ·

@tension 一起来学习

年月擦身过,暂且问,会更好吗?

#4 ·

软件正在再次改变,而我们在召唤幽灵——Andrej Karpathy 对话

软件范式的三次变革

Q:你提到软件正在经历根本性的变化,能具体说说这种变化是什么吗?

我非常激动能在这里和大家谈论 AI 时代的软件。我知道在座的很多是本科生、硕士生、博士生,你们即将进入这个行业,而我认为现在进入这个行业是一个极其独特且有趣的时刻。根本原因在于,软件正在再次改变。我说"再次",是因为我其实已经做过一次这个演讲了,但问题是软件一直在变,所以我总有新的素材可以讲。我认为软件在大约七十年的时间里并没有在如此根本的层面上发生过变化,但在过去几年里,它已经快速改变了大约两次。所以有大量的工作要做,有大量的软件需要编写和重写。

如果我们把 GitHub 地图看作软件的世界地图——这是一个非常酷的工具,叫"GitHub 地图"——你能看到所有被编写出来的软件,这些都是给计算机下达的指令,用于在数字空间中执行任务。当你放大看,你会看到各种各样的仓库,这就是所有被写出来的代码。几年前我观察到软件正在发生变化,出现了一种新型的软件,我把它叫做"软件 2.0"。这个想法是:软件 1.0 是你为计算机编写的代码;软件 2.0 是神经网络,特别是神经网络的权重。你不是直接编写这些代码,而是更多地调整数据集,然后运行一个优化器来创建神经网络的参数。当时神经网络被视为一种不同的分类器,就像决策树之类的东西,所以我认为这个框架在当时更加恰当。现在我们实际上有了软件 2.0 领域中 GitHub 的等价物,我认为 Hugging Face 基本上就是软件 2.0 的 GitHub。还有 Model Atlas,你可以在那里可视化所有被编写的"代码"。顺便说一下,如果你好奇的话,那个巨大的圆圈、中间的点,那些是 Flux 图像生成器的参数。任何时候有人在 Flux 模型上微调,你基本上就是在这个空间中创建了一个"git commit",你就创造了一种不同的图像生成器。

所以基本上,软件 1.0 是编程计算机的代码,软件 2.0 是编程神经网络的权重。这里有一个 AlexNet 图像识别神经网络的例子。到目前为止,我们所熟悉的所有神经网络都是某种固定函数的计算机,比如图像到类别的映射之类的。而我认为发生了变化——而且是一个相当根本的变化——是神经网络变得可以被编程了,特别是通过大语言模型。我把这视为全新的、独特的东西,这是一种新型计算机,所以在我看来值得给它一个新的命名——"软件 3.0"。基本上,你的提示词(prompt)现在是编程 LLM 的程序。值得注意的是,这些提示词是用英语写的,所以这是一种非常有趣的编程语言。

Q:你能用一个具体例子来说明这三种范式的区别吗?

如果你做情感分类,比如你可以写一些 Python 代码来做情感分类,或者你可以训练一个神经网络,或者你可以提示一个大语言模型。这里只需要几个简短的提示,你可以想象改变它们,以稍微不同的方式编程计算机。所以我们有了软件 1.0、软件 2.0,然后我认为我们正在看到——也许你们已经注意到——很多 GitHub 代码不再只是代码了,有很多英语穿插在代码中间,所以我认为有一类新的代码正在增长。这不仅是一种新的编程范式,而且让我觉得非凡的是,它使用的是我们的母语英语。当这个想法几年前震撼到我的时候,我发了一条推文,我觉得它引起了很多人的注意,这是我目前置顶的推文——令人惊叹的是,我们现在正在用英语编程计算机。

我在特斯拉工作的时候,我们在做自动驾驶,我们试图让车行驶。我当时展示了一张幻灯片,你可以想象汽车的输入在底部,它们通过一个软件栈来产生转向和加速。我观察到当时自动驾驶中有大量的 C++ 代码,这是软件 1.0 的代码,然后里面有一些神经网络在做图像识别。我观察到,随着我们让自动驾驶变得更好,基本上神经网络在能力和规模上都在增长,此外所有的 C++ 代码都在被删除,很多最初用 1.0 编写的功能和能力都被迁移到了 2.0。举个例子,跨不同摄像头图像和跨时间的信息缝合工作都是由神经网络完成的,我们能够删除大量代码。所以软件 2.0 的栈确实在"吃掉"自动驾驶的软件栈。我当时觉得这非常了不起,而我认为我们正在再次看到同样的事情——我们有了新型软件,它正在吞噬整个栈。我们现在有三种完全不同的编程范式,我认为如果你要进入这个行业,精通所有三种范式是非常好的主意,因为它们各有优缺点。你可能想用 1.0 或 2.0 或 3.0 来编程某些功能。你是要训练神经网络?还是要直接提示 LLM?还是应该写一段明确的代码?我们都必须做这些决定,并且可能需要在这些范式之间流畅地切换。

LLM:一种新型操作系统

Q:你提到 LLM 具有公用事业的特性,这是什么意思?

Andrew Ng 很多年前说过一句让我印象深刻的话,他说"AI 是新的电力"。我确实认为这句话捕捉到了某些非常有趣的东西,因为 LLM 目前确实具有公用事业的特性。LLM 实验室——像 OpenAI、Gemini、Anthropic 等——它们花费资本支出来训练 LLM,这相当于建设电网;然后有运营支出来通过 API 向所有人提供这种智能,这通过计量访问完成,我们按每百万个 token 付费之类的。我们有很多非常像公用事业的需求——我们要求低延迟、高正常运行时间、一致的质量等等。在电力领域,你有转换开关,可以从电网切换到太阳能、电池或发电机。在 LLM 领域,我们也许有 OpenRouter,可以轻松地在不同类型的 LLM 之间切换。因为 LLM 是软件,它们不竞争物理空间,所以基本上可以同时有六个"电力供应商",你可以在它们之间切换,因为它们不以如此直接的方式竞争。还有一件很有趣的事情——我们在前几天看到了——很多 LLM 宕机了,人们被卡住了,无法工作。我觉得当最先进的 LLM 宕机时,这实际上就像世界上的"智能断电"。就像电网电压不稳定一样,我们对这些模型的依赖越大,当它们宕机时,整个星球就变得越"笨"。这种依赖已经非常戏剧性了,我认为还会继续增长。

但 LLM 不仅仅具有公用事业的特性。我认为也可以说它们具有晶圆厂的一些特性。原因是建造 LLM 所需的资本支出实际上相当大,不仅仅是建一个发电站之类的。你在投入大量资金,技术树在快速增长。所以我们处于一个拥有深度技术树、研发秘密集中在 LLM 实验室内部的世界。但我觉得这个类比也有点模糊,因为正如我所提到的,这是软件,软件的可防御性稍差,因为它太有可塑性了。还有很多类比可以做,比如 4 纳米制程节点可能就像具有特定最大浮点运算量的集群。你可以想象当你使用 Nvidia GPU 只做软件不做硬件时,那有点像无晶圆厂模式。但如果你实际上也在建造自己的硬件,如果你是谷歌在 TPU 上训练,那有点像英特尔模式,你拥有自己的晶圆厂。

Q:但你说最恰当的类比是操作系统?

实际上我认为最恰当的类比是,在我看来,LLM 与操作系统有很强的类比。这不仅仅是电力或水,不是从水龙头流出来的商品。这些是越来越复杂的软件生态系统,不仅仅是像电力这样的简单商品。有趣的是,生态系统的形成方式非常相似——你有几个闭源提供商,像 Windows 或 MacOS,然后你有开源替代品,像 Linux。我认为对于 LLM 也是如此,我们有几个竞争的闭源提供商,然后也许 Llama 生态系统目前是 Linux 的最接近近似。同样,我认为仍然非常早期,因为这些只是简单的 LLM,但我们开始看到它们会变得更加复杂。不仅仅是 LLM 本身,还有所有的工具使用和多模态性,以及所有这些如何运作。

当我有了这个认识的时候,我试着画了出来,在我看来,LLM 就像一个新的操作系统。LLM 是一种新型计算机,它就坐在那里,有点像 CPU 的等价物。上下文窗口有点像内存,然后 LLM 编排内存和计算来解决问题,使用所有这些能力。如果你看它,从那个角度来看非常像操作系统。还有更多类比。比如,如果你想下载一个应用,比如我去 VS Code 下载,你可以下载 VS Code,你可以在 Windows、Linux 或 Mac 上运行它,同样你也可以拿一个 LLM 应用,比如 Cursor,你可以在 GPT、Claude 或 Gemini 系列上运行它,它就是一个下拉选项。

另一个让我印象深刻的类比是,我们有点像处于 1960 年代的时代,LLM 计算对于这种新型计算机来说仍然非常昂贵,这迫使 LLM 集中在云端,我们都只是某种瘦客户端,通过网络与之交互。我们没有人充分利用这些计算机,因此使用分时共享是有意义的——我们都只是批次中的一个维度,当他们在云端运行计算机的时候。这与过去计算机的样子非常相似。操作系统在云端,一切都被流式传输,有批处理。所以个人计算革命还没有发生,因为它在经济上不合理。但我觉得有些人正在尝试。事实证明,Mac Mini 对一些 LLM 来说是非常好的匹配,因为如果你做 batch 为 1 的推理,这完全是内存受限的,所以这实际上可行。这些是个人计算的早期迹象,但这还没有真正发生,不清楚这会是什么样子。也许你们中的一些人会发明这是什么、如何运作、或者应该是什么。

还有一个类比我想提一下:每当我通过文字直接与 ChatGPT 或某个 LLM 交谈时,我感觉我在通过终端与操作系统交谈。就是文字,直接访问操作系统。我认为 GUI 还没有被真正发明出来——ChatGPT 应该有一个不同于文字气泡的 GUI 吗?当然,我们稍后要谈到的一些应用有 GUI,但没有一个跨所有任务的 GUI。

LLM 的"心理学"

Q:在编程 LLM 之前,你说我们需要理解它们的"心理学",这是什么意思?

我喜欢把 LLM 想象成某种"人的灵魂"。它们是人的随机模拟。这里的模拟器恰好是自回归 Transformer。Transformer 是一种神经网络,它在 token 层面工作,一个 chunk 一个 chunk 地处理,每个 chunk 几乎有相同的计算量。这个模拟器当然涉及一些权重,我们在互联网上的所有文本上拟合它,最后得到这种模拟器。因为它是在人类上训练的,它具有一种类似人类的涌现心理学。

首先你会注意到,LLM 当然有百科全书式的知识和记忆。它们能记住很多东西,比任何单个人类都多,因为它们读了太多东西。这让我想起《雨人》这部电影,我强烈推荐大家看。达斯汀·霍夫曼在里面扮演一个有自闭症的学者,他几乎有完美的记忆。他能读一本电话簿,记住所有的名字和电话号码。我觉得 LLM 非常类似,它们能记住 SHA 哈希和各种各样的东西。所以它们在某些方面确实有超能力。

但它们也有一堆我所说的认知缺陷。它们会产生大量幻觉,会编造东西,没有很好的自我认知内部模型,至少不够充分。这已经改善了但还不完美。它们表现出参差不齐的智能——在某些问题领域会超越人类,然后它们会犯基本上没有人类会犯的错误,比如坚持 9.11 大于 9.9,或者 strawberry 里有两个 r,这些是一些著名的例子。基本上有一些粗糙的边缘会让你绊倒。

它们还患有某种"顺行性遗忘症"。我的意思是,如果你有一个同事加入你的组织,这个同事会随着时间了解你的组织,获得大量关于组织的上下文,他们回家睡觉,巩固知识,随着时间发展专业知识。LLM 天生不会这样做,这在 LLM 的研发中还没有真正被解决。上下文窗口真的就像工作记忆,你必须非常直接地编程工作记忆,因为它们不会默认变得更聪明。在流行文化中,我推荐大家看《记忆碎片》和《初恋五十次》。在这两部电影中,主角的权重是固定的,他们的上下文窗口每天早上都会被清除,当这种情况发生时去工作或建立关系真的很有问题,而这种情况一直在发生。

还有一个关于安全的考虑。例如,LLM 相当容易受骗,它们容易受到提示注入风险的影响,可能会泄露你的数据等等。所以简单来说,你必须同时思考这个超越人类但又有一堆认知缺陷和问题的东西。我们如何编程它们,如何绕过它们的缺陷,同时享受它们的超人类力量?

LLM 技术扩散的逆转

Q:你提到 LLM 颠倒了技术扩散的方向,能解释一下吗?

这是我认为这次非常不同的一个特性。通常,在技术中——比如电力、密码学、计算、飞行、互联网、GPS——很多新的变革性技术,通常是政府和企业是第一批用户,因为它是新的、昂贵的等等,然后才后来扩散到消费者。但我觉得 LLM 是颠倒过来的。也许对于早期计算机,一切都是关于弹道学和军事用途,但对于 LLM,一切都是关于如何煮鸡蛋之类的。这确实是我的很多使用场景。所以我觉得非常有趣的是,我们有了一台神奇的计算机,它在帮我煮鸡蛋,而不是帮助政府做一些疯狂的事情,比如军事弹道学或某种特殊技术。确实,企业和政府在采用这些技术方面落后于我们所有人。这完全是反过来的,我认为这可能会影响我们如何使用这项技术,或者第一批应用在哪里。

总结一下到目前为止:LLM 实验室、LLM——我认为这是准确的语言——但 LLM 是复杂的操作系统。它们处于计算的 1960 年代左右,我们正在从头开始重做计算。它们目前通过分时共享和像公用事业一样分发。新且前所未有的是,它们不在少数政府和企业手中,它们在我们所有人手中,因为我们都有计算机,这一切都是软件,ChatGPT 被传送到我们的计算机上——数十亿人——像瞬间、一夜之间,这太疯狂了。现在轮到我们进入这个行业来编程这些计算机了。

部分自主性应用

Q:你认为最大的机会在哪里?

我想谈的第一件事是我所说的"部分自主性应用"。以编码为例,你当然可以直接去 ChatGPT,开始复制粘贴代码、粘贴 bug 报告之类的,然后获取代码再复制粘贴。但你为什么要这样做?为什么要直接去操作系统?有一个专门的应用要有意义得多。我认为你们中很多人使用 Cursor,我也是。Cursor 是你真正想要的东西,你不想直接去 ChatGPT。我认为 Cursor 是一个很好的早期 LLM 应用的例子,它具有一堆我认为在所有 LLM 应用中都有用的特性。

首先你会注意到,我们有一个传统界面,允许人类手动完成所有工作,就像以前一样。但除此之外,我们现在有了这个 LLM 集成,允许我们以更大的块来处理。所以我认为的一些共享且有用的 LLM 应用特性:第一,LLM 基本上做了大量的上下文管理。第二,它们编排对 LLM 的多次调用。在 Cursor 的情况下,底层有你所有文件的嵌入模型、实际的聊天模型、将差异应用到代码的模型,这些都为你编排好了。

另一个我认为可能没有被充分重视的是应用特定的 GUI 及其重要性。你不想只是通过文字直接与操作系统交谈。文字很难阅读、解释和理解,而且你不想在文字中原生执行某些操作。所以看到一个 diff 作为红绿色的变化要好得多,你可以看到什么被添加了、什么被删除了。只是按 Cmd+Y 接受或 Cmd+N 拒绝要容易得多,我不应该用文字输入它。所以 GUI 允许人类审计这些有缺陷系统的工作,并且更快地操作。

最后一个我想指出的特性是我所说的"自主性滑块"。例如在 Cursor 中,你可以只做 tab 补全,你主要掌控。你可以选择一段代码然后 Cmd+K 只改变那段代码。你可以 Cmd+L 改变整个文件。或者你可以 Cmd+I,让它放开手脚,在整个仓库中做任何它想做的事,那就是完全自主的 agent 版本。所以你掌控着自主性滑块,根据手头任务的复杂性,你可以调整你愿意为该任务放弃的自主程度。

再展示一个相当成功的 LLM 应用的例子——Perplexity。它也有非常类似的特性。它打包了很多信息,编排多个 LLM,有一个 GUI 允许你审计它的一些工作,比如它会引用来源,你可以想象检查它们。它也有自主性滑块——你可以做快速搜索,或者做研究,或者做深度研究然后十分钟后回来。这些都是你给工具的不同级别的自主权。

我的问题是:我觉得很多软件会变得部分自主。我在想那是什么样子。对于你们中维护产品和服务的人来说,你们如何使你们的产品和服务变得部分自主?LLM 能看到人类能看到的一切吗?LLM 能以人类可以行动的所有方式行动吗?人类能监督并保持在这个活动的循环中吗?因为再次强调,这些是有缺陷的系统,还不完美。在 Photoshop 中 diff 是什么样的?传统软件现在有所有为人类设计的开关和东西,所有这些都必须改变,变得对 LLM 可访问。

生成 - 验证循环与"牵住 AI 的绳子"

Q:在人与 AI 协作中,你认为最重要的是什么?

我想强调的一点是,在很多这些 LLM 应用中,我们现在与 AI 合作,通常是它们做生成,我们人类做验证。使这个循环尽可能快地运转符合我们的利益。有两种主要方式可以做到这一点。第一,你可以大幅加速验证。我认为 GUI 对此非常重要,因为 GUI 利用了我们所有人头脑中的计算机视觉 GPU。阅读文字是费力的、不好玩的,但看东西是好玩的,它是通往大脑的高速公路。所以 GUI 对于审计系统和视觉表征非常有用。

第二,我会说我们必须让 AI 保持"在绳子上"。我认为很多人对 AI agent 过于兴奋。对我来说,收到一个对我仓库的 10000 行代码的 diff 是没有用的。我仍然是瓶颈,即使那 10000 行瞬间出来了,我必须确保这个东西没有引入 bug,确保它做了正确的事情,没有安全问题等等。所以基本上我们必须让这两个的流动非常快,我们必须以某种方式让 AI 保持在绳子上,因为它变得太过度反应了。

这就是我在做 AI 辅助编码时的感受。如果我只是在 vibe coding,一切都很好很棒,但如果我实际上试图完成工作,有一个过度反应的 agent 做所有这些事情就不太好了。在我自己的工作中,我总是害怕收到太大的 diff。我总是以小增量块进行。我想确保一切都好,我想非常快地旋转这个循环。我在单个具体事物的小块上工作。

我还看到了一些博客文章试图开发使用 LLM 的最佳实践。有一个我最近读的相当好的。它讨论了一些技术,其中一些与如何让 AI 保持在绳子上有关。例如,如果你的提示模糊,那么 AI 可能不会完全按照你想要的做,验证会失败。如果验证失败,你就会开始打转。所以花更多时间使你的提示更具体要合理得多,这增加了成功验证的概率,你可以继续前进。

在我自己的工作中,我目前也对教育在有了 AI 和 LLM 之后是什么样子很感兴趣。我花了大量思考如何让 AI 保持在绳子上。我不认为去 Chat 说"嘿,教我物理"就行了。因为 AI 会在树林里迷路。所以对我来说,这实际上是两个独立的应用。例如,有一个给教师创建课程的应用,然后有一个接收课程并向学生提供服务的应用。在两种情况下,我们现在有了一个中间工件——课程——它是可审计的,我们可以确保它是好的、一致的,AI 被保持在特定大纲、特定项目进程的绳子上。这是让 AI 保持在绳子上的一种方式,我认为它更有可能成功,AI 不会在树林里迷路。

自动驾驶的启示:自主性需要时间

Q:你在特斯拉工作了五年,这段经历对你看待 AI 自主性有什么影响?

我对部分自主性并不陌生,我在特斯拉做了大约五年。自动驾驶也是一个部分自主性产品,具有很多相同的特性。比如,仪表板那里就是自动驾驶的 GUI,它向我展示神经网络看到的东西。我们有自主性滑块,在我任职期间,我们为用户做了越来越多的自主任务。

也许我想简短地讲一个故事。我第一次乘坐自动驾驶汽车是在 2013 年,我有一个在 Waymo 工作的朋友,他提出载我在帕洛阿尔托兜风。我用当时的 Google Glass 拍了了一张照片,你们中很多人可能太年轻了,不知道那是什么。我们上了车,在帕洛阿尔托的高速公路和街道上开了大约 30 分钟。这次驾驶是完美的,零干预,这是 2013 年,距今已经 12 年了。当时当我有了这次完美的驾驶、完美的演示时,我觉得自动驾驶即将到来,因为这就能用,这太不可思议了。但 12 年后的今天,我们仍然在研究自主性。我们仍然在研究驾驶 agent,即使现在我们也还没有真正解决这个问题。你可能看到 Waymo 的车在路上跑,看起来无人驾驶,但仍然有很多远程操作,很多人类在驾驶循环中。我们甚至还没有宣布成功。我认为它最终肯定会成功,但就是花了很长时间。

我认为软件就像驾驶一样棘手。当我看到"2025 年是 agent 之年"这样的说法时,我非常担心。我觉得这是 agent 的十年,这需要相当长的时间。我们需要人在循环中,我们需要谨慎地做这件事。这是软件,让我们认真一点。

另一个我一直思考的类比是钢铁侠战衣。我一直很喜欢钢铁侠,我觉得它在很多方面对技术和它将如何发展是非常正确的。我喜欢钢铁侠战衣的地方在于,它既是增强——Tony Stark 可以驾驶它——也是 agent。在一些电影中,钢铁侠战衣相当自主,可以飞去找 Tony 之类的。所以这就是自主性滑块——我们可以建造增强,也可以建造 agent,我们想两者都做。但在现阶段,与有缺陷的 LLM 一起工作,我会说少建钢铁侠机器人,多建钢铁侠战衣。少建自主 agent 的华丽演示,多建部分自主性产品。这些产品有自定义的 GUI 和 UI/UX,我们试图让人类的生成 - 验证循环非常非常快。但我们没有失去一个事实:原则上自动化这项工作是可能的。你的产品中应该有一个自主性滑块,你应该思考如何滑动它,使你的产品随着时间变得更加自主。

Vibe Coding:人人都是程序员

Q:你创造了"vibe coding"这个词,能谈谈这个现象吗?

我想切换到另一个我认为非常独特的维度。不仅有一种新类型的编程语言允许软件中的自主性,而且正如我提到的,它是用英语编程的,这是自然的界面,突然之间每个人都是程序员,因为每个人都说像英语这样的自然语言。这极其令人兴奋,对我来说非常有趣,也完全史无前例。以前你需要花五到十年学习某些东西才能在软件中做些事情,现在不再是这样了。

我不确定在座的有没有人听说过 vibe coding。这就是引入这个概念的那条推文,但据说这现在是一个主要的 meme。关于这个的有趣故事是,我在 Twitter 上待了大约 15 年了,我仍然完全不知道哪条推文会病毒式传播,哪条会无人问津。我以为这条推文会是后者,它只是一个淋浴时的想法。但它变成了一个完全的 meme,我真的无法预测。但我想它触动了人们的某根弦,它为每个人都在感受但无法用语言表达的东西命名了。所以现在有一个维基百科页面了。

Tom Wolf 从 Hugging Face 分享了一个我非常喜欢的视频。这些是孩子们在 vibe coding。我觉得这是一个非常温馨的视频。你怎么看这个视频会对未来感到悲观?未来很棒。我认为这将成为软件开发的入门毒品。我对这一代人的未来不悲观。

我也尝试了一些 vibe coding,因为它太好玩了。当你想构建一个非常非常定制的东西、似乎不存在的东西、你只是想在一个周六随便搞搞的时候,vibe coding 太棒了。我构建了一个 iOS 应用,我实际上不会 Swift 编程,但我非常震惊我能构建一个非常基础的应用。这只是一天的工作,那天晚些时候它就在我的手机上运行了。我不得不读五天的 Swift 才能开始之类的情况没有出现。

我还 vibe coding 了一个叫 MenuGen 的应用。这是上线的,你可以在 menu.app 上试用。我基本上有这个问题:我到一家餐厅,读菜单,完全不知道上面写的任何东西是什么,我需要图片。所以这个东西不存在,我就说"嘿,我要 vibe coding 它"。你到 menu.app,拍一张菜单的照片,然后 MenuGen 生成图像,每个人注册时获得 5 美元的免费额度。因此这是我生活中的一个主要成本中心,这对我来说是一个负收入应用,我在 menu 上亏了很多钱。

但关于 MenuGen 对我来说最有趣的是,vibe coding 的部分——代码——实际上是 vibe coding 中容易的部分。大部分实际上是我试图让它变得真实的时候,这样你可以有身份验证、支付、域名、Vercel 部署。这真的很难,所有这些都不是代码,所有这些 DevOps 的东西都是我在浏览器中点击,这是极度的"slop",又花了一周。所以非常有趣的是,我在笔记本电脑上几个小时就有了 MenuGen 的演示可以工作,然后因为我试图让它变得真实,花了一周。原因是这真的很烦人。例如,如果你试图在你的网页上添加 Google 登录,我知道这很小,但大量的这个 Clerk 库的指令告诉我如何集成这个。它告诉我"去这个 URL,点击这个下拉菜单,选择这个,去那里,点击那个"。它在告诉我做什么。就像一台计算机在告诉我应该采取的行动。你来做啊。为什么是我在做?我不得不遵循所有这些指令,这太疯狂了。

为 Agent 而构建

Q:所以你认为我们需要为 agent 重新构建基础设施?

因此我演讲的最后一部分集中在:我们能不能直接为 agent 构建?我不想做这些工作,agent 能做吗?

大致来说,我认为有一类新的数字信息消费者和操纵者。以前只是人类通过 GUI 或计算机通过 API。现在我们有了一个全新的东西——agent 是计算机,但它们是类人的,它们是"人的灵魂",互联网上有人类的灵魂,它们需要与我们的软件基础设施交互。我们能是为它们构建吗?这是一个新事物。

举个例子,你可以在你的域名上有 robots.txt,你可以指导或建议网络爬虫在你的网站上如何表现。同样,你可以有一个 llm.txt,这只是一个简单的 markdown,告诉 LLM 这个域名是关于什么的。这对 LLM 来说非常可读。如果它必须获取你网页的 HTML 并尝试解析它,这非常容易出错和困难,它会搞砸,不会工作。所以我们可以直接对 LLM 说话,这是值得的。

大量的文档目前是为人写的。你会看到列表、加粗和图片之类的东西,这些不能被 LLM 直接访问。所以我看一些服务现在正在将他们的文档转换为专门给 LLM 的。例如 Vercel 和 Stripe 是这里的早期行动者,但我已经看到了更多。它们以 markdown 格式提供文档。Markdown 对 LLM 来说非常容易理解,这很好。

也许一个来自我自己经历的简单例子。也许你们中有些人知道 3Blue1Brown,他在 YouTube 上制作美丽的动画视频。他写了 Manim,我想自己做。有关于如何使用 Manim 的大量文档,我不想实际通读它。所以我把整个东西复制粘贴到一个 LLM,描述了我想要什么,它直接就能用——LLM 给我 vibe coding 了一个动画,正是我想要的。如果我们能让文档对 LLM 可读,它将解锁大量的使用。

另一件我想指出的事情是,不幸的是你不仅仅要把文档变成 markdown 格式。那只是容易的部分。我们实际上必须改变文档,因为任何时候你的文档说"点击",这就是坏的。LLM 目前无法原生地采取这个行动。所以例如,Vercel 正在用等价的 curl 命令替换每个"点击"的出现,你的 LLM agent 可以代替你执行。然后当然还有 Anthropic 的 Model Context Protocol,这也是另一种直接与 agent 说话的方式,作为这种新的数字信息消费者和操纵者。

我还真的很喜欢这里和那里的一些小工具,帮助以非常 LLM 友好的格式摄入数据。例如,当我去一个 GitHub 仓库,比如我的 nanoGPT 仓库,我不能把它喂给 LLM 问问题,因为这是一个人类界面上的 GitHub。所以当你把 URL 从 github 改成 gitingest,它实际上会把所有文件连接成一个巨大的文本,创建一个目录结构之类的。这就准备好被复制粘贴到你最喜欢的 LLM 了。也许更戏剧性的例子是 DeepWiki,它不仅仅是这些文件的原始内容。Devon 基本上对 GitHub 仓库做分析,为你的仓库构建整个文档页面,你可以想象这更有助于复制粘贴到你的 LLM 中。我喜欢所有这些小工具,你只需改变 URL,就使某些东西对 LLM 可访问。

还有一点我想说:在未来,完全有可能——这甚至不是未来,这是今天——LLM 将能够四处点击之类的东西。但我仍然认为让 LLM 走一半路是非常值得的,使它们更容易访问所有这些信息,因为这仍然相当昂贵,使用困难得多。我确实认为很多软件会有一个长尾,这些应用不会去适配,因为这些不是活跃的玩家或仓库或数字基础设施,我们将需要这些工具。但对于其他所有人,我认为在某个中间点会合是非常值得的。

这是 Agent 的十年,不是 Agent 之年

Q:你为什么说这将是"agent 的十年"而不是"agent 之年"?

首先感谢邀请。你提到的那句话——"这是 agent 的十年"——实际上是对一个已经存在的引用的反应。我不太确定谁说的,但他们暗示这是 agent 之年,关于 LLM 如何进化。我被这句话触发了,因为行业里有一些过度预测。在我看来,更准确的描述是这是 agent 的十年。我们有一些非常早期的 agent,极其令人印象深刻,我每天都在使用——Claude 和 Codex 之类的——但我仍然觉得有太多工作要做。我的反应是我们将与这些东西合作十年。它们会变得更好,那将是美好的。我只是在对其时间线含义做出反应。

Q:你认为需要十年才能完成什么?瓶颈在哪里?

实际上是让它工作。当你谈论 agent,或者实验室们心中的想法,也许也是我心中的想法,你应该把它想象成你雇佣的一个员工或实习生来与你一起工作。例如,你与这里的一些员工一起工作。你什么时候会希望一个像 Claude 或 Codex 这样的 agent 来做那些工作?目前,当然它们做不到。需要什么才能让它们做到?你今天为什么不做?原因是它们就是不工作。它们没有足够的智能,不够多模态,不能做计算机使用之类的事情。它们没有持续学习。你不能只是告诉它们某件事它们就会记住。它们在认知上有缺陷,就是不工作。解决所有这些问题大约需要十年。

有趣的是,作为一个从远处观察 AI 的人,很容易识别出缺少什么:缺少持续学习,或者缺少多模态性。但我真的没有一个好的方法来尝试给它一个时间线。如果有人问持续学习需要多长时间,我没有关于这是一个 5 年、10 年还是 50 年的项目的先验。为什么是十年?为什么不是 1 年?为什么不是 50 年?这里就进入了我自己的一些直觉,基于我在这个领域的经验做了一些外推。我在 AI 领域已经将近二十年了。大约有 15 年的经验,人们做预测,我看到它们如何成真。我在研究中待过,也在工业中工作过。我从中留下了一种总体直觉。我觉得问题是可解决的、可克服的,但仍然困难。如果我平均一下,感觉就是十年。

我们召唤的是幽灵,不是动物

Q:你之前写过一篇关于 Richard Sutton 那期播客的文章,你说"我们不是在建造动物"。能详细说说吗?

这是一个非常好的问题。Sutton 在你的播客上,我看了那期播客,我写了一篇关于那期播客的文章,谈到了我如何看待事物。我非常谨慎地与动物做类比,因为它们来自一个非常不同的优化过程。动物是进化而来的,它们带有大量的内置硬件。例如,我在那篇文章中的例子是斑马。斑马出生后几分钟就开始奔跑和跟随母亲。这是一件极其复杂的事情,那不是强化学习,那是某种被"烘焙"进去的东西。进化显然有某种方法将我们神经网络的权重编码在 ATCG 中,我不知道那是怎么工作的,但显然它有效。

大脑就是来自一个非常不同的过程,我非常犹豫从中获取灵感,因为我们实际上并没有运行那个过程。在我的文章中,我说我们不是在建造动物。我们在建造幽灵或灵魂,或者人们想叫它什么,因为我们不是通过进化来训练的。我们通过模仿人类和他们在互联网上放置的数据来训练。你最终得到这些空灵的灵魂实体,因为它们是完全数字化的,它们在模仿人类。这是一种不同类型的智能。如果你想象一个智能的空间,我们几乎从一个不同的起点开始。我们真的不是在建造动物。但让它们随着时间变得更像动物也是可能的,我认为我们应该这样做。

还有一点,我确实觉得 Sutton 有……他的框架是"我们想建造动物"。我认为如果我们能让那工作,那将是美妙的,那将是惊人的。如果有一个单一算法你可以直接在互联网上运行,它学习一切,那将是不可思议的。我不确定它存在,那当然也不是动物所做的事情,因为动物有这个进化的外循环。很多看起来像学习的东西更像是大脑的成熟。我认为动物的强化学习非常少。很多强化学习更像是运动任务,不是智能任务。所以我实际上认为人类大致来说并不真正使用强化学习。

Q:你如何回应 Sutton 的观点,即进化给出的是学习的算法,而不是知识本身?

我同意那里有一些奇迹般的压缩在发生,因为显然神经网络的权重没有存储在 ATCG 中。有一些戏剧性的压缩。有一些学习算法被编码了,接管并进行一些在线学习。我绝对同意你这一点。我会说我更注重实际。我不是从"让我们建造动物"的角度来看的。我从"让我们建造有用的东西"的角度来看。我戴着安全帽,我只是观察到我们不会做进化,因为我不知道怎么做。但事实证明,我们可以通过模仿互联网文档来建造这些幽灵、灵魂般的实体。这有效。这是一种把你带到具有大量内置知识和智能的东西的方式,在某些方面类似于进化所做的事情。这就是为什么我把预训练称为"蹩脚的进化"。这是用我们的技术和我们拥有的东西在实践中可能的版本,以达到一个起点,在那里我们可以做强化学习之类的事情。

上下文学习、记忆与认知核心

Q:你提到预训练和上下文学习之间的区别。能深入谈谈吗?

让我同意你的观点,然后解释为什么。通常我表达这一点的方式是:在神经网络训练期间发生的任何事情,知识只是对训练期间发生的事情的一种模糊回忆。那是因为压缩是戏剧性的。你拿 15 万亿个 token,把它压缩到只有几十亿参数的最终神经网络。显然有大量的压缩在进行。所以我把它称为对互联网文档的模糊回忆。而在神经网络的上下文窗口中发生的任何事情——你插入所有那些 token,建立所有那些 KV 缓存表征——是神经网络可以直接访问的。所以我把 KV 缓存和测试时发生的事情比作工作记忆。上下文窗口中的所有东西都是神经网络可以直接访问的。

这些类比总是令人惊讶。我总是惊讶于 LLM 和人类之间的类比。我觉得权重中的任何东西,就像是你一年前读过的东西的模糊回忆。你在测试时作为上下文给它的任何东西,都直接在工作记忆中。当你去 LLM 问它关于某本书的问题,比如 Nick Lane 的书,LLM 通常会给你一些大致正确的东西。但如果你给它完整的章节问它问题,你会得到更好的结果,因为它现在被加载到了模型的工作记忆中。

Q:你提到想要一个"认知核心"——去除知识的智能核心。这是什么意思?

我认为我们必须向前发展——这将是研究范式的一部分——找出方法来移除一些知识,保留我所称的"认知核心"。这是一个从知识中剥离出来的智能实体,但包含算法、包含智能和问题解决的魔法和策略。有太多有趣的东西在那里。

比如上下文学习。这些模型看起来最智能的情况——当我与它们交谈时,我觉得"哇,另一端真的有什么东西在回应我、思考事情"——是如果它犯了一个错误,它会说"哦等等,那是错误的思考方式,我在后退"。所有这些都发生在上下文中。那是我能看到真正智能的地方。那个上下文学习过程是由预训练的梯度下降开发的。它自发地元学习了上下文学习,但上下文学习本身不是梯度下降。

我不完全同意这一点,但你应该继续。嗯,我很好奇那个类比在哪里破裂。我犹豫说上下文学习不是在做梯度下降。它不是在做显式的梯度下降。上下文学习是在 token 窗口内的模式补全。事实证明互联网上有大量的模式。模型学会了补全模式,那在权重里面。有一些适应发生在神经网络内部,这是神奇的,仅仅因为有很多模式就从互联网中掉出来了。我会说有一些论文很有趣,看了上下文学习背后的机制。我确实认为上下文学习可能在神经网络的层内部运行一个小的梯度下降循环。我记得一篇特别的论文,他们用上下文学习做线性回归。你的输入是 XY 对,然后你做 X,期望 Y。当他们看那个上下文学习算法的权重时,他们发现了一些与梯度下降机制的类比。事实上,我认为那篇论文甚至更强,因为他们通过注意力和所有神经网络的内部机制硬编码了权重来做梯度下降。

Q:那为什么上下文学习感觉比预训练更像"真正的智能"?

一种思考方式是:模型每接收一个训练信息存储多少信息?如果你看预训练,比如 Llama 3,我认为它在 15 万亿个 token 上训练。如果你看 70B 模型,那相当于它看到的每个 token 0.07 比特。而如果你看 KV 缓存和它在上下文学习中每增加一个 token 的增长,大约是 320 千字节。所以这是模型每个 token 同化信息量的 3500 万倍差异。

我大致同意。任何在训练期间发生的事情,知识只是模糊的回忆。而在上下文窗口中发生的任何事情——工作记忆——是非常直接可访问的。

强化学习的局限:"通过吸管吸取监督"

Q:你对当前强化学习的方法有什么批评?

也许我表达这一点的方式是人类不使用强化学习。我认为它们做的是不同的事情。强化学习比普通人认为的要糟糕得多。强化学习很糟糕。只是碰巧在它之前的所有东西都更糟,因为之前我们只是在模仿人们,所以有所有这些问题。

在强化学习中,比如说你在解决一个数学问题。你被给了一个数学问题,你试图找到解决方案。在强化学习中,你会先并行尝试很多事情。你被给了一个问题,你尝试几百种不同的尝试。这些尝试可能很复杂。然后也许你得到一个答案。现在你检查书后面的答案,你看到"好的,正确答案是这个"。你可以看到这个、这个和那个得到了正确答案,但其他 97 个没有。

强化学习实际上做的是:它去那些效果很好的,你沿途做的每一件事、每一个 token 都被加权为"多做这个"。问题在于人们会说你的估计器方差很高,但它只是噪声。它几乎假设你到达正确答案的解决方案中的每一个小部分都是正确的做法,这不是真的。你可能走了一些错误的巷子直到到达正确的解决方案。你做的每一件不正确的事情,只要你到达了正确的解决方案,都会被加权为"多做这个"。这太糟糕了。这是噪声。你做了所有这些工作,最后只得到一个数字"哦,你做对了"。基于那个,你把整个轨迹加权为上或下。

我喜欢这样表达:你在通过吸管吸取监督。你做了所有这些可能是一分钟的 rollout 的工作,你通过一根吸管吸取最终奖励信号的监督比特,然后把它广播到整个轨迹上,用它来加权或降权那个轨迹。这太愚蠢了。人类永远不会这样做。第一,人类永远不会做几百次 rollout。第二,当一个人找到解决方案时,他们会有一个相当复杂的审查过程:"好的,我认为这些部分我做得好,这些部分我做得不太好,我可能应该这样做或那样做。"他们思考事情。当前的 LLM 中没有这样的等价物。但我确实看到有论文在尝试这样做,因为这对领域中的每个人来说都是显而易见的。

Q:那为什么基于过程的监督没有成为成功的替代方案?

基于过程的监督只是指我们不会只在最后有奖励函数。在你做了 10 分钟的工作之后,我不会告诉你你做得好不好。我会在每一步告诉你做得怎么样。我们没有那个的原因是正确地做到这一点很棘手。你有部分解决方案,你不知道如何分配功劳。所以当你得到正确答案时,它只是一个与答案的等式匹配,非常简单实现。如果你做过程监督,你如何以可自动化的方式分配部分功劳?这并不明显。很多实验室正在用这些 LLM 评判者来做。你提示一个 LLM:"嘿,看一个学生的部分解决方案,如果答案是这个,你觉得他们做得怎么样?"然后他们试图调整提示。

原因很微妙:任何时候你用 LLM 来分配奖励,那些 LLM 是有数十亿参数的巨大东西,它们是可以被博弈的。如果你对它们做强化学习,你几乎肯定会为你的 LLM 评判者找到对抗样本。所以你不能做太久。你做 10 步或 20 步也许可以,但你不能做 100 步或 1000 步。模型会找到小裂缝,它会找到这个巨大模型的所有角落里的虚假东西,找到作弊的方法。

一个在我脑海中突出的例子:如果你用 LLM 评判者做奖励,你给它一个学生的解决方案,问它做得好不好。我们用强化学习对那个奖励函数进行训练,效果很好。然后突然奖励变得极大。一个巨大的跳跃,完美了。你看着它说"哇,这意味着学生在所有这些问题上都完美了,数学完全解决了"。但当你看模型给出的补全时,它们完全是无意义的。它们开始还好,然后变成"dhdhdhdh"。就像"好的,让我们把二加三做这个做那个,然后 dhdhdhdh"。你看着它,这太疯狂了。它怎么得到 1 或 100% 的奖励?你看 LLM 评判者,原来"dhdhdhdh"是模型的对抗样本,它分配了 100% 的概率给它。这只是因为这是 LLM 的样本外例子。它在训练中从未见过,你在纯粹的泛化领域。在纯粹的泛化领域中,你可以找到这些打破它的例子。

Q:你认为出路在哪里?

我认为我们还需要三四个五个更多的东西。我看到一些论文试图有这种反思和审查的想法。有人在做记忆库之类的。我还没有看到任何人令人信服地表明这是可能的。话虽如此,LLM 实验室相当封闭,谁知道他们现在在做什么。

我能概念化你如何能够训练自己为自己创造的合成例子或合成问题。但似乎还有另一件事人类会做——也许睡眠是这个,也许白日梦是这个——不一定是想出一个假的问题,而只是反思。我不确定白日梦或睡觉或只是反思的 ML 类比是什么。

我确实认为我们在那里缺少一些方面。举个例子,让我们以读书为例。目前当 LLM 读书时,这意味着我们展开文本序列,模型在预测下一个 token,它从中获得一些知识。这不是人类真正做的。当你在读书时,我甚至不觉得这本书是我应该关注和训练的说明。这本书是一组提示,让我做合成数据生成,或者去一个读书会和朋友讨论。通过操纵那些信息,你才真正获得了知识。我们的 LLM 没有等价的东西。它们不真的那样做。我很想在预训练期间看到某个阶段思考材料,试图与它已经知道的调和,思考一段时间,让它起作用。这些都没有等价物。

还有一些非常微妙的原因解释为什么这不是微不足道的。为什么我们不能简单地合成生成然后在上面训练?因为每一个合成例子——如果我简单地给模型生成关于思考一本书的东西——你看着它觉得"这看起来很好,为什么我不能在它上面训练?"你可以尝试,但如果你继续尝试,模型会变得更糟。那是因为模型给你的所有样本都是静默坍缩的。静默地——如果你看任何单个例子,这并不明显——它们占据了可能的思想空间中一个非常小的流形。当 LLM 产生输出时,它们是我们所说的"坍缩"的。它们有一个坍缩的数据分布。

一个简单的方法是去 ChatGPT 问它"给我讲个笑话"。它只有大约三个笑话。它不会给你所有可能的笑话的广度。它只知道大约三个笑话。它们是静默坍缩的。你没有从这些模型中获得你会从人类那里得到的丰富性、多样性和熵。人类更嘈杂,但至少他们在统计意义上不是有偏的。他们不是静默坍缩的。他们保持着大量的熵。所以如何在坍缩的情况下让合成数据生成工作,同时保持熵?这是一个研究问题。

模型大小与认知核心的未来

Q:你认为最优的智能核心应该有多大?

在领域的历史上,曾经有一刻一切都非常"扩展狂热","我们要做更大的模型,万亿参数模型"。模型在大小上做的是它们上升了,现在它们下降了。最先进的模型更小了。即便如此,我认为它们记忆了太多。

所以我之前有一个预测,我几乎觉得我们可以得到非常好的认知核心,即使在十亿参数。如果你与一个十亿参数的模型交谈,我认为在 20 年内,你可以有一个非常有生产力的对话。它思考,更像人类。但如果你问它一个事实性问题,它可能需要查找,但它知道它不知道,它可能需要查找,它会做所有合理的事情。

Q:考虑到从万亿参数到小两个数量级的趋势,你不认为会低于十亿吗?

这里的问题是训练数据是互联网,互联网真的很糟糕。因为互联网如此糟糕,我们必须建造非常大的模型来压缩所有这些。大部分压缩是记忆工作而不是认知工作。但我们真正想要的是认知部分,删除记忆。我认为我们需要智能模型来帮助我们精炼预训练集,将其缩小到认知组件。然后我认为你可以用一个更小的模型,因为这是一个更好的数据集。但它可能不是直接在上面训练的,它可能是从一个更好的模型蒸馏出来的。

但为什么蒸馏版本仍然是十亿?我只是觉得蒸馏非常有效。所以几乎每一个小模型,如果你有一个小模型,它几乎肯定是蒸馏出来的。但在 10 年内蒸馏为什么不能低于十亿?哦,你认为应该小于十亿?我是说,拜托,对吧?我不知道。在某个时刻,做有趣的事情至少需要十亿个旋钮。

从实际角度来说,你希望模型有一些知识。你不希望它查找所有东西,因为那样你就不能在头脑中思考。你一直在查找太多东西。一些基本的课程需要在那里作为知识,但它不需要深奥的知识。

Q:关于前沿模型的规模,你有什么预测?

我没有一个特别强的预测。实验室们只是很实际。他们有一个 FLOPS 预算和成本预算。事实证明预训练不是你大部分 FLOPS 或成本应该放的地方。这就是为什么模型变小了。它们小了一点,预训练阶段更小,但它们在强化学习、中间训练和之后的所有东西中弥补了。他们只是在所有阶段方面很实际,如何获得最大的性价比。预测那个趋势相当困难。我确实仍然期望有很多低垂的果实。那是我基本的期望。

Q:你期望低垂的果实与过去两到五年类似吗?

大致来说,是的。我期望数据集变得更好得多。当你看平均数据集时,它们极其糟糕。它们太糟糕了,我甚至不知道任何东西是怎么工作的。看训练集中的平均例子:事实错误、错误、无意义的东西。不知何故,当你在规模上做的时候,噪声被冲走了,你留下了一些信号。数据集会改善很多。一切都会变得更好。我们的硬件、所有运行硬件的内核、最大化你从硬件中获得的东西。Nvidia 在慢慢调优硬件本身、Tensor Cores,所有这些都是需要的并且将继续发生。所有算法可能会在优化、架构和所有建模组件方面改进。我确实期望没有什么主导。所有东西加 20%。这大致是我看到的。

自动驾驶与软件工程:九的行军

Q:你在特斯拉领导自动驾驶五年。为什么从酷炫的演示到现在花了这么久?

有一件事我几乎会立刻反驳:这在很多方面甚至还没有接近完成。自动驾驶非常有趣,它绝对是我获得很多直觉的地方,因为我花了五年在上面。它有整个历史,第一个自动驾驶演示一直追溯到 1980 年代。你可以看到 1986 年 CMU 的演示,有一辆卡车在路上自动驾驶。快进。当我加入特斯拉时,我有一个非常早期的 Waymo 演示。它在 2014 年左右基本上给了我一次完美的驾驶,所以十年前一次完美的 Waymo 驾驶。它带我们在帕洛阿尔托转了转,因为我有一个朋友在那里工作。我以为它很接近了,然后它仍然花了很长时间。

对于某些类型的任务和工作,有一个非常大的"演示到产品"的差距。演示很容易,但产品很难。在像自动驾驶这样失败成本太高的情况下尤其如此。很多行业、任务和工作可能没有那个特性,但当你有那个特性时,那肯定增加了时间线。例如在软件工程中,我确实认为那个特性存在。对于很多 vibe coding,它不存在。但如果你在写实际的生产级代码,那个特性应该存在,因为任何类型的错误都会导致安全漏洞之类的。数百万人的个人社保号码被泄露之类的。所以在软件中,人们应该小心,就像在自动驾驶中一样。在自动驾驶中,如果出了问题,你可能会受伤,有更糟的结果。但在软件中,某件东西变得多糟糕几乎是无界的。

需要很长时间的方式和思考它的方式是,这是"九的行军"。每一个九是恒定量的工作。每一个九是相同量的工作。当你得到一个演示,某样东西 90% 的时间工作,那只是第一个九。然后你需要第二个九、第三个九、第四个九、第五个九。我在特斯拉的五年里,我们经历了大约三个九或两个九。还有更多的九要走。这就是为什么这些东西花这么长时间。

看到曾经是演示的东西绝对是塑造我的。我对演示非常不以为然。每当我看到任何东西的演示时,我都极其不以为然。如果是有人做的展示演示,那更糟。如果你能与它互动,那更好一点。但即使那样,你也没有完成。你需要实际的产品。当它接触到现实时,它会面临所有这些挑战,所有这些需要修补的行为口袋。我们会看到所有这些东西展开。这是九的行军,每个九是恒定的。演示是令人鼓舞的。仍然有大量工作要做。这是一个关键的安全领域,除非你在做 vibe coding,那都很好很有趣。所以这也从那个角度强化了我的时间线。

Q:但有人说软件不同于自动驾驶,因为 LLM 已经给了你基本的感知和表征,你不需要像自动驾驶那样从头解决这些问题?

我不 100% 确定我完全同意这一点。我不知道我们免费得到了多少。在我们得到的东西中,对理解仍有很多差距。我们绝对在单个实体中得到了更可泛化的智能,而自动驾驶是一个非常特殊的任务,需要……在某种意义上,构建一个特殊任务在某些方面甚至更难,因为它不是从你在规模上做的更一般的东西中自然产生的。但这个类比仍然不完全共鸣,因为 LLM 仍然相当有缺陷,它们有很多仍需填补的差距。我不认为我们在某种意义上完全开箱即用地得到了神奇的泛化。

自动驾驶汽车也仍然远未完成。部署相当有限。即使 Waymo 也很少有车。他们大致这样做是因为它们不经济。他们建造了某种活在未来里的东西。他们不得不把未来拉回来,但他们不得不使它不经济。有所有这些成本,不仅仅是那些汽车的边际成本和运营维护,还有整个事情的资本支出。使它们经济化仍然将是一场苦战。

而且当你看这些车没有人在驾驶时,我实际上觉得有点欺骗性,因为有非常精密的远程操作中心,人们在某种程度上与这些车在循环中。我没有完整的了解,但人在循环中比你期望的多。在某种意义上,我们没有真正移除人,我们只是把他们移到了你看不到的地方。

AI 对经济的影响:渐进的自动化

Q:你如何看待 AI 对经济和 GDP 的影响?你认为会有指数级的经济增长吗?

我看到它作为社会自动化的渐进。外推计算的趋势,将有很多东西被逐渐自动化,超级智能将是那的外推。我们期望随着时间有更多更自主的实体做大量的数字工作,然后最终甚至是一些物理工作。基本上我把它看作自动化,大致来说。

但自动化包括人类已经能做的事情,超级智能暗示人类不能做的事情。但人们做的事情之一是发明新东西,我会把它放入自动化中。

我认为它会。它基本上是自动化,但它将极其陌生。它看起来真的很奇怪。就像你提到的,我们可以在计算机集群上运行所有这些,而且快得多。一些我开始紧张的场景,当世界看起来像那样时,是对正在发生的事情的逐渐失去控制和理解。我认为那是最可能的结果——将会有逐渐的失去理解。我们会逐渐把所有这些东西层层叠叠到处都是,理解它的人越来越少。然后会有逐渐的失去控制和理解正在发生的事情。对我来说,这似乎是最可能的结果。

Q:你不认为 AI 可能导致类似工业革命那样的增长率跳跃吗?从 0.2% 到 2%?

我有点怀疑。我必须看看。例如,一些工业革命前的记录不太好。我有点怀疑,但我没有强烈的意见。你说那是一次极其神奇的单一事件。你在说也许会有另一个像那样极其神奇的事件。它会打破范式之类的。我实际上不认为……工业革命的关键是它不是神奇的。如果你放大看,你在 1770 年或 1870 年看到的不是什么关键发明。但同时,你确实把经济移到了一个进步快得多的状态,指数增加了 10 倍。我期望 AI 有类似的事情——不是会有某个单一时刻我们做出了关键发明。它是一个被解锁的积压。

我理解那个观点。我直觉上不太感受那个观点。

Q:那智能爆炸呢?一旦我们有了真正的 AGI,你期望看到智能爆炸吗?

我不是在谈论今天的 LLM。我确实期望,但这是照常营业,因为我们已经在智能爆炸中了,已经持续了几十年。基本上是 GDP 曲线,它是如此多行业方面的指数加权和。一切都在逐渐被自动化,已经持续了几百年。工业革命是自动化、一些物理组件、工具建造之类的。编译器是早期的软件自动化。我们一直在递归自我改进和爆炸很长时间。

另一种看法是,如果你不看生物力学之类的,地球是一个相当无聊的地方,看起来很相似。如果你从太空看,我们处于这个烟花事件的中间,但我们在慢动作中看它。我绝对觉得这已经发生了很长时间。再次,我不把 AI 视为一个独特的技术,相对于已经发生的事情。

我曾经试图在 GDP 中找到 AI,我一直在试图在 GDP 中找到 AI。我以为 GDP 应该上升。但我看了一些我认为非常变革性的其他技术,比如计算机或手机。你在 GDP 中找不到它们。GDP 是同一个指数。即使是早期的 iPhone 也没有 App Store,没有现代 iPhone 的很多花哨功能。所以即使我们认为 2008 年,iPhone 出来的时候,是一个重大地震般的变化,实际上不是。一切都是如此分散,扩散得如此缓慢,以至于一切都被平均到同一个指数中。计算机也是如此。你在 GDP 中找不到它们,"哦,我们现在有计算机了"。那不是发生的事情,因为进展太缓慢了。对于 AI,我们会看到完全相同的事情。它只是更多自动化。它允许我们编写以前不能编写的不同类型的程序,但 AI 从根本上仍然是一个程序。它是一种新型计算机和新型计算系统。但它有所有这些问题,它会随着时间扩散,它仍然会加到同一个指数上。我们仍然会有一个指数,它会变得极其陡峭。生活在那种环境中将是非常陌生的。

Q:但真正的通用人工智能——在服务器中替代人类——不是质上不同于这些其他提高生产力的技术吗?因为它就是劳动本身?

我理解,但我仍然认为你在预设某种离散的跳跃。有某种我们在等待声称的解锁。突然我们会有数据中心里的天才。我仍然认为你在预设某种没有历史先例的离散跳跃,我在任何统计中都找不到,我认为它可能不会发生。

这个假设突然有一个完全智能的、完全灵活的、完全通用的盒子里的人类,我们可以把它分配到社会中的任意问题——我不认为我们会有这种离散的变化。我认为我们会到达同样的逐渐扩散。

我不喜欢在这个语境中使用"智能"这个词,因为智能暗示你认为会有一个单一的超级智能坐在服务器里,它会想出如何提出导致爆炸的新技术和发明。那不是我在想象 20% 增长时想象的东西。我想象的是有数十亿个非常聪明的类人心智,也许,或者这就是所需要的全部。但事实是有数亿或数十亿个,每一个都在单独制造新产品、弄清楚如何把自己融入经济。

也许一个反驳。我相当愿意在这个问题上被说服。但我会说,例如,计算就是劳动。计算曾经是劳动。计算机——很多工作消失了,因为计算机在自动化大量数字信息处理,你现在不需要人了。所以计算就是劳动,那已经展开了。自动驾驶也是一个例子,计算机在做劳动。那已经在展开。仍然是照常营业。

教育与 Eureka:建造知识的坡道

Q:你现在在做什么?为什么不做 AI 研究本身?

我想说我感受到一些关于 AI 实验室正在做的事情的确定性。我觉得我可以在那里帮忙,但我不知道我会独特地改善它。我个人的大恐惧是很多这些东西发生在人类一边,人类被它削弱了。我关心的不仅仅是我们要建造的所有戴森球和 AI 将以完全自主方式建造的东西。我关心人类会发生什么。我想让人类在未来过得好。我觉得那是我更能独特地增加价值的地方,而不是前沿实验室的增量改进。我最害怕的是像《机器人总动员》或《蠢蛋进化论》之类的电影中描绘的东西,人类在这些东西的一边。我想让人类在这个未来好得多。对我来说,这通过教育可以实现。

Q:那你在教育方面具体在做什么?

最简单的描述方式是,我们试图建造星际舰队学院。我不知道你有没有看过《星际迷航》。星际舰队学院是前沿技术的精英机构,建造宇宙飞船,培养学员成为这些宇宙飞船的飞行员之类的。所以我就想象一个技术知识的精英机构和一种非常与时俱进的学校和一个首要的机构。

关于 Eureka,一件让我非常着迷的事情是,我确实认为教育将在 AI 的帮助下发生相当根本的变化。它必须被重新连接和改变。我仍然认为我们还很早期。会有很多人试图做显而易见的事情——有一个 LLM 问它问题,做所有通过提示目前可以做的事情。这有帮助,但仍然感觉有点像 slop。我想正确地做,我认为我想要的东西的能力还不存在。我想要的是一个真正的导师体验。

我脑海中一个突出的例子是我最近在学韩语。我经历了一个自己在网上学韩语的阶段。我经历了一个在韩国参加小班课的阶段,有一个老师和大约 10 个人一起学韩语,真的很有趣。然后我切换到了一对一导师。让我着迷的是,我有一个很好的导师,但想想这个导师为我做了什么,那个体验多么不可思议,以及我最终想建造的东西的标准有多高。她立即从一次很短的对话中理解了我作为学生在哪里,我知道什么不知道什么。她能够探测出确切的问题或事情来理解我的世界模型。目前没有任何 LLM 会 100% 地为你做到这一点,差得远。但一个好的导师会做到。一旦她理解了,她真的给我提供了我当前能力切片所需的一切。我需要总是被适当地挑战。我不能面对太难或太容易的东西,导师真的很擅长给你恰到好处的东西。我觉得我是学习的唯一约束。我总是得到完美的信息。我是唯一的障碍。不是说我找不到知识或它没有被正确解释。只是我记忆等的能力。这就是我想为人们做的。

如何自动化那?非常好的问题。以当前的能力,你做不到。这就是为什么我不认为现在实际上是建造这种 AI 导师的正确时机。我仍然认为它是一个有用的产品,很多人会建造它,但标准太高了,能力还不在那里。

即使今天,我会说 ChatGPT 是一个极其有价值的教育产品。但对我来说,看到标准有多高是如此着迷。当我和她在一起时,我几乎觉得我没办法建造这个。但你确实在建造它,对吧?任何有过真正好导师的人都会说"你怎么建造这个?"我在等待那个能力。

Q:那你现在实际在建造什么?

我在建造第一门课程。我想要一个非常非常好的课程,学习 AI 的明显最先进目的地。那只是我熟悉的东西,所以它是一个很好的第一个产品来真正擅长。所以我正在建造那个。Nanochat 是我正在建造的一个叫 LLM101N 的课程的顶点项目。那是一个很大的部分。但现在我必须建造很多中间的东西,然后我必须雇一个小团队的助教,建造整个课程。

还有一件事我想说,很多时候人们想到教育时,他们想的更多是我所说的知识扩散的较软组件。我心中有非常硬和技术性的东西。在我看来,教育是建造知识坡道的非常困难的技术过程。在我看来,nanochat 是一个知识坡道,因为它非常简单。它是超级简化的全栈东西。如果你把这个工件给某人,他们通过它学习大量的东西。它给你大量的我所说的"每秒 eureka",即每秒的理解。那就是我想要的,大量的每秒 eureka。所以对我来说,这是一个如何建造这些坡道的技术问题。我几乎把 Eureka 看作可能与一些前沿实验室或那里正在进行的工作没什么不同。我想弄清楚如何非常高效地建造这些坡道,让人们永远不会被卡住,一切都不会太难或太容易,你总有恰到好处的材料来进步。

Q:短期内你怎么看?

你现在想象的是,与其让导师能够探测你的理解,如果你有足够的能力来自我探测,你永远不会被卡住。你可以在与助教交谈或与 LLM 交谈和查看参考实现之间找到正确的答案。听起来自动化或 AI 不是一个重要部分。

到目前为止,这里最大的优势是你解释 AI 的能力被编纂在课程的源材料中。那从根本上就是课程。你总是要校准到行业中存在的能力。很多人会追求直接问 ChatGPT 之类的。但我认为现在,例如,如果你去 ChatGPT 说"教我 AI",不可能。它会给你一些 slop。AI 目前永远写不出 nanochat。但 nanochat 是一个非常有用的中间点。我在与 AI 合作创建所有这些材料,所以 AI 仍然从根本上非常有帮助。

早些时候,我在斯坦福建立了 CS231n,我认为那是斯坦福第一个深度学习课程,变得非常流行。当时建立 231n 和现在建立 LLM101N 之间的差异相当鲜明。我感觉被目前存在的 LLM 赋能了,但我非常在循环中。它们帮我建造材料,我走得更快。它们做很多无聊的东西。我觉得我在更快地开发课程,它是 LLM 融入的,但还没有到能创造性地创建内容的地方。我仍然在那里做那件事。棘手之处总是校准自己到什么存在。

Q:你如何看待教育的长期未来?

当人们想到教育时,我确实认为教育将在 AI 的帮助下发生根本变化。对于我现在有的东西,我确实想象一个物理机构,也许在下一层是一个数字产品,不是你在有人物理全职进来、我们从头到尾学习材料并确保你理解时得到的最先进体验。那是物理产品。数字产品是互联网上的一堆东西,也许有一些 LLM 助手。它更花哨,在下一层,但至少对 80 亿人可及。

关于动机,在 AGI 之前,动机很容易解决,因为人们想赚钱。这就是今天在行业中如何赚钱。AGI 之后可能更有趣,因为如果一切都被自动化了,没有人有什么可做的,为什么任何人要去学校?我经常说,AGI 之前的教育是有用的。AGI 之后的教育是有趣的。就像人们今天去健身房一样。我们不需要他们的体力来操纵重物,因为我们有机器做那事。他们仍然去健身房。为什么?因为有趣、健康,有六块腹肌时看起来很性感。对人们来说,在非常深层的、心理的、进化的意义上,这样做是有吸引力的。教育将以同样的方式展开。你就像去健身房一样去学校。

现在没有太多人学习,因为学习很难。你从材料上弹回来。有些人克服了那个障碍,但对大多数人来说,它很难。这是一个需要解决的技术问题。做一个像我的韩语导师为我做的那样的是一个技术问题。它是可解决的、可建造的,有人应该建造它。它将使学习任何东西变得微不足道和令人向往,人们会为了乐趣而做,因为它太简单了。如果我有一个那样的导师来学习任何知识,学习任何东西会容易得多,人们会做它。他们会为了和去健身房相同的原因做它。

Q:如果一切都被自动化了,教育如何帮助人类保持对 AI 的控制?

我确实认为最终这是一个有点输的游戏。从长期来看——比行业中大多数人思考的更长——这是一个输的游戏。我确实认为人们可以走这么远,我们几乎没有触及一个人能走多远的表面。那只是因为人们从太难或太容易的材料上弹回来。人们能够走得更远。任何人都会说五种语言,为什么不?因为太简单了。任何人都会知道本科的基本课程。

我确实在某种程度上押注于人性的某种永恒性。做所有这些事情将是令人向往的,我认为人们会像千年来一样仰望它。这将继续是真的。如果这是错误的,如果我们最终在《机器人总动员》或《蠢蛋进化论》的未来,那么我甚至不在乎有没有戴森球。这是一个可怕的结果。我真的关心人类。每个人必须在某种意义上是超人类的。

教学的艺术

Q:你对其他领域的教育者有什么建议?

有很多我半意识地做的技巧。但很多这来自我的物理背景。我真的非常享受我的物理背景。我有一个完整的长篇大论关于为什么每个人都应该在早期学校教育中学习物理,因为早期学校教育不是为了积累知识或为以后的行业任务记忆。它是关于启动大脑。物理独特地以最好的方式启动大脑,因为他们在物理中让你的大脑做的一些事情在以后极其有价值。

建造模型和抽象的概念,理解有一个一阶近似描述了系统的大部分,但然后有二阶、三阶、四阶项可能存在也可能不存在。你在观察一个非常嘈杂的系统,但有一些基本频率你可以抽象掉。当一个物理学家走进教室说"假设有一头球形牛"时,每个人都笑,但这太精彩了。这是非常可泛化的思维,在整个行业中都是。因为一头牛在很多方面可以被近似为一个球。

有一本很好的书叫《规模》,是一个物理学家在谈论生物学。你可以从物理学家那里得到很多非常有趣的近似和动物缩放定律。你可以看它们的心跳之类的东西,它们与动物的大小一致。你可以把动物当作一个体积来谈论。你可以谈论它的热耗散,因为你的热耗散随表面积增长,表面积随平方增长。但你的热量产生或生成随立方增长。所以我觉得物理学家有所有正确的认知工具来处理世界上的问题解决。

因为那种训练,我总是试图找到一切的一阶项或二阶项。当我观察一个系统或事物时,我头脑中有一团纠缠的想法或知识网络。我试图找到什么是重要的?什么是一阶组件?我如何简化它?我如何有最简单的东西来展示那个东西,展示它的运作,然后我可以加上其他项?

也许来自我的一个仓库的例子很好地说明了这一点,叫做 micrograd。Micrograd 是 100 行代码,展示了反向传播。你可以用简单的操作如加和乘来创建神经网络——神经网络的乐高积木。你建立一个计算图,做前向传播和反向传播来获得梯度。这是所有神经网络学习的核心。所以 micrograd 是 100 行相当可解释的 Python 代码,它可以做任意神经网络的前向和反向,但不高效。所以 micrograd,这 100 行 Python,是你理解神经网络如何训练所需的一切。其他一切都只是效率。有大量的工作来获得效率。你需要你的张量,你布局它们,你设置步幅,你确保你的内核、正确编排内存移动之类的。一切都只是效率,大致来说。但神经网络训练的核心智力部分是 micrograd。它是 100 行。你可以很容易理解它。它是链式法则的递归应用来推导梯度,允许你优化任何可微函数。

所以我爱找到这些小阶项,把它们放在盘子上呈现出来,发现它们。我觉得教育是最智力上有趣的事情,因为你有一团纠缠的理解,你试图以一种创建坡道的方式把它铺开,一切只依赖于它之前的东西。我发现这种知识的解开作为认知任务非常智力上有趣。我个人喜欢做,但我只是对以某种方式铺开事物有一种着迷。

Q:你的 Transformer 教程从二元语法开始,就是一个查找表。为什么这种方法有效?

它总是先呈现痛苦再呈现解决方案,这多聪明啊。你想带学生经历那个进程。还有很多其他小的事情使它变得好和引人入胜。总是提示学生。有很多像那样的小事情很重要,很多好的教育者会这样做。"你会怎么解决这个?"我不会在你猜之前呈现解决方案。那将是浪费。在你有机会自己尝试之前就给你呈现解决方案,这有点……我不想说脏话,但对你来说这有点混蛋行为。因为如果你试着自己想出来,你会更好地理解行动空间是什么、目标是什么,然后为什么只有这个行动满足那个目标。你有机会自己尝试,当我给你解决方案时你会有一种欣赏。它最大化了每个新事实添加的知识量。

Q:为什么真正的专家通常不擅长向新手解释?

这是知识的诅咒和专业知识的诅咒。这是一个真实的现象,我自己也深受其害,尽管我尽量不这样。你把某些事情视为理所当然,你不能把自己放在刚起步的新人的位置上。这是普遍的,也发生在我身上。一个非常有帮助的事情是,比如有人最近试图给我看一篇生物学的论文,我立即有很多糟糕的问题。我所做的是用 ChatGPT 在上下文窗口中带着论文问那些问题。它解决了一些简单的东西。然后我把那个对话分享给了写那篇论文或做那个工作的人。我觉得如果他们能看到我那些愚蠢的问题,可能会帮助他们以后更好地解释。对于我的材料,如果人们分享他们与 ChatGPT 关于我创造的东西的愚蠢对话,我会非常高兴,因为它真的帮助我再次把自己放在一个刚起步的人的位置上。

Q:你注意到一个关于人们如何解释事物的有趣模式?

有一个非常有效的技巧。如果有人写一篇论文或博客文章或公告,在 100% 的情况下,他们如何向你解释的叙述或转录——就像在午餐时——不仅更容易理解,而且实际上更准确和科学。因为人们有一种倾向,以最抽象的、充满行话的方式解释事情,在解释中心思想之前清四次嗓子。但与一个人一对一交流有某种东西迫使你直接说出那个东西。直接说出那个东西。我看到那条推文,我觉得它非常好。我把它分享给了很多人。

我注意到这个很多次。最突出的例子是我记得在博士期间做研究。你读某人的论文,你努力去理解它在做什么。然后你在会议后和他们一起喝啤酒时抓住他们,你问他们"所以这篇论文,你在做什么?论文是关于什么的?"他们会告诉你三句话,完美地捕捉了那篇论文的精髓,完全给了你这个想法。你不需要读那篇论文。只有当你坐在桌旁喝着啤酒之类的,他们说"哦是的,论文就是,你拿这个想法,你拿那个想法,试这个实验,你试这个东西"。他们有一种方式以对话的方式完美地表达它。为什么那不是摘要?

Q:作为一个学生,如果没有一个 Karpathy 来为你解释,你有什么学习策略?

我不确定我有独特的技巧,老实说。这是一个痛苦的过程。一直帮助我相当多的一个事情是——我有一个小推文关于这个——按需学习相当不错。深度学习。我确实觉得你需要一些交替:按需深度学习——你试图完成一个你将从中获得奖励的特定项目——和广度学习,"哦,让我们做所有的 101 课程,这是你可能需要的所有东西"。哪种是很多学校做的广度学习,"相信我,你以后会需要这个",那种东西。好吧,我信任你。我会学它,因为我想我需要它。但我喜欢那种你从做某件事中获得奖励的学习,你在按需学习。

另一件我发现极其有帮助的事情——这是教育更无私的一个方面——向人们解释事情是一种更深入学习的美丽方式。这一直发生在我身上。它可能也发生在其他人身上,因为我意识到如果我不真正理解某件事,我不能解释它。我在尝试,我说"哦,我不理解这个"。面对这个太烦人了。你可以回去确保你理解了。它填补了你理解的空白。它迫使你面对它们并调和它们。我喜欢重新解释事情,人们也应该更多地这样做。那迫使你操纵知识,确保你在解释时知道你在说什么。

总结:一个不可思议的时代

Q:最后,你对进入这个行业的年轻人有什么想说的?

总结一下,多么不可思议的时代进入这个行业。我们需要重写大量的代码。大量的代码将由专业人士和编码者编写。这些 LLM 有点像公用事业,有点像晶圆厂,但它们尤其像操作系统。但太早了。这就像操作系统的 1960 年代,我认为很多类比都适用。这些 LLM 就像这些有缺陷的、你知道的、人的灵魂,我们必须学会与之合作。为了正确地做到这一点,我们需要调整我们的基础设施。所以当你建造这些 LLM 应用时,我描述了一些与这些 LLM 有效工作的方式和一些使之成为可能的工具,以及你如何非常快地旋转这个循环,基本上创造部分自主性产品。然后,很多代码也必须更直接地为 agent 编写。但无论如何,回到钢铁侠战衣的类比,我认为我们在未来十年大致会看到的是,我们将把滑块从左到右。看那会是什么样子非常有趣。我迫不及待地想和你们所有人一起建造它。谢谢。

我虽然行过死荫的幽谷,也不怕遭害,因为你与我同在。
诗篇 23:4