近日,我观看了Andrej Karpathy在YCombinator举办的一场活动中的演讲,此番经历给我留下了深刻的印象。Andrej Karpathy最初在OpenAI工作,后来跟随马斯克加入特斯拉,并担任自动驾驶项目的负责人。如今,我们提及的VibeCoding这一概念,正是由他首创。他的分享给了我不少启发,信息量也相当丰富,我打算制作一个视频来整理这些内容。他阐述了“软件三部曲”的理论体系,包括1.0、2.0以及当前的3.0版本。在“软件三部曲”中,大模型扮演着重要角色,他还探讨了如何进行VibeCoding以及如何在开发过程中让AI主动适应。这些内容让我受益匪浅,如果你对此感兴趣,不妨和我一起深入了解。
软件1.0:传统编程时代
谈及软件1.0版本,这一点易于理解,它指的是我们熟知的传统编程方式。程序员通过使用C++等编程语言,逐行编写指令,明确指示计算机执行的操作,这就像亲自指导系鞋带,逻辑条理清晰且直接。
软件2.0:神经网络的权重时代
软件2.0阶段,Karpathy指出,当前时代的关键在于神经网络的权重,这一点与传统编程存在根本差异。在这一阶段,你不再直接编写代码,而是通过大量数据来训练一个模型,并通过对参数的优化来获得相应的结果。这些权重,也就是所谓的“训练出来的能力”。
Karpathy以特斯拉为例,指出其AutoPilot系统中的神经网络(即软件2.0版本)正持续吸收着先前的C++代码(即软件1.0版本)。他巧妙地做了类比:将GitHub比喻为软件1.0时代的代码存储库,而Hugging Face则如同软件2.0时代的GitHub——GitHub负责存储代码,Hugging Face则专注于保存模型,并且这些模型在新时代中扮演着“代码”的角色。
软件3.0:大型语言模型时代
我们已踏入软件3.0的新纪元,其中大型语言模型扮演着核心角色。或许你会产生疑问:LLM不也是神经网络的一种吗?那么,它与软件2.0之间究竟有何根本的不同之处呢?
核心在于其广泛适用性和变动自如。以往的模式功能较为局限——若训练它进行图像识别,那么它便只能执行图像识别任务,相当于一种专用工具。然而,LLM却具有极高的通用性,通过自然语言编写的提示词,可以像编程一样,使其胜任众多不同的工作。
进行情感评估,过去你得依照1.0版本编写大量规则,或者采用2.0版本对特定模型进行训练。而现在,借助3.0版本,你只需对LLM说“请帮我评估这段话的情感倾向是正面还是负面”即可。
这预示着在将来,编写代码或许不再占据核心地位,而如何与人工智能进行交流,如何巧妙地构思提示语,将成为关键所在。
对LLM的多重比喻
Karpathy用了几个比喻来理解LLM:
公共设施类比:他比喻LLM如同遍布的电网,而训练LLM则如同建造发电厂,其投入巨大,技术要求极高。公司通过API将“智能”服务传递给我们,按照使用量进行收费,这就像我们缴纳电费一样。一旦顶级的模型出现故障,那便如同“智能”服务突然中断,即所谓的“智能停电”。
芯片制造企业类比:着重指出技术门槛之高,开发大型语言模型不仅需要大量的资金投入,还必须掌握尖端技术。与此同时,软件的复制相对简单,与硬件的稀缺性形成鲜明对比。
操作系统类比:在他看来,这种比喻最为恰当。大型语言模型并非仅仅是一种工具,它们正在逐渐演变成一个复杂的软件生态系统。就好比存在Windows、MacOS等闭源操作系统,同样也有Linux这样的开源系统,在LLM领域,也有GPT系列和Llama等开源模型。
他甚至将LLM比作CPU,并将上下文窗口比喻为内存RAM。这一比喻颇具洞见,却同时也揭示了问题所在:我们希望操作系统稳定且可预测,然而当前的LLM却常常出现失误,甚至有时会一本正经地胡言乱语。
LLM的史前时代
Karpathy提出,目前我们正位于LLM的“史前时期”,与计算机科学的1960年代相仿:计算资源价格高昂,主要掌握在云端的大型企业手中;我们通过API进行分时调用;交互方式以文本为主;尚未在个人设备上广泛应用;图形界面尚不完善。
当前的不确定性与难以预料,或许正是早期操作系统所呈现的景象——尚未成熟,却正迅速进步。
LLM:矛盾的超能力者
与LLM展开合作是一种怎样的感受?Karpathy生动地比喻LLM为一种充满矛盾的实体。一方面,它们就如同《无敌浩克》中的主人公,拥有庞大的知识储备和惊人的记忆力,简直可以称作是知识宝库。
另一方面,存在显著的认知不足:会制造出幻觉(虚构信息);智能程度波动不定,可能在瞬间展现出出色的口才,紧接着却会犯下简单的错误,例如固执地认为9月11日比9月9日更早;同时还有所谓的“健忘症”——无法像人类那样通过持续的交流来积累知识,每次对话都需从头开始,上下文信息仅限于短期记忆;且容易受到误导,遭受提示词的植入式攻击。巧妙的措辞就能绕过安全限制或让它们干怪事。
部分自主型应用的崛起
若要与之进行“天才白痴”式的合作,关键在于深刻领会并容纳其特性,发挥其优势,规避其不足。由此,便衍生出了“部分自主型应用”这一理念。
软件操作已不再仅限于人工,而是引入了人工智能的辅助。以编程领域的Cursor助手和研究工具Perplexity为例,它们正致力于帮助你理解和处理文本内容,以及调用各种模型。这样的结合,既有人类的监督,又有AI的助力。
Karpathy特别着重指出图形界面(GUI)的至关重要性:人们借助视觉界面来审视AI所生成的内容,其效率远超于阅读大量文本,直觉能更迅速地捕捉到问题所在。这一点与我的一个看法不谋而合,即AI的界面层,即UI/UX,正是我们利用大模型应用的一个绝佳机遇。
在与AI协作的过程中,我发现调整AI的参与度是一个相当棘手的问题,特别是在Vibe编程中,是选择在旁边提供建议,还是完全放手让它承担部分工作。我们的目标是建立一个高效的“AI创作-人工审核”的循环,同时还要对AI进行适当的约束,防止它一次性生成过多内容,使得审核工作变得难以进行。
钢铁侠战衣 vs 完全自主
Karpathy警示我们不要急于追求全自动化,他指出2013年谷歌展示的自动驾驶技术看似无懈可击,然而时至今日,完全无人驾驶技术仍未得到广泛应用。因此,他提倡构建“钢铁侠战衣”——首先提升我们的能力,同时也要确保有空间让自主性逐步增强。这种做法非常务实:从辅助驾驶起步,逐步减少干预。
自然语言编程的机遇与挑战
这催生了“VibeCoding”这一概念:这个词如今颇受欢迎,而且正是Karpathy所创。得益于自然语言与AI的交流,即便是编程知识有限的人,也能通过阐述自己的思路,让AI生成基础的软件。Karpathy本人便运用此法开发出了iOS应用,以及为食谱添加图片的网站。
尽管编码过程变得更为简便,然而面临的挑战依旧不容小觑。要将创意成功转化为实际可用的产品,我们必须克服用户登录、支付以及后端服务等方面的诸多复杂难题,而这些问题的解决仍依赖于传统的软件开发方法。
这部分内容我确实赞同,原因在于我去年参与了一个名为OneDayBuild的产品开发。该产品旨在为开发者构建AI Agent这类工具时,提供平台所需的基础功能。例如,登录、支付、邮件、SEO以及用户管理等,这些都是每个平台都必备的、虽略显枯燥却不可或缺的功能。将这些传统软件工程所需的功能打包,创业者便无需再为此类事务劳神。即便是在AI编程领域,此类功能的实现也非一朝一夕之功。因此,OneDayBuild旨在协助您克服这些难题。
为AI Agent准备数字基础设施
Karpathy洞察到一个关键机遇——我们亟需着手搭建更加人性化的数字环境,以供未来的人工智能实体使用。
具体而言,提供给AI的文档应优先采用易于AI解析的Markdown格式,而非图文丰富的、对机器友好的网页格式;在网站操作上,直接提供API指令会比仅仅提示“请点击这里”更加高效;此外,诸如git-ingest等开发工具,可以将整个代码库整合并打包成LLM能够直接处理的格式。
在根本意义上,我们必须积极调整以适应人工智能,对现行体系进行革新,以便人工智能能够更便捷地融入并实现互动。
独特的技术扩散模式
最终,Karpathy指出,LLM技术呈现出一种与众不同的传播轨迹——它呈现的是逆向扩散。过往的许多重要技术,如电力和互联网,起初都是在工业企业中得到应用,随后才逐渐推广至个人用户。然而,LLM技术却是先在消费者群体中崭露头角(如大众对GPT的广泛使用),随后逐渐在企业与政府部门中渗透。
这种自下而上的逆向传播方式与以往大相径庭,它对AI工具未来发展趋势的塑造、对社会生活节奏的改变以及创新模式的演变,都引发了我们深刻的关注与思索。
结语
我们正处于一个既充满激情又面临诸多考验的变革时期。关键在于深刻把握这一新兴物种的习性,进而探索与之和谐共处的最佳途径。软件的发展轨迹已从我们编写指令,过渡到训练权重,直至如今的自然语言交流——这不仅标志着技术的飞跃,更是人机交互模式的根本性转变。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://mjgaz.cn/fenxiang/276227.html