Andrej Karpathy 又重看了一遍自己的访谈,并澄清和深化一些关键观点。Karpathy引用了不少之前写的帖,在本文用【】表示。
更好的阅读体验,求求:大模型界的Karpathy地震|Andrej Karpathy访谈后记
1. AGI 时间线
关于这方面的评论似乎是早期反响中最火的。我提到这是智能体的十年,是引用了我之前的这条推文:
2025.1.24
OpenAI发布Operator,Karpathy评论
【像OpenAI的 Operator 这样的项目,对数字世界意味着什么?它就像人形机器人对物理世界一样。
它们两者都试图在一个通用设定下工作——人形机器人用的是人体,而Operator用的是显示器、键盘和鼠标。它们都通过最初为人类设计的输入/输出接口,去逐步学习执行各种通用任务。
这两种情况,都会把我们带向一个人机混合自治的世界。在这个世界里,人类成了高级主管,负责监督底层的自动化工作。这有点像司机监控着特斯拉的自动驾驶系统一样。
这种变革在数字世界会比在物理世界快得多。为什么?因为在数字世界里处理信息的成本,大概比在物理世界里制造实物要便宜1000倍。尽管如此,物理世界的市场规模和机会感觉上要大得多。
事实上,我们在OpenAI创业初期就捣鼓过这个想法(可以参考我们当年的 Universe 和 World of Bits 项目),但可惜顺序搞错了——我们得先等到大语言模型出现才行。
即使是现在,我也不敢100%肯定时机已经成熟。你看,多模态能力(也就是处理图像、视频、音频)在过去一两年才勉强跟大语言模型整合到一起,而且很多时候还只是作为适配器硬栓上去的。更糟糕的是,我们还没真正涉足过超长任务周期的领域。举个例子,视频包含的信息量是极其庞大的。我可不确定我们是否能指望把这些信息一股脑儿全塞进上下文窗口(这是目前的主流范式),然后它就能奇迹般地搞定一切。我猜,这个地方至少还需要一两个重大突破。
我在社交媒体上看到有人说 2025 年是智能体之年。我个人倒觉得,2025年到2035年,这整整十年,是智能体的十年。我感觉,要让它真正落地,我们还有铺天盖地的工作要做。
但它 应该 能成。
今天,Operator 也许有时候能帮你上 DoorDash 订个午餐,或者查查酒店什么的。而到了明天,你将能孵化出 Operator 组织,让它们为你执行你选择的长期任务(例如,运营一整家公司)。你会像个CEO,同时监控着 10 个这样的智能体员工,也许偶尔需要亲临一线去解决某个卡壳的问题。到那时,事情就会变得非常有趣了。】
简单来说,我对 AI 时间线的看法,比 你在旧金山 AI 派对上或推上听到的普遍预测要悲观 5 到 10 倍,但比起 那些日益增长的 AI 否定者和怀疑论者,我又要乐观得多。这其中的矛盾其实并不存在:在我看来,我们是同时 1) 见证了近年来大语言模型的巨大进步,并且 2) 距离我们能真正拥有一个在任何工作上都比人类更值得雇佣的实体,也还有海量的工作要做。这些工作包括:脏活累活、集成工作、连接物理世界的传感器和执行器、社会层面的工作,以及安全和安保工作,当然还有很多研究有待完成。总的来说,我认为 10 年实现 AGI 已经是一个非常激进的时间表了,只是在当今的炒作氛围下,大家才不这么觉得。
2. 动物 vs. 幽灵
这是我之前关于 Sutton 播客的读后感:
【suton读后感】
我一直很怀疑,是否存在一种单一的、简单的算法,你只要把它扔到世界上,它就能从零开始学会一切。如果真有人造出了这种东西,那我就是错的,而那也将是 AI 领域最不可思议的突破。在我看来,动物根本不是这种模式的例子——它们通过进化,被预装了大量的智能,它们后续做的学习总体上是相当微小的(例如:刚出生的斑马)。戴上我们工程师的帽子来看,我们不可能去复现整个进化过程。但通过 LLM,我们偶然发现了一种替代方法来预装海量智能——不是靠进化,而是靠在互联网上预测下一个token。这种方法催生了智能空间中一种截然不同的实体。它不同于动物,更像是幽灵或灵魂。但是,我们能够让它们随着时间推移变得更像动物,从某些方面说,这正是许多前沿工作的意义所在。
3. 关于强化学习
我之前已经批评过几次强化学习了,比如:
【我挺确定 RL 会继续带来不少阶段性的成果,但我也并不觉得,这就是故事的全部了。RL 的基本逻辑其实就是:嘿,这事儿干得不错(/很糟),那我就给未来所有导致这个结果的动作,都稍微增加(/减少)一点概率。
比起一步步给显式监督,使用验证器函数来评估结果,确实高效得多,这很棒。
但是,首先,从长远来看(或者说在任务变得极度复杂时),这事儿有点可疑。想象一下,当一个任务需要几分钟甚至几小时的互动才能完成时,你真的要费这么大劲,就为了在最后得到一个孤零零的评价分数(比如好或坏),然后用这个分数去直接调整(加权)整个过程的梯度吗?
抛开这种极限情况不谈,第二点,这感觉也不像是人类解决绝大多数智能任务的提升机制。
我们人类在每一次尝试之后,会通过一个复盘/反思阶段提取到多得多的监督信息。我们会问自己:哪里做得好?哪里不太行?下次该试试什么?等等。从这个阶段得出的经验教训感觉是显式的,就像一段新的文本,可以直接加到未来的系统提示词里。
这些经验未来也可以被蒸馏成模型的权重——或者说直觉,这个过程有点像人类的睡眠。英语里我们管这个过程叫习以为常(second nature,第二天性)。我们现在正缺少这样的学习范式。
ChatGPT 新出的记忆功能,也许是这个想法的一个原始雏形,尽管它目前只用于个性化定制,而不是解决问题。请注意,在像Atari游戏的强化学习里,根本没有类似的东西,因为那些领域里没有大语言模型,也没有上下文学习。
举个可能的算法例子:给定一个任务,先跑几次尝试。把这几次尝试的全部过程(以及各自的奖励分数)都塞进一个上下文窗口里。然后,用一个元提示词来引导模型复盘反思,看看哪些地方做得好,哪些不好,从而得到一个字符串形式的经验。再把这个经验加到系统提示词里(或者更通用的,去修改当前的经验数据库)。当然,这里面还有很多细节要填充,很多调整的可能,事情没那么简单。
再举个经验的例子:我们知道,LLM 因为分词的原因,很难特别轻松地看清单个字母;它也很难特别轻松地在残差流里做精确计数。所以那个著名的难题——数数‘strawberry’(草莓)这个词里有几个‘r’——对它们来说就特别难。
Claude 模型的系统提示词里曾经有过一个快速补丁。它加入了一段话,大意是:如果用户叫你数字母,你首先要把字母用逗号隔开,每隔一个就给一个显式的计数器加一,然后再这样去完成任务。
这段字符串,就是我所说的经验。它在明确地指导模型如何完成计数任务。但问题是,这种经验现在是工程师硬编码写进去的,我们怎么能让 AI 智能体在实践中自己悟出来呢?这种方法如何才能泛化?以及,这些经验教训如何随着时间被蒸馏,才不至于让上下文窗口无限膨胀?
长话短说:
RL 还会带来更多进步,因为如果做得好,它的杠杆效应更强,更符合苦涩教训(bitter-lesson-pilled,指更依赖算力而非人类知识)的原则,并且优于监督微调。
但它给我的感觉依然不是故事的全部,特别是当任务尝试的长度不断增加时。
在这之后,还有更多条新的S型增长曲线等着我们去发现。这些新曲线可能专属于 LLM,在过去的游戏或机器人那样的环境里根本没有对应的东西。这想想就让人兴奋。】
首先,你这是在用吸管喝监督信号,所以我认为signal/flop的效率非常低。RL 的噪声也特别大,因为一个完整的回答里可能包含很多错误,但(如果碰巧蒙对了答案)这些错误却可能被鼓励;反过来,一些极具洞察力的token(如果后续搞砸了)却可能被抑制。过程监督和 LLM 裁判也都有问题。我认为我们会看到替代性的学习范式。我长期看好智能体交互,但短期看空强化学习
【故事要从预训练时代讲起。在那个阶段,最重要的养料就是互联网上的海量文本。你最想要的,就是一个规模庞大、内容多样、质量又高的网页文档库,让模型去学习。
接着,我们进入了监督微调时代,这时的主角变成了对话。人们开始雇佣外包人员,让他们针对各种问题写出标准答案。这有点像你在知乎或 Stack Overflow 上看到的问答,但它们是专门针对大语言模型的使用场景进行优化的。
在我看来,前面这两种方式(文本和对话)都不会消失。但是,现在我们正进入强化学习时代,这个时代的新宠儿是环境。
环境和前两者完全不同。它给了大语言模型一个真正去互动的机会——它能自己采取行动,然后观察这个行动带来了什么结果。这意味着,我们有机会让模型做得更好,而不仅仅是停留在统计学上的专家模仿。
而且,环境既可以用来训练模型,也可以用来评估模型。不过,老问题又来了:我们现在迫切需要一个规模庞大、内容多样、质量又高的环境集合,就像一个题库,让大语言模型在里面练习。
从某些方面来说,这让我想起了 OpenAI 的第一个项目(gym)。它当初的设想,就是想建立一个标准框架,用来收集大量的环境,但这比大语言模型的出现要早得多。所以,那时的环境都是些当时学术界用的简单控制任务,比如cartpole游戏、ATARI游戏等等。
而 @PrimeIntellect 团队的 environments hub(以及 GitHub 上的 verifiers 仓库)正在构建的,正是一个专门针对大语言模型的现代化版本。这是一个非常棒的努力和想法!我今年早些时候还发帖呼吁过,希望有人能做点类似的事情。
环境这个东西有个特别令人兴奋的特性:一旦这个框架的骨架搭建好了,理论上,整个社区和行业就可以在许多不同的领域并行开工,各自贡献内容。
最后一点思考——从我个人和长远的角度来看,我非常看好环境和智能体互动,但我尤其不看好强化学习本身。
我觉得奖励函数这个东西超级不靠谱。而且,我认为人类自己也不是靠强化学习来学习的(也许学一些运动技能时会用上,但在解决需要智力的问题时肯定不是)。
人类使用的是完全不同的学习范式,那些范式要强大得多,样本效率也高得多,只是它们还没有被真正发明出来并规模化应用。当然,一些早期的雏形和想法已经存在了(举个例子,比如系统提示词学习的想法,它尝试把更新放在token/上下文上,而不是模型权重上,并且可以选择性地在一个独立的过程中,把这些学习成果蒸馏回权重里,这个过程有点像人类的睡眠)。】
我最近看到好几篇论文,在我看来,它们正走在正确的方向上,跟我称之为系统提示词学习(system prompt learning)的思路不谋而合
【我们似乎(至少)错过了一种大语言模型(LLM)学习的重要范式。我不太确定该叫它什么,也许它已经有名字了——姑且称之为系统提示词学习?
预训练是为了获取知识。
微调——无论是监督学习还是强化学习——是为了塑造习惯性行为。
这两种方式都涉及模型参数的改变。但我们人类的很多学习感觉更像是在修改我们自己的系统提示词。当你遇到一个问题,琢磨出解决办法后,你会为下次记住一些非常明确的东西。例如:看来,当我遇到这类问题时,我应该尝试那种方法/解决方案。
这感觉更像是给自己写笔记。它有点像聊天机器人现在的记忆功能,但关键区别在于,它不是用来存储用户的零散事实,而是用来存储通用的、全局性的解决问题的知识和策略。
毫不夸张地说,现在的大语言模型就像电影《记忆碎片》里的主角,只是我们还没给他们一个随手记的便签本。
还要注意,这种新范式在能力和数据效率上也可能强大得多。因为一个由知识指导的复盘阶段,是一个维度高得多的反馈渠道,远超一个简单的(强化学习)奖励标量。
我是读了 Claude 的系统提示词之后,才突然有了这些灵光一闪的想法。Claude 的系统提示词现在似乎有大约 17000 个词,它不仅规定了基本的行为风格/偏好(例如,拒绝各种与歌词相关的请求),还规定了大量的通用问题解决策略,例如:
如果 Claude 被要求计算单词、字母和字符数,它会在回答之前一步一步地思考。它会通过给每个词、字母或字符分配一个编号来显式地计算它们。它只有在执行了这个显式的计算步骤之后才会回答用户。
这样做是为了帮助 Claude 解决(类似strawberry中有几个r)这样的问题。在我看来(Imo),这种解决问题的知识不应该通过强化学习固化到权重中,或者至少不应该马上/完全这样做。而且,它当然也不应该来自人类工程师手写系统提示词。
它应该来自系统提示词学习。
这种学习在设置上可能很像强化学习,唯一的例外是学习算法——用的是编辑而不是梯度下降。未来,大语言模型系统提示词的很大一部分可以通过这种方式自动编写。这看起来有点像大语言模型在为自己写一本关于如何解决问题的书。
如果这能行得通,它将是一种全新的、强大的学习范式。当然,还有很多细节有待解决(比如:这种编辑要如何工作?我们能/应该让模型学会这个编辑系统吗?你如何像人类一样,逐渐将知识从明确的系统文本(prompt)转移到习惯性的权重中?等等)。】
但我认为,arXiv 上的创意和真正在前沿 LLM 实验室里大规模、通用化地实现,两者之间还存在鸿沟。总的来说,我非常乐观,我们很快就会在剩余工作的这个维度上看到良好进展,举个例子,我甚至认为像 ChatGPT 的记忆功能等等,就是这种新学习范式最原始的、已部署的例子。
4. 认知核心
我之前关于认知核心的帖子:
【争夺认知核心:LLM个人电脑时代的新赛道
一场关于大语言模型认知核心的竞赛已经拉开帷幕。
这场竞赛的目标,不再是比拼谁的模型更大,而是要创造一个只有几十亿参数的小模型。它的核心理念是:最大限度地牺牲百科全书般的知识,以换取极致的能力。
它将像内核一样,永远在线、默认运行在每一台个人电脑上,成为LLM 个人计算时代的心脏。
它的特点正逐渐变得清晰起来:
- • 天生多模态:无论是输入还是输出,都能原生处理文本、视觉和音频。
- • 套娃式架构:采用Matryoshka-style架构,允许用户在运行时按需拨动开关,随意调高或调低它的能力。
- • 可调节的推理:具备推理能力,这个能力同样可以按需调节。(也就是卡尼曼所说的系统2慢思考)。
- • 激进的工具使用者:它会非常积极主动地调用各种工具来完成任务。
- • 设备端个性化:支持在设备上进行微调。利用 LoRA 插槽,可以在运行时训练模型,实现高度的个性化和定制化。
- • 聪明的甩手掌柜:当有网络连接时,它知道该把哪些(且仅把)合适的部分委托给云端的神谕去处理,并会进行交叉核对。
它懂什么,不懂什么?
这个认知核心并不知道威廉一世在1087年9月9日结束了统治;但它对这个名字有模糊的印象,并且知道去查一下这个日期。
它也背不出空字符串的 SHA-256 值是 e3b0c442…;但如果你真的需要,它可以迅速帮你算出来。
为什么我们需要它?
这种LLM 个人计算模式,虽然在知识广度和顶级解题能力上有所欠缺,但它在其他方面提供了巨大的优势:
- • 极低的交互延迟(尤其在多模态技术成熟后会更明显)
- • 对本地数据和状态的直接且私密的访问
- • 离线也能持续工作
- • 数据主权(sovereignty)(俗话说:权重不在你手里,大脑就不是你的(not your weights not your brain))
换句话说,我们今天之所以喜欢、使用和购买个人电脑,而不是只用瘦客户端通过远程桌面访问云端——我们当初的这些理由,也正是我们现在需要这个认知核心的理由。】
这个想法是关于给 LLM 瘦身,让它们更难去背诵,或者说主动剥离它们的记忆,以迫使它们提升泛化能力。否则,它们会过度依赖自己背下来的东西。相比之下,人类不那么容易记住东西,这现在看来更像是一个特性,而不是一个缺陷。也许,无法轻易记忆本身就是一种正则化。还有我前阵子发的帖子,关于为什么模型尺寸的趋势是倒退的,以及为什么模型必须先变大,然后才能再变小
【大语言模型的竞赛正在开倒车!
我敢打赌,未来我们将会看到那些思考能力又强又可靠的AI模型,而它们的个头会非常非常小。很有可能,即便是GPT-2这样的老模型,只要参数设置得当,大多数人也会认为它很聪明。
那为什么现在的模型都这么臃肿呢?根本原因在于我们目前的训练方式还非常浪费。我们实际上是在要求模型背诵整个互联网。而且,令人惊讶的是,它们真的做到了。比如,它们能背出常见数字的SHA哈希值,或者回忆起那些极其冷门的知识。(说实话,大语言模型 真的特别擅长死记硬背,在这方面它们比人类强太多了。有时候,模型可能只需要看一遍,就能在很长一段时间里记住海量的细节)。
你想象一下:如果让你去参加一场闭卷考试,只给你开头几个词,就要求你背诵出互联网上的任意一段原文。这就是今天AI模型标准的(预)训练目标。
那么,为什么改进(比如把模型做小)这么难呢?因为在现有的训练数据中,那些真正展现思考能力的示范,和海量的知识死死地纠缠在了一起。
因此,模型必须先变大,才能后变小。因为我们需要依靠它们(自动化)的帮助,来重构和雕琢现有的训练数据,把它们变成理想的、纯净的合成数据。
这就好比一个进步的阶梯——用这一代模型去帮助生成下一代模型的训练数据,不断迭代,直到我们最终提炼出那个完美的训练集。到那时,你再用这个完美数据集去训练GPT-2,按今天的标准来看,它也会变成一个非常强大、非常聪明的模型。
当然,这样做的代价可能是,它在 MMLU上的得分会低一些,因为它不会死记硬背住所有的化学知识。也许它需要偶尔查查资料来确保信息的准确。】
5. 时间旅行
回到 1989 年的 Yann LeCun。这是我在播客上描述得非常仓促/糟糕的帖子。
简单说就是——如果你带着 33 年的算法进步知识回到过去,你能在多大程度上改进 Yann LeCun 的成果?当时的成果到底受算法、数据和算力中哪一个的限制最大?这就是一个案例研究。
6. nanochat
这是我实现的一个端到端的 ChatGPT 训练/推理流程(只包含最核心的要素)
7. 关于 LLM 智能体
我对这个行业的批评,更多在于他们开发的工具用力过猛,超越了当前 AI 的实际能力。我生活在一个我希望与 LLM 协作、发挥各自优劣势的世界。而这个行业则活在一个未来——一个完全自主的实体并行编写所有代码、人类毫无用处的世界。举个例子,我不想要一个智能体,它自己跑去工作 20 分钟,然后甩给我 1,000 行代码。我当然也不觉得自己准备好了去管理一个由 10 个这种智能体组成的团队。我希望的是,我们可以一块一块地推进工作,每块工作都小到我能hold住,LLM 会向我解释它正在写的代码。我希望它能向我证明它做的是对的,我希望它去查阅 API 文档,然后展示给我看它的用法是正确的。我希望它少做假设,在不确定的时候主动问我、与我协作。我希望在这个过程中自己也能学到东西,提升作为程序员的能力,而不是只被投喂一堆(据称)能跑的代码。我只是觉得,这些工具应该更现实一点,匹配它们当下的能力,看清它们在当今行业中的位置。我担心,如果这点做不好,我们最终会在软件工程中堆积如山的垃圾代码(slop),并导致漏洞、安全入侵等问题激增。
【我发现,我在AI 辅助编程时,慢慢形成了一套自己的节奏(这里说的,是我在工作中真正严肃对待的那些代码,而不是那种随手写着玩的vibe code)。
这套节奏大概是这样的:
- 把所有相关的上下文(context)都喂给 AI。(在大型项目里,这可能很花时间。如果项目够小,那就干脆把所有东西都扔进去,比如用 files-to-prompt . -e ts -e tsx -e css -e md –cxml –ignore node_modules -o prompt.xml 这样的命令。)
- 向 AI 描述我们想实现的下一个、单一的、具体的小步改动。关键是:先别急着要代码。先让它给出几种高层级的实现思路,分析一下各自的优缺点。毕竟,做一件事总有好几种方法,而大语言模型(LLM)的判断力并不总是那么靠谱。也可以选择性地让它把思路具体化。
- 选定一种方法,然后让它生成第一版代码草稿。
- 审查与学习阶段:(必须手动…)在旁边打开浏览器,查阅所有我以前没调用过、或者不太熟悉的函数的 API 文档。同时,要求 AI 给出解释、澄清细节、进行修改。如果这条路走不通,就果断退回去,试试别的思路。
- 测试。
- 提交代码(Git commit)。问问它我们下一步可以实现什么?。然后,重复这个循环。
感觉上,这套流程更接近 AI 辅助开发的内循环(inner loop)。
这里的重点是,你必须牢牢牵住缰绳。你要把 AI 想象成一个新来的实习生:他过度热情,是个少年天才,脑子里装着百科全书一样的软件知识……但他同时也整天对你一本正经地胡说八道,胆子大得没边,而且对什么是好代码几乎毫无品味。
所以,你这一方的重点必须是:慢下来、保持防御姿态、小心、甚至要有点偏执。并且,永远要抓住机会在过程中顺便学习,而不是把工作完全委托给它。
在现有的工具里,上面这些阶段很多还很笨重,需要手动操作,并没有被明确地、或者特别好地支持。我们仍然处于非常早期的阶段,在 AI 辅助编程的用户界面(UI)和用户体验(UX)上,还有太多太多的事情可以做。】
8. 工作自动化
聊了聊为什么放射科医生的工作(目前)还干得挺好
【AI取代人类?为什么放射科医生的饭碗反而更稳了
一个普遍的预期是:随着图像识别AI的飞速进步,放射科医生的饭碗要被端掉了(比如,杰夫·辛顿 (Geoff Hinton) 在近十年前就做出了这个著名的预测)。
但现实是:放射科医生的行情非但没凉,反而好得很,整个领域还在不断增长。
在我看来,现在市面上充斥着大量关于AI即将对就业市场造成冲击的天真预测。
举个例子:大约一年前,有位(按理说)本该更懂行的人问我:你觉得时至今日,软件工程师这个职业是不是快没了?(我先剧透一下我的答案:我觉得我们工程师这行还得火下去)。这种论调现在实在太普遍了。
这篇文章就以放射科为例,深入探讨了为什么AI取代人类这件事,远没有那么简单:
- • 基准测试的局限性:目前AI的benchmarks,根本无法覆盖真实世界里的复杂情况。
- • 工作的多面性:医生的工作远非看片子(图像识别)一项,它牵涉到多方面的综合判断。
- • 落地的重重阻碍:现实中要部署AI,得先过好几关,比如:监管审批、医疗保险、责任认定,还有技术推广的阻力和机构的惯性。
- • 杰文斯悖论 (Jevons paradox):这个经济学现象是说,当AI作为工具让医生的效率变高时,(由于看片成本下降)反而会刺激和释放出更多的新需求。
不过话又说回来,我个人认为,在2016年拿放射科来当即将被AI取代的例子,其实并不算最恰当。
为什么?因为这个职业太复杂、风险太高。
如果真要找那些在短期内就可能被AI极大改变的职业,我倒建议去看看别处——那些看起来更像是重复性劳动的工作。
这类工作有几个特点:任务单一、彼此相对独立、环境封闭(不太需要复杂的上下文背景)、耗时短、容错率高(就算做错了,代价也很低),当然,还得是目前技术(尤其是数字技术)能搞定的。
但即便是这类工作,我估计AI在初期也多半是作为工具出现的。人们的工作内容会随之改变和重组(比如,从亲自动手转向监控或审核等等)。也许在未来,我们会找到更多、更广泛的案例,来真正看清AI到底是如何在各行各业中逐步铺开的。
对了,大约半年前,也有人拉我投票,问:五年后,你觉得世界上的软件工程师会变多还是变少?
这个问题,就留给各位读者自己思考吧。】
以及哪些工作更容易被自动化,以及为什么。
9. 物理学
孩子们应该在早期教育中学习物理,不是因为他们以后都要搞物理,而是因为这门学科最能启动一个人的大脑。物理学家是智力上的胚胎干细胞
关于这个话题,我有一篇更长的文章在草稿箱里躺了快一年了,希望我能尽快写完它。