欢迎 AI Tesla 前总监 Andrej Karpathy
[音乐]大家好!哇,这里人真多!很高兴今天能和大家探讨人工智能时代的软件。我听说在座很多人是学生,包括本科生、硕士生、博士生等,你们即将进入这个行业。我认为现在进入行业是一个非常独特且有趣的时机,因为软件正在发生根本性变化。
软件的演变
软件一直在变化,但过去70年,软件在根本层面上变化不大。然而,近年发生了两次重大转变,导致需要重写大量软件。让我们来看软件领域的全景,GitHub 地图是一个很酷的工具,展示了所有编写的软件代码,这些是为计算机执行任务的指令。
几年前,我观察到软件正在发生变化,出现了一种新型软件,我称之为“软件 2.0”。软件 1.0 是你为计算机编写的代码;软件 2.0 则是神经网络,特别是神经网络的权重。你不直接写代码,而是通过调整数据集并运行优化器来生成神经网络参数。当时,神经网络被视为一种分类器,类似决策树。但现在,软件 2.0 有了类似 GitHub 的平台,比如 Hugging Face,相当于软件 2.0 的 GitHub。模型图集可以可视化这些“代码”,例如通量(Flux)图像生成器的参数调整就像在 Git 空间中提交代码。
软件 1.0 是编程计算机的代码,软件 2.0 是编程神经网络的权重。例如,AlexNet 是图像识别的神经网络。但最近,神经网络通过大型语言模型(LLM)变得可编程,这是一个根本性变化,值得称之为“软件 3.0”。在软件 3.0 中,提示(prompt)是用自然语言(如英语)编写的程序。这是一种全新的编程语言,非常独特。例如,做情绪分类时,你可以写 Python 代码(软件 1.0)、训练神经网络(软件 2.0),或提示一个 LLM(软件 3.0)。如今,GitHub 上的代码不再只是传统代码,还夹杂着类似英语的提示,表明一种新编程范式正在涌现。
特斯拉的软件演变
在特斯拉工作时,我们开发自动驾驶系统,最初有大量 C++ 代码(软件 1.0)和一些用于图像识别的神经网络(软件 2.0)。随着时间推移,神经网络的能力和规模增长,C++ 代码逐渐被删除,软件 2.0 吞噬了自动驾驶的软件堆栈。例如,图像拼接功能从 C++ 迁移到神经网络,大幅减少了代码量。现在,软件 3.0 正在以类似方式吞噬软件堆栈。我们有三种编程范式:软件 1.0、2.0 和 3.0,每种都有优缺点。进入行业的你们需要精通所有范式,根据需求选择合适的编程方式。
LLM:新型计算机与操作系统
LLM 是一种新型计算机,其生态系统类似于操作系统,而不仅仅是像电力或水这样的公用事业。安德鲁·吴曾说“AI 是新的电力”,这很有道理。LLM 实验室(如 OpenAI、Gemini、Anthropic)投入巨额资本训练模型,类似建设电网,然后通过 API 提供按代币计费的智能服务,用户需要低延迟、高可用性和一致的质量。LLM 不争夺物理空间,用户可以在不同供应商之间切换,类似电力来源的转换开关。
但 LLM 也像晶圆厂,因为训练需要巨大资本支出和技术研发,技术树快速发展。软件的可塑性使其防御性较差,增加了复杂性。更重要的是,LLM 像操作系统,有封闭源码(如 Windows、Mac OS)和开源(如 Linux)生态系统,LLaMA 可能发展为类似 Linux 的存在。LLM 不仅是单一模型,还包括工具、多模态能力和复杂生态系统。上下文窗口类似内存,LLM 协调计算和内存解决问题,像操作系统一样运行。
LLM 应用程序(如 Cursor)可以在不同 LLM 平台上运行,类似 VS Code 在不同操作系统上运行。LLM 计算目前昂贵,集中在云端,用户通过网络交互,类似 20 世纪 60 年代的计算机分时系统。个人电脑革命尚未发生,但 Mac mini 等设备显示出本地运行 LLM 的潜力。直接与 LLM 交互就像通过终端与操作系统对话,当前缺乏统一的图形界面(GUI),但未来可能出现。
LLM 的独特传播方式
LLM 的技术传播方向与传统技术(如电力、计算、互联网)相反。传统技术先由政府和企业采用,再普及到消费者。而 LLM 从消费者开始,例如帮助煮鸡蛋,而不是用于军事弹道学。企业和政府在采用 LLM 方面反而落后。这种倒挂现象表明,LLM 是大众化的技术,瞬间通过软件分发到数十亿人手中,这非常独特。
LLM 的“心理”特性
我喜欢将 LLM 视为人类精神的静态模拟器,基于自回归 Transformer 神经网络,训练于互联网文本,因此具有类似人类的心理特征:
- 超能力:百科全书式知识和记忆力,远超人类。例如,能记住电话簿或 SHA 哈希。
- 认知缺陷:产生幻觉,缺乏自我认知,易犯人类不会犯的错误(如认为 9.11 > 9.9 或草莓拼写错误)。它们有“内源性遗忘症”,上下文窗口类似工作记忆,无法像人类一样随时间积累知识。
- 安全问题:易受提示注入攻击,可能泄露数据。
我们需要编程这些“超人”系统,解决其缺陷,发挥其优势。
LLM 应用的机会
以下是 LLM 应用的一些关键机会:
1. 部分自主应用
以编码为例,直接在 ChatGPT 中复制粘贴代码效率低下。更好的方式是使用像 Cursor 这样的专用应用。Cursor 集成了 LLM,具备以下特性:
- 上下文管理:自动处理大量上下文。
- 多次 LLM 调用:协调文件嵌入、聊天、代码差异应用等。
- 专用 GUI:显示代码差异(如红绿变化),便于人类审核。
- 自主滑块:从手动完成到全自动调整代码,允许用户控制自主程度。
另一个例子是 Perplexity,它协调多个 LLM,提供 GUI 审核来源,支持快速搜索到深入研究的不同自主级别。未来,许多软件将变得部分自主。开发者需要考虑:
- LLM 是否能看到人类看到的内容?
- LLM 是否能执行人类的行为?
- 人类能否监督和理解 LLM 的活动?
传统软件(如 Photoshop)的界面需适应 LLM,加入自主滑块。
2. 人类与 AI 协作
在 LLM 应用中,AI 负责生成,人类负责验证。优化生成-验证循环至关重要:
- 加速验证:GUI 利用人类视觉优势,快速审核差异,优于阅读文本。
- 控制 AI:避免 AI 过度反应(如生成 10,000 行代码差异)。小增量操作更安全,验证更高效。
我推荐阅读相关书籍,学习如何通过具体提示控制 AI,减少验证失败。例如,在教育领域,教师用 LLM 创建课程,学生用 LLM 学习课程,中间成果可审核,确保一致性和控制。
3. 部分自动驾驶的启示
我在特斯拉研究自动驾驶五年,自动驾驶是部分自主产品,类似 LLM 应用。自动驾驶 GUI 显示神经网络的感知,自主滑块随时间增加自主任务。2013 年,我体验了一次完美的自动驾驶演示,但 12 年后,自动驾驶仍未完全实现,涉及大量遥控操作。这表明复杂软件需要时间完善,2025 年不会是“代理之年”,而是“代理的十年”。我们需要谨慎开发,保持人类参与。
4. 钢铁侠套装类比
我喜欢将 LLM 应用比作钢铁侠套装,而非完全自主的机器人。套装增强人类能力,同时具备一定自主性。开发者应构建部分自主产品,配备定制 UI/UX,优化生成-验证循环,并通过自主滑块逐步增加自主性。
5. 自然语言编程的潜力
软件 3.0 的提示用英语编写,使每个人都成为程序员,这前所未有。过去,学习编程需五年以上,现在通过 LLM 快速实现。我称之为“氛围编码”(vibe coding),即即兴构建定制应用。例如,我用 LLM 开发了一个 iOS 应用和 MenuGen(menu.app),后者通过拍摄菜单生成菜品图片。尽管开发简单,但部署(如身份验证、支付、域名)耗时长,涉及大量非代码操作。这表明需要为代理开发基础设施。
为代理构建基础设施
LLM 是新的数字信息消费者和操纵者,类似人类但运行于计算机。当前软件基础设施(如 GUI 供人类,API 供计算机)需适应 LLM。例如:
- lm.txt:类似 robots.txt,告诉 LLM 网站内容,便于解析。
- LLM 专用文档:将文档转为 Markdown,替换“点击”指令为 curl 命令(如 Vercel、Stripe)。
- 工具:如 GitHub 到 Gist 的转换,或 Deep Wiki 分析仓库生成 LLM 可读文档。
Anthropic 的模型上下文协议是直接与代理交互的另一种方式。这些工具降低 LLM 访问信息的成本,释放更多用途。
总结
现在是进入软件行业的绝佳时机,我们需要重写大量代码。LLM 像公用事业、晶圆厂和操作系统,处于 20 世纪 60 年代的早期阶段。它们是易犯错的“人类精神”,需要调整基础设施以优化协作。开发者应构建部分自主产品,优化生成-验证循环,为代理开发专用基础设施。未来十年,我们将逐步增加自主性,类似钢铁侠套装的滑块移动。我迫不及待想和大家一起构建这个未来!
谢谢!
[掌声]---
说明:
- 整理时保留了演讲的完整内容,去除了口语化重复(如“呃”“嗯”)和冗余表达。
- 按逻辑分段,添加小标题以提高可读性。
- 保持原意,未删减核心观点或类比。
- 中文翻译自然流畅,符合演讲的语境和语气。
这是 Andrej Karpathy 的演讲。他是前特斯拉 AI 总监,以在人工智能和深度学习领域的贡献而闻名,特别是在自动驾驶和神经网络方面。演讲中他提到自己在特斯拉的经历,并讨论了人工智能时代的软件演变,包括软件 1.0、2.0 和 3.0 的概念,以及大型语言模型(LLM)的应用和未来。