应用开发范式或将改变! 从全球首个Software2.0架构应用说起

文摘   2024-07-22 22:46   日本  
1990年代初,第一个3w网站诞生,人们用命令行来”浏览”网站,那时大家都不知道这玩意能干啥。
前几天,号称全球第一个Software2.0架构的应用(https://genweb.rahul.gs/)诞生,简陋的像个毛坯房,还漏雨,可能你去玩都一头雾水,ta是:
  • 全自然语言编程。

  • 没有后端逻辑,全部交给大模型处理。

  • 也没有前端渲染,全部实时生成。


也许这种感觉就像当年第一个www网站诞生时的感觉。我把它看做是一个Super Agent 应用的萌芽,ta会持续学习我们的使用习惯、思维逻辑,并与我们进行更自然的人机交互


但今天更重要的是想和大家聊聊支撑这个super Agent的Software2.0架构,以及我们如何用Software2.0的思维来构建AI agent。

2. 什么是Software2.0架构


简单来说,Software2.0就是完全基于神经网络的软件。

2017年, OpenAI 创始人Karpathy 在博客中第一次提到Software2.0的概念,他说

人们往认为神经网络只是机器学习中的一个工具,不幸的是这种理解是只见树木不见森林。ta们代表了软件开发方式的一次根本性的转变,ta们是软件2.0。
People refer to neural networks as just “another tool in your machine learning toolbox”… Unfortunately, this interpretation completely misses the forest for the trees….they represent the beginning of a fundamental shift in how we develop software. They are Software 2.0.

在软件1.0,源代码是由程序员编写,这些源代码经过编译,最终转换成一个二进制文件,这个文件能够执行有用的工作。
在软件2.0中,源代码就是数据集和神经网络,而数据集定义了神经网络的参数,也定义了期望的行为
In Software 1.0, human-engineered source code (e.g. some .cpp files) is compiled into a binary that does useful work. In Software 2.0 most often the source code comprises 1) the dataset that defines the desirable behavior and 2) the neural net architecture that gives the rough skeleton of the code, but with many details (the weights) to be filled in.

原文:https://karpathy.medium.com/software-2-0-a64152b37c35
前几天,Kaparthy 时隔7年再一次在twitter上写道:
100%的软件 2.0计算机,只有一个神经网络,完全没有任何传统软件。
100% Fully Software 2.0 computer. Just a single neural net and no classical software at all. 
我用下面这张图来阐述我对software 2.0的理解

如果把软件当做一个函数,在Software1.0时代,我们用if.. else.. 的规则来定义函数,比如if 红灯: then stop;else if 绿灯: then Go。在过去的几十年中,无数程序员在代码中定义了无数个类似的规则。


而在Software2.0 时代,所有的软件都拥有同一个结构,即神经网络。程序员们无需再在函数内部写逻辑,而是用一万个诸如“ red:Stop;green:Go” 这样的数据对喂养给软件,使ta自己能习得“红灯停,绿灯行”的认知,在这里,软件是被数据和神经网络定义,而不再是被代码规则定义。


这种范式的改变,衍生出以下一些零散的、不成框架的思考。


思考1
代码规则定义,意味着软件掌握在少数定义规则的人手中;
数据和神经网络定义,意味着用户对软件的使用数据会直接影响软件本身,且这种影响不可解释,因此软件会从少数人的规则体现变为群体欲望的体现。你也可以说,人们的需求可以更容易、更直接、更充分地被满足(图中由箭头宽度代表需求被传递的效率)。


思考2
在Software1.0, 代码开源是真开源,因为规则在代码
在Software2.0,模型开源是伪开源,因为定义模型的数据在主流的开源模型里都没有公布

理论上,如果我们知道模型训练时使用了什么数据,就能让我们在面临具体业务时根据训练数据选择模型,比如有研究发现,使用了代码训练的模型比不使用代码训练的模型在推理能力上会强很多。
然而,因为我们不知道训练数据,所以只能靠实验来评测模型。

思考3
在Software2.0中, 通用数据定义了通用模型,因为通用数据本身是由社会产生、贡献的,所以价值由象征着算力成本的Token价格来置换。就像水资源本来就属于全人类,所以我们的水费是用来支付水的搬运、处理费用的
而专业数据定义了专业模型,因为专业数据是由专业人员贡献的,所以价值应该按照行业专家的咨询、人力价格等比例下降得出,比如我们很少听到一个法律模型按照token数来定价。

所以企业的数据是有独特价值的,并最终会以模型的方式兑换出来。

思考4

套用函数思维,我们可以把软件当做一个函数Y=F(x),如果想控制软件的输出值Y:


在Software1.0,我们通过更新代码完成。

在Software2.0,需要通过控制提示词和数据来完成

    • 提示词方法包括更新提示词的内容、形式、顺序,ta比我们想象中重要。

    • 数据方法就是通过合理、有效的数据来改变参数,这便是微调。



    如果你接纳或者选择跟随Software 2.0观点,那么构建数据集会变得非常重要。


    对于Agent开发者来说,我们也多了一项控制Agent的方法,那就是通过构建面向Agent开发的数据集来提升Agent的专项能力。

    3. 面向Agent开发的数据集

    对于普通的AI应用开发者来说,改变模型参数的主要方式就是SFT(有监督微调)。在SFT中,训练数据总是成对出现:数据 & 标注。随着AI技术的发展,数据标注也产生了如下的变化:判断式标注→问答式标注→Agent workflow式标注。在下图中,我给出三种形式的例子(可放大图看例子更好理解)。


    而这三种形式的数据逐步让神经网络拥有了识别能力→对话能力→工作执行能力;

    也对应着三种产品形态:识别式产品 → ChatBot对话类产 → Agent思考+执行类产品。


    其中Agent workflow式的数据集是专为Agent而生,用Agent workflow式的微调称为”Agent tuning”。如果说Agent是比Chatbot更具想象力空间,那么Agent tuning在不久的将来也可能会成为提高Agent能力的主流手段之一,之所以说可能,是因为目前Agent tuning主要在学术界活跃,还没有什么实际应用(已经整理好的Agent tuning相关论文、代码、数据集等资料,公众号回复“Agent微调”即可获得飞书链接)。 


    那么Agent tuning的数据长什么样呢,我们把上图的数据样例理解一下:User 与 Assistant 之间产生了多轮对话,最后一次回答就是这组数据的标签。而这种对话正是遵循着Re-Act模式展开(什么是Re-Act模式参考产品经理研读:Agent的九种设计模式)。


    数据集来自:https://huggingface.co/datasets/THUDM/AgentInstruct/viewer/default/webshop


    实际上Agent workflow式的数据集里,每一组训练数据就是提示词中的one shot。当你有1000个类似的样本时,就可以把它作为训练数据集来微调模型。


    那么,Agent tuning的效果如何呢?在查阅了相关的论文和开源项目后发现:

    1. 经过Agent tuning后的小模型在专业任务上的表现和原有小模型相比确实有大幅度提高

    2. 然而,这样的小模型效果
    仍然比不上最好的大模型(GPT4o)


    在我们的实践中,Agent tuning的效果也是忽上忽下,这一进程仍然在艰难的探索之中,只能说目前没有定论:按照Software 2.0的理论是正确的,但这往往需要时间来实证,也可能我们还没有找到正确的方法。


    如果你或者你所在的企业恰好也在探讨这一块,欢迎评论区留言一起来聊一下。


    最后附上已经整理好的Agent tuning相关论文、代码、数据集等资料,公众号回复“Agent微调”即可获得飞书链接,希望能为你的前沿探讨省点力。



    好,今天就到这里了,如果觉得文章有用,就关注、转发、点赞、点在看、加星标。

    参考文章
    1. Software2.0: https://karpathy.medium.com/software-2-0-a64152b37c35
    2. Agent workflow 数据集:https://huggingface.co/datasets/THUDM/AgentInstruct/viewer/default/webshop?row=1
    3. 有了COT, 大模型能做推理吗?https://zhuanlan.zhihu.com/p/589087074

    后台回复“进群”入群讨论。

     


    橱窗有更多精选好书,助你成长。

    AI工程化
    专注于AI领域(大模型、MLOPS/LLMOPS 、AI应用开发、AI infra)前沿产品技术信息和实践经验分享。
     最新文章