纸飞机下载

纸飞机:Karpathy 最新演讲精华:软件30时代每个人都是程序员

新闻 2025-06-22 23:58

  

Karpathy 最新演讲精华:软件30时代每个人都是程序员

  Andrej Karpathy在YC旧金山创业大会上发表了关于软件3.0时代的演讲,强调了自然语言提示在编程方式上的变革。

  2.软件1.0时代以传统代码定义和构成,而软件2.0时代以神经网络权重定义和构成,软件3.0时代则通过大型语言模型(LLMs)的提示进行编程。

  3.Karpathy将LLMs比作20世纪60年代的操作系统,预示着个人计算的下一次革命。

  4.软件3.0时代带来了巨大的机遇,如开发部分自主应用,整合LLM的能力,执行更多上下文管理、多模型编排和提供特定应用的GUI。

  5.然而,软件3.0时代也面临挑战,如可解释性差、非直观的失败和易受对抗性攻击等。

  软件行业正在经历的范式转变。介绍了软件从传统编码(软件 1.0)到神经网络(软件 2.0)的演变,并着重阐述了由大型语言模型(LLMs)驱动的软件 3.0 时代。

  在这个新时代,自然语言提示成为编程方式,他将 LLMs 比作 20 世纪 60 年代的操作系统,预示着个人计算的下一次革命。

  Karpathy 真的很神奇,每次都能用非常形象的比喻让不那么专业的人理解他讲的事情。比如这个Agent 构建路线上钢铁侠的比喻:

  他认为,我们应该专注于构建“钢铁侠战甲”(增强工具),而不是“钢铁侠机器人”(完全自主Agent)这些产品应具备自定义 GUI 和用户体验,以加速人类的生成-验证循环,同时仍提供自主性滑块,允许产品随时间变得更加自主。

  定义和构成:软件1.0是程序员用诸如Python、C++等编程语言直接编写的明确指令12。每一行代码都是程序员为计算机设定的具体任务指令,使其在数字空间中执行特定功能12。它是我们所熟悉的“经典软件栈”2。

  编程方式:人类通过编写源代码(例如.cpp文件)来直接编程23。源代码随后被编译成可执行的二进制文件3。

  代码库示例:GitHub可以被视为软件1.0代码的“地图”或等同物,展示了所有这些通过指令编写的代码14。

  非恒定运行时间与内存使用:代码的执行路径可能导致运行时间不固定,且存在动态内存分配,可能导致内存泄漏或不确定的内存使用。

  可移植性挑战:与神经网络相比,传统二进制文件或脚本在任意计算配置上运行的难度更大。

  迭代灵活性差:如果需要将C++代码的运行速度提高一倍,调整系统以适应新的规范将非常困难。

  模块化限制:软件通常被分解为通过公共函数、API或端点进行通信的模块,但它们通常无法像软件2.0模块那样在更深层次上协同优化。

  定义和构成:软件2.0的核心是神经网络的权重。这些权重是一种更抽象、对人类不友好的语言。它不是由人类直接编写的,因为神经网络通常有数百万个权重,手动编写极其困难。

  编程方式:编程过程不是直接写代码,而是通过调整数据集,然后运行优化器来创建神经网络的参数(权重)。换句话说,其“源代码”包括定义所需行为的数据集和神经网络架构的粗略骨架。神经网络的训练过程将数据集“编译”成最终的神经网络(二进制文件)。

  代码库示例:Hugging Face的Model Atlas被认为是软件2.0领域的GitHub等价物,可以可视化神经网络的参数。

  :随着时间推移,软件2.0在功能和规模上不断增长,并逐渐取代了许多原本由软件1.0编写的功能。

  :典型的神经网络主要由两种操作组成:矩阵乘法和阈值处理(ReLU),这使得其正确性和性能保证更容易实现。

  :神经网络指令集相对较小,更容易在定制ASIC或神经形态芯片等更接近硅的硬件中实现。

  :神经网络的每次前向传播迭代所需计算量固定,内存使用量也恒定,避免了动态内存分配和内存泄漏的问题。

  :可以轻松调整网络(如通过移除一半通道或增加更多通道)以满足新的性能或准确性要求,只需重新训练即可。

  :如果两个独立训练的软件2.0模块交互,可以通过反向传播对整体进行优化,使其融合成一个最优的整体。

  :在图像/视频和声音/语音等领域,神经网络通常能产生比人类编写的代码更好的结果。

  :用于图像识别的AlexNet神经网络,特斯拉自动驾驶中的图像识别神经网络,以及AlphaGo Zero等游戏AI。

  定义和构成:软件3.0是大型语言模型(LLMs)通过提示(prompt)进行编程的新范式。LLMs本身被视为一种新型计算机。

  编程方式:编程语言是自然语言,尤其是英语。用户通过输入提示来“编程”LLM,使其执行特定任务。

  :编程不再需要专业的编程知识,每个人都能通过自然语言进行编程,因为每个人都说自然语言。

  :LLMs被类比为一种新的操作系统。与LLM的文本聊天就像通过终端直接访问操作系统。

  :这种技术扩散方向与传统技术相反,LLMs首先为普通个人带来了巨大的能力提升,而非政府或大型企业。ChatGPT是历史上增长最快的消费级应用。

  :软件3.0的机遇在于开发部分自主的应用,这些应用能整合LLMs的能力,执行更多上下文管理、多模型编排、提供特定应用的GUI,并允许用户通过“自主性滑块”调整AI的介入程度。

  :未来的文档将需要为Agent(agents)而非人类编写,例如将“点击”指令替换为LLMs可以执行的cURL命令。

  :LLM的计算目前仍然非常昂贵且集中在云端,类似于1960年代的大型机和分时系统时代,个人计算革命尚未到来。

  :LLMs被视为“人的精神的随机模拟”,具有百科全书般的知识,但也存在认知缺陷,如幻觉、不均匀智能(在某些领域超人,但在另一些领域犯基本错误)、顺行性遗忘(无法通过学习整合知识到权重中,每次交互上下文会被擦除)以及容易受骗(容易受到提示注入攻击,可能泄露数据)。

  :由于LLMs仍然是易错的系统,需要人类在循环中进行监督和验证,因此快速的“生成-验证”循环和“系好AI的缰绳”至关重要,以避免生成过大或错误的代码。

  LLMs 像电力一样,需要巨大的资本支出(CAPEX)进行训练(相当于建设电网),并通过 API 提供服务(OPEX,按量付费),用户对低延迟、高可用性和一致质量有需求。当领先的 LLMs 停止运行时,就像“智能断电”,整个世界仿佛变得“更笨”。OpenRouter 扮演着“电源转换开关”的角色,允许用户在不同 LLM 提供商之间切换。

  LLMs 的训练需要巨大的资本投入,涉及深层技术树的研发和秘密。使用 NVIDIA GPU 训练模型类似于“无晶圆厂”模式,而像 Google 这样拥有 TPU 并训练自己的模型,则类似于拥有“晶圆厂”(如 Intel)。然而,由于软件的延展性,其防御性不如物理基础设施。

  这是最恰当的类比。LLMs 正日益成为复杂的软件生态系统,而非简单的商品。LLM 应用(如 Cursor)可以在不同的 LLM 后端(如 GPT、Claude、Gemini)上运行,就像 VS Code 可以在 Windows、Mac 或 Linux 上运行一样。我们正处于 LLM 计算的“1960 年代”:计算资源昂贵,LLMs 集中在云端,用户通过网络进行“分时”访问,个人计算革命尚未到来。与 LLM 直接的文本交互感觉就像通过终端与操作系统对话,而通用的图形用户界面(GUI)尚未被发明。

  与以往大多数颠覆性技术(如电力、密码学、互联网、GPS)自政府/军事领域开始,然后扩散到企业,最后才普及到消费者不同,LLMs 展现出惊人的逆转。ChatGPT 是历史上增长最快的消费者应用,它为普通人带来了不成比例的巨大益处,例如写作、编程、翻译、辅导、头脑风暴等,而其在企业和政府层面的影响则相对滞后和不明显。这是因为 LLMs 提供了广泛但并非深厚的“准专业知识”,这对于个人来说是巨大的能力提升,因为他们通常只擅长一件事,而组织本身就拥有多样化的专业知识,LLMs 只是提高了其效率。此外,组织面临更高的复杂性、整合难题、安全协议、隐私、合规性以及固有的组织惯性等挑战,这些都阻碍了 LLMs 的快速采用。

  Andrej Karpathy 将 LLMs 视为“人魂”(people spirits),是人类的随机模拟器。它们因在海量文本上训练而具备了类似人类的“涌现心理学”:

  超能力:拥有百科全书般的知识和记忆,远超任何个体人类(类似于电影《雨人》中的达斯汀·霍夫曼)。

  :在某些问题解决领域表现超人,但在其他方面会犯下人类不会犯的低级错误(例如坚持“9.11 大于 9.9”,或“strawberry 有两个 R”)。

  :LLMs 无法像人类一样通过经验自动学习、巩固知识或形成专业知识(类似于电影《记忆碎片》和《50 次初恋》中的主角)。它们的上下文窗口(context window)就像工作记忆,需要直接编程来管理。

  :容易受到提示注入(prompt injection)风险,可能泄露数据。

  鉴于 LLMs 既有超能力又有认知缺陷,关键在于如何编程它们,利用其超能力,同时规避其缺陷。

  :与其直接与 LLM 像与“操作系统”一样对话(例如直接在 ChatGPT 中复制代码),不如使用专门的 LLM 应用,如 Cursor,它提供了更好的用户体验。

  :在后台协调和调用多个 LLM 模型(例如,嵌入模型、聊天模型、代码差异应用模型等)。

  :提供人类友好的图形界面,以便用户轻松审计 LLM 的工作、快速接受或拒绝建议。例如,通过红绿色的差异显示代码修改,或通过快捷键接受/拒绝。

  :允许用户根据任务复杂性调整 LLM 的自主程度,从简单的文本补全到全Agent模式。Perplexity 搜索应用也是一个很好的例子,它提供从快速搜索到深度研究的不同自主性级别。

  :LLM 应用的工作流应侧重于 AI 生成和人类验证,目标是让这个循环尽可能快地进行。GUI 在加快验证速度方面至关重要,因为它利用了人类的视觉处理能力,比阅读纯文本更高效和有趣。

  :鉴于 LLMs 的不完美和易犯错,必须将 AI 保持在“牵引绳”上。

  在 AI 辅助编程中,工作时应遵循小步、增量的方式,每次只处理一个具体的任务,避免生成过大的代码差异,确保质量和安全。

  在教育等领域,可以创建可审计的中间产物(例如课程大纲),将 AI 限制在特定框架内,防止其“迷失方向”。

  Karpathy 在 Tesla 自动驾驶系统工作了五年,这是一个部分自主的产品。他回忆起 2013 年第一次乘坐 Waymo 自动驾驶汽车的完美体验,曾以为自动驾驶很快就会实现,但十多年后,自动驾驶仍然在发展中,需要大量的人工干预。这表明从“演示”到“产品”之间存在巨大鸿沟,需要大量艰苦的工作,尤其是在需要高可靠性的领域。因此,他认为“2025 年是Agent之年”的说法过于乐观,更像是“2025-2035 年是Agent十年”。

  Karpathy 认为,我们应该专注于构建“钢铁侠战甲”(增强工具),而不是“钢铁侠机器人”(完全自主Agent)。这些产品应具备自定义 GUI 和用户体验,以加速人类的生成-验证循环,同时仍提供自主性滑块,允许产品随时间变得更加自主。

  机遇:由于 LLMs 可以通过自然语言编程,大大降低了软件开发的门槛,使得“人人都是程序员”成为可能。

  亲身体验:Karpathy 亲自尝试了“Vibe Coding”,用 Swift 编写了一个简单的 iOS 应用,并开发了 MenuGen (menugen.app) —— 一个能根据菜单照片生成菜品图片的应用程序。他发现,使用 LLM 编写代码反而是最容易的部分。

  挑战:将 Vibe Coding 的原型变为真正的产品(如集成身份验证、支付、域名、部署等)却异常困难,因为这涉及到大量在浏览器中点击的操作,而不是编写代码。

  Andrej Karpathy 强调,我们现在需要为一种新的数字信息消费者和操纵者——“Agent”——进行构建。这些Agent是类人的计算机,它们需要与我们的软件基础设施交互。

  ,这是一个简单的 Markdown 文件,用于告诉 LLMs 网站的内容和行为规则,比解析 HTML 更高效和准确。

  :许多服务(如 Vercel 和 Stripe)已经开始将其文档从人类友好的格式(包含图片、加粗、列表)转换为 LLM 容易理解的 Markdown 格式。此外,文档中的“点击”等操作指令也正被替换为 LLM Agent可以执行的

  可以将 GitHub 仓库中的所有文件连接成一个巨大的文本文件,并保留目录结构,方便 LLM 理解。DeepWiki 甚至可以自动分析 GitHub 仓库并为 LLM 生成完整的文档页面。

  :尽管 LLMs 未来可能能够像人类一样点击操作,但让信息更容易被它们访问仍然非常有价值,因为直接模拟人类行为通常成本更高、难度更大。

  我们正站在计算历史上最深刻的转折点。如果说软件1.0让我们学会了与机器对线让机器学会了看和听,那么软件3.0则第一次让机器真正理解了我们。

  未来十年,当我们回望今天,会发现2025年不仅是Agent元年,更是人机共生新纪元的开端。我们正在为一个全新的数字居民——Agent——构建基础设施,从lm.txt到Agent友好的文档,从部分自主应用到全新的交互范式。

  在这个智能断电会让世界变笨的时代,因为这意味着智能已经成为了新的基础设施。现在的 AI 领域从业者正在构建那些今天看起来不可思议,但明天会变得不可或缺的应用。

上一篇:购房返佣承诺成空谈?看法院教你如何合!

下一篇:HDC 2025鸿蒙系统再升级 鸿蒙电脑开发应用生态发展持续加速

猜你喜欢