随着大模型能力的不断进化,“AI如何落地”成为了现阶段最被关心的一个问题——如何将大模型演示的各种“神奇能力”落地到生产环境、产生真正的商业价值?很多人认为,底层大模型的能力还不够强,期待依靠大模型能力的升级来加速AI落地。这固然是一个重要因素,但大模型接下来的能力涌现和边界并不确定,升级要等多久也不确定。除了将全部希望寄托在大模型本身的升级之外,我们看到最近业内一个新认知:认为现阶段大模型已经提供了足够“智能”的底座,落地需要的是把大模型跟不同技术组合使用,来实现AI能力最大化。具体而言,是构建出一套能够最大化大模型能力的复合系统来调度大模型。
近日,伯克利人工智能研究实验室(BAIR)发表的一篇文章(https://bair.berkeley.edu/blog/2024/02/18/compound-ai-systems/),很好地分析了这一全新趋势——从大模型到复合人工智能系统的迁移。文章详细地阐述了目前兴起的一些复合AI系统范式,并探讨了构建复合AI系统的挑战和方法。我们认为这篇文章很有价值,正如Databricks CEO Ali Ghodsi对它的评价:“我认为这标志着通用人工智能的一个重要里程碑。到目前为止,人们关注的焦点一直是大模型的能力,但很明显,目前仅凭大模型的性能是无意义的。你将需要一个复合人工智能系统来从模型中获得最佳性能。展望未来,我认为我们将看到人们构建完整人工智能系统方式上的重大突破。“
我们认为这是一篇非常重要的论文,复合AI系统将提升AI应用质量和可靠性,加速落地,这可能是2024年AI中最重要的一个趋势。这里将这篇文章编译出来,分享给大家。
01 如何最大化AI效果:从大模型到复合人工智能系统的迁移
2023 年,人工智能凭借大型语言模型 (LLM) 引起了所有人的关注,只需提示即可指示该模型执行一般任务,例如翻译或编码。这自然导致了人们对模型作为AI应用开发主要成分的强烈关注,每个人都想知道新的大模型士将带来什么能力。然而,随着越来越多的开发者开始使用大模型进行构建,我们发现这种关注点正在迅速发生变化:最先进的人工智能结果越来越多地通过具有多个组件的复合系统获得,而不仅仅是单一模型。
例如,Google AlphaCode 2通过精心设计的系统在编程方面取得了最先进的结果,该系统使用大模型为一项任务生成多达 100 万个可能的解决方案,再筛选出最终解决方案。同样, AlphaGeometry将大模型与传统的符号求解器相结合来解决奥数问题。在企业场景中,来自Databricks 的一项调查表明,60%的LLM 应用程序使用了某种形式的检索增强生成 (RAG),30%使用了多步骤链。即使是从事传统语言模型任务的研究人员,过去常常从单一的LLM调用中报告结果,现在也开始报告来自越来越复杂的推理策略的结果:微软描述了一种链式策略,该策略在医学考试上的准确率超过了GPT-4 9%,而谷歌Gemini则通过一种新的CoT@32推理策略来衡量其MMLU基准测试结果,该策略调用模型32次,这引发了关于与仅对GPT-4进行单次调用比较的问题。
这种转向复合系统开启了许多有趣的设计问题,但同时也令人兴奋,因为这意味着领先的AI结果可以通过巧妙的工程设计来实现,而不仅仅是通过扩大训练规模。这可能指向了未来最大限度提高AI应用质量和可靠性的最佳方式,并且可能是 2024 年人工智能最有影响力的趋势之一。
越来越多的新人工智能成果来自复合系统
复合人工智能系统是指使用多个交互组件(包括对模型、检索器或外部工具的多次调用等)处理AI任务的系统。相比之下,AI模型只是一个统计模型(例如预测文本中下一个标记的Transformer)。虽然底层大模型的能力在不断提升,并且其扩展还没有明显的终点,但在实际的使用中,复合AI系统已经获得了许多超越现有模型本身的效果,究其原因,有如下几点:
一些任务更容易通过系统设计来改进。虽然大模型目前仍遵循着显著的scaling law——越多的算力和数据可以产生越好的结果。但在许多应用中,Scaling law提供的ROI比构建复合系统要更低。例如,假设当前最好的大模型能够在编程竞赛问题中达到30%的准确率,将其训练预算增加三倍预计会将这一比例提高到35%;但这仍然不足以赢得编程比赛。相比之下,设计一个AI系统,从模型中多次采样,测试每个样本等,可能会将今天模型解决问题的准确率提高到80%(正如 AlphaCode等工作所展示的)。更重要的是,迭代系统设计比等待训练运行要快得多。系统可以是动态的。机器学习模型是在静态数据集上进行训练的,因此它们的“知识”是固定的。因此,开发者需要将模型与其他组件(例如搜索和检索)结合起来,以合并实时的数据。此外,训练过程会让模型“看到”整个训练集,因而,当涉及构建具有访问控制的AI应用时,就需要更复杂的系统来进行控制(例如,仅根据用户有权访问的文件回答用户的问题)。使用系统可以更轻松地改善控制和信任。大模型本身很难被控制:虽然训练能够影响它们,但无法保证让模型去避免某种行为。使用人工智能系统可以帮助开发者更严格地控制大模型的行为,例如过滤模型输出。同样,即使是最好的大模型仍然会产生幻觉,但将大模型与检索相结合的系统可以通过提供引文或自动验证事实来增加用户信任。更好地控制ROI。每个大模型都有固定的质量水平和成本,但应用通常需要改变这些参数。在某些应用中,如代码生成建议,用最好的大模型太昂贵,因此 Github Copilot 等工具使用微调的较小模型以及各种搜索启发式方法来提供结果。在其他应用场景中,即便是是最好的模型如GPT-4,也依然显得非常便宜——许多用户愿意支付更高的价格来获得正确的法律意见,而不是花几美分来询问GPT-4,在这种情况下,开发者也需要设计一个AI 系统以更好地利用更高的预算。从只关注大模型向复合系统的转变也符合其他人工智能领域的行业趋势,例如自动驾驶汽车领域,大多数最先进的实现都是具有多个专用组件的复合系统。因此,我们相信,即使模型不断提升,复合人工智能系统仍将保持为领先的范式。虽然复合人工智能系统可以提供明显的好处,但设计、优化和操作它们的技术仍在不断涌现。从表面上看,人工智能系统似乎是传统软件与大模型的结合,但其中存在许多有趣的设计问题。例如,整体“控制逻辑”应该用传统代码(例如调用LLM的Python代码)编写,还是应该由AI模型驱动(例如调用外部工具的AI Agent)?同样,在复合系统中,开发者应该在哪里投入资源——例如,在RAG系统中,是在检索器上还是在LLM上花费更多的 FLOPS,亦或多次调用 LLM更好?最后,我们如何才能像训练神经网络一样,端到端地优化具有离散组件的人工智能系统以最大化指标?在本部分,我们将详细介绍一些人工智能系统示例,并讨论其中的挑战。
人工智能系统示例
下表总结了一些典型的复合人工智能系统的基本设计及其结果
与大模型相比,复合人工智能系统在设计、优化和操作方面提出了新的挑战:
设计
在设计方面,构建复合人工智能系统面临的挑战主要在于针对给定任务的可能系统设计范围非常广泛。例如,即使在具有检索器和语言模型的检索增强生成(RAG)的简单情况下,也有:(i)许多检索和语言模型可供选择,(ii)其他提高检索质量的技术,如查询扩展或重新排序模型,以及 (iii) 改进 LLM 生成输出的技术(例如,运行另一个 LLM 以检查输出是否与检索到的段落相关)。开发者必须探索这个广阔的空间才能找到好的设计。此外,开发者还需要在系统组件之间分配有限的资源,例如延迟和成本预算——如果你想在100 毫秒内回答RAG问题,是应该在检索器上花费20毫秒,在LLM上花费 80 毫秒,还是反过来?在机器学习中,要最大限度地提高复合系统的质量,需要共同优化各个组件,使其能更好地协同工作。在 PyTorch的单一模型开发中,用户可以轻松地端到端优化模型,因为整个模型是可微分的(即模型的每个部分都可以根据其对最终输出的影响进行调整)。然而,复合AI系统包含了一些不可微分的组件,如搜索引擎或代码解释器,这意味着这些部分无法直接通过传统的梯度下降方法进行优化,因此需要新的优化方法。优化这些复合人工智能系统是一个新的研究领域,有很多相关工作正在进行,如:DSPy为预训练的大模型和其他组件的管道提供通用优化器,而其他系统(如LaMDA、Toolformer和AlphaGeometry)在模型训练期间使用工具调用来优化这些工具的模型。MLOps是复合AI系统面临的另一大挑战——追踪一个传统机器学习模型(如垃圾邮件分类器)的成功率很容易,但开发者应该如何追踪和调试执行相同任务的AI Agent的性能呢?这可能涉及到变化的“思考”步骤数量或外部API调用来分类信息。我们看到复合AI系统的MLOps会面临一些全新的有趣问题,如:
监控:开发者如何能够最有效地记录、分析和调试来自复杂AI系统的追踪信息?
DataOps:由于许多AI系统涉及数据服务组件,如向量数据库,它们的行为依赖于所提供数据的质量,因此对这些系统的运维关注还应该涵盖数据管道。
安全性:研究表明,复合AI系统(如带有内容过滤器的大型语言模型聊天机器人)相比单个模型,可能产生未预见的安全风险。将需要新的工具来保障这些系统的安全。
我们认为这些问题中,蕴含着新一代MLOps工具的机遇。
为了应对上文所提及的构建复合人工智能系统的挑战,开发者及学界都提出了很多新的方法。这里重点介绍一些目前影响力较大的方法/项目:
设计人工智能系统:组合框架和策略
许多开发者现在正在使用“语言模型编程”框架,这些框架让他们可以通过多次调用大模型和其他组件来构建应用程序。这种框架包括:
1)组件库,如LangChain和LlamaIndex,开发者可以从传统程序中调用这些库;
2)Agent框架,如AutoGPT和BabyAGI,允许一个大模型(LLM)驱动应用程序;
3)用于控制模型输出的工具,如Guardrails, Outlines, LMQL和SGLang。
与此同时,研究人员也在开发许多新的推理策略,通过调用模型和工具来生成更好的输出,例如CoT(chain-of-thought)、自我一致性、WikiChat、RAG等。
DSPy(https://arxiv.org/pdf/2310.03714.pdf)是第一个旨在优化由大型语言模型调用和其他工具组成的系统以最大化目标指标的框架。用户通过调用LLM和其他工具编写应用程序,并提供一个目标指标(如在验证集上的准确性),然后DSPy会自动调整pipeline,通过创建提示指令、少数示例和每个模块的其他参数选择来最大化端到端性能。与在PyTorch中对多层神经网络进行端到端优化的效果类似,除了DSPy中模块不总是可微分层,DSPy以一种清晰的方式利用大模型的语言能力:指定每个模块,用户编写一个自然语言签名,如 user_question -> search_query,其中输入和输出字段的名称是有意义的,DSPy会自动将其转换为带有指令的合适提示、少数示例,甚至是对底层语言模型的权重更新。
可用的人工智能模型和服务种类繁多,这使得为应用挑选恰当的模型成了一项挑战。此外,不同的模型可能在不同的输入上表现更好。FrugalGPT就是解决这类问题的一个框架,它可以自动将输入路由到不同的AI模型级联中,以在给定目标预算的约束下最大化质量。基于一小组示例,它学习了一种路由策略,该策略在相同成本下,性能可以比最好的大模型服务高出4%,或者在匹配它们的质量时将成本降低90%。FrugalGPT是一个更广泛的新兴概念——AI网关的示例,目前这个领域的代表软件如Databricks AI Gateway、OpenRouter和Martian,可以优化AI应用每个组成部分的性能。当一个AI任务在复合系统中被拆分成更小的模块化步骤时,这些系统的工作效果更好,AI网关可以为每个步骤单独优化路由。
AI应用程序始终需要仔细监控模型输出和数据管道,以确保可靠运行。然而,对于复合AI系统,系统对每个输入的行为可能会复杂得多,因此追踪应用程序采取的所有步骤及中间输出变得非常重要。针对这个问题,目前主流的软件解决方案有:LangSmith、Phoenix Traces和Databricks Inference Tables等,它们能够以细粒度跟踪、可视化和评估这些输出,在某些情况下还能将输出与数据管道质量和下游指标相关联。在研究领域,如何实现AI自监控是比较热门的研究方向:DSPy Assertions寻求利用来自监控检查的反馈直接在AI系统中改进输出,而基于AI的质量评估方法如MT-Bench、FAVA和ARES旨在自动化质量监控。
通过自然语言提示解锁了广泛功能的生成式AI让每一位开发者都感到兴奋。然而,随着开发者们想要超越演示并最大化其AI应用的质量,他们越来越多地转向复合AI系统,作为控制和增强LLMs能力的自然方式。弄清楚如何开发复合AI系统的最佳实践仍然是一个悬而未决的问题,但已经有一些令人兴奋的方法来帮助设计、端到端优化和运营。我们相信,复合AI系统将继续是提升AI应用质量和可靠性的最佳方式,并且可能是2024年AI中最重要的趋势之一。
Atom Capital是一支由连续创业者和投资人成立的新锐风险投资基金,专注于AI、大数据和云原生领域的早期投资,聚焦颠覆式创新机遇,发掘、孵化和陪伴优秀的科技创业者成长。