在2023年,大型语言模型(LLMs)因其能够通过简单的提示执行通用任务(如翻译或编码)而引起了人们的广泛关注。这自然导致了人们对模型作为AI应用开发的主要成分的密切关注,大家都在好奇新的LLMs将带来什么能力。然而,随着越来越多的开发者开始使用LLMs构建应用,这种关注点正在迅速转变:最先进的AI成果越来越多地由具有多个组件的复合系统而非单一的模型实现。例如,谷歌的AlphaCode 2通过一个精心设计的系统,在编程方面设定了最新的成果,该系统使用LLMs生成多达100万个可能的解决方案,然后筛选出一套解决方案。
同样,AlphaGeometry结合了LLMs和传统的符号求解器来解决奥林匹克问题。在企业中,Databricks的同事发现,60%的LLM应用使用了某种形式的检索增强生成(RAG),30%使用了多步骤链。即使是那些曾经只报告单个LLM调用结果的传统语言模型任务的研究人员,现在也在报告来自越来越复杂的推理策略的结果:微软描述了一种链式策略,该策略在医学考试上的准确率超过了GPT-4的9%,而谷歌的Gemini发布帖子使用了一种新的CoT@32推理策略,该策略调用模型32次,这引发了与仅调用GPT-4一次相比的问题。这种转向复合系统提出了许多有趣的设计问题,但也令人兴奋,因为这意味着通过巧妙的工程设计而非仅仅通过扩大训练规模就可以实现领先的AI成果。
在这篇文章中,我们分析了复合AI系统的趋势及其对AI开发者的意义。为什么开发者要构建复合系统?这种范式随着模型的改进是否会持续存在?以及开发和优化这些系统的新工具是什么——这是一个比模型训练少得多的研究领域?我们认为,复合AI系统可能是未来实现最大化AI成果的最佳方式,并可能是2024年AI中最具影响力的趋势之一.
2023年,大语言模型(LLMs)以其能通过简单提示执行翻译、编码等通用任务,引起了人们广泛关注。这导致人们高度关注模型作为AI应用开发中的核心部分,期待新的大语言模型带来更多能力。然而,随着越来越多开发者开始使用大语言模型构建应用,我们认为这种关注点正在迅速转变:在获取最先进的AI成果方面,复合系统的多组件结构,而非单一模型,正在发挥越来越重要的作用。
例如,谷歌的AlphaCode 2项目展示了这一点,它在编程领域取得了突破性成果,通过精密设计的系统,利用大语言模型生成高达100万个潜在解决方案,再进行筛选。类似地,AlphaGeometry项目将大语言模型与传统符号求解器结合,攻克了奥林匹克级别的数学问题。在企业界,我们的同行在Databricks发现,60%的大语言模型应用涉及到某种形式的检索增强生成(RAG)技术,30%使用了多步骤方法。即便是专注于传统语言模型任务的研究人员,也开始从单一的大语言模型调用,转向采用更复杂的推理策略。微软发表文章指出,采用一种链式策略,使得GPT-4在医学考试中的准确率提高了9%。谷歌在发布Gemini时的博客中提到,他们采用了一种新的CoT@32推理策略来进行MMLU基准测试,即调用模型32次,这引发了关于与单次调用GPT-4的比较问题。这种向复合系统的转变不仅带来了许多设计上的新问题,也令人兴奋,因为它意味着领先的AI成果可以通过巧妙的工程设计实现,而不仅仅依赖于扩大训练规模。
在本文中,我们将分析复合人工智能系统的趋势及其对AI开发者的意义。我们探讨了为何开发者倾向于构建这样的系统,这种趋势是否会随着模型的改进而持续,以及开发和优化这些系统的新工具——这是一个迄今为止相对较少被研究的领域。我们认为,复合人工智能系统可能是未来实现最佳AI成果的关键方式,这可能是2024年AI领域最具影响力的趋势之一。
为何选择复合人工智能系统?
我们定义复合人工智能系统为一个利用多个相互作用组件(包括多次调用模型、检索器或外部工具)来解决AI任务的系统。相对而言,AI模型只是一个统计模型,例如,一个能预测文本中下一个标记的变换器。
尽管AI模型不断进步,并且似乎没有明显的规模增长终点,但使用复合系统获得的领先结果正在变得越来越多。原因有几个:
- 系统设计更易于改进某些任务。虽然大语言模型似乎遵循了令人瞩目的规模定律,预计随着更多的计算投入,性能会有更好的提升,但在许多应用中,扩大规模的回报相比成本来说更低,而构建复合系统则不同。例如,假设当前最好的大语言模型能解决30%的编码竞赛问题,三倍增加训练预算可能只能将成功率提高到35%;这仍然不足以赢得比赛。相比之下,设计一个从模型中多次采样、测试每个样本的系统,可能会利用现有模型将性能提升到80%,正如AlphaCode项目所展示的。而且,系统设计的迭代通常比等待训练运行要快得多。我们相信,在任何高价值应用中,开发者都会希望利用所有可用工具来最大化AI质量,因此他们会同时使用系统设计和规模扩展。我们常见的情况是,一个优秀的大语言模型可以创建一个吸引人但不太可靠的初步演示,随后工程团队会系统地提升质量。
- 系统可以更具动态性。机器学习模型本质上受限于它们是在静态数据集上训练的,因此“知识”是固定的。因此,开发人员需要将模型与其他组件(如搜索和检索)结合,以纳入实时数据。此外,训练使模型能够“看到”整个训练集,所以需要更复杂的系统来构建带有访问控制的AI应用(例如,基于用户可以访问的文件来回答问题)。
- 通过系统更易于提升控制和信任。单独的神经网络模型难以控制:尽管训练会对它们产生影响,但几乎不可能保证模型完全避免某些行为。使用AI系统而非单一模型,可以帮助开发者更紧密地控制行为,例如通过过滤模型输出。同样,即使最好的大语言模型也会产生错觉,但结合使用大语言模型和检索的系统可以通过提供引用或自动验证事实来增加用户信任。
-
- 性能目标差异较大。每个AI模型都有其固定的质量水平和成本,但应用程序通常需要调整这些参数。在一些应用中,如内联代码建议,最佳AI模型的成本太高,因此工具如Github Copilot使用经过精心调整的较小模型和各种搜索启发式来提供结果。在其他应用中,即使是最大的模型如GPT-4,成本也显得太低!许多用户愿意为正确的法律意见支付几美元,而不是仅仅为向GPT-4提问支付几分钱,但开发者需要设计一个AI系统来利用这更大的预算。
在生成AI领域,复合系统的这一转变也与其他AI领域的行业趋势相一致,例如自动驾驶汽车:大多数最先进的实现都是由多个专门组件组成的系统(更多讨论见此)。因此,我们相信,即使模型继续改进,复合AI系统仍将是一个主导范式。
开发复合AI系统
虽然复合AI系统可以提供明显的好处,但设计、优化和运营它们的艺术尚处于起步阶段。表面上,AI系统是传统软件和AI模型的结合,但这背后有许多有趣的设计问题。例如,应该使用传统代码编写整体的“控制逻辑”(例如,调用大语言模型的Python代码),还是应该由AI模型驱动(例如,调用外部工具的大语言模型智能体)?同样,在复合系统中,开发者应该如何分配资源——例如,在RAG管道中,是将更多FLOPS用于检索器还是大语言模型,还是多次调用大语言模型?最后,我们如何端到端优化具有离散组件的AI系统以最大化某个度量,就像我们可以训练神经网络一样?在本节中,我们详细介绍了一些示例AI系统,并讨论了这些挑战及其最近的研究。
AI系统设计的多样性
以下是一些最新的复合AI系统实例,展示了设计选择的多样性:
AI系统 | 组件 | 设计 | 结果 |
---|---|---|---|
AlphaCode 2 | - 为采样和评分程序微调的大语言模型- 代码执行模块- 聚类模型 | 针对编码问题生成多达100万个解决方案,然后进行过滤和评分 | 在编码竞赛中达到人类的85百分位水平 |
AlphaGeometry | - 微调的大语言模型- 符号数学引擎 | 通过大语言模型迭代提出几何问题的构造方案,并由符号引擎检查推理事实 | 在国际数学奥林匹克竞赛中达到银牌和金牌之间的水平 |
Medprompt | - GPT-4大语言模型- 在正确示例数据库中进行最近邻搜索- 大语言模型生成的思路链示例- 多样本和集成 | 通过搜索类似示例构建少样本提示,为每个示例添加模型生成的思路链,并生成并判断多达11个解决方案 | 超越了使用简化提示策略的专业医学模型,如Med-PaLM |
Gemini on MMLU | - Gemini大语言模型- 自定义推理逻辑 | Gemini的CoT@32推理策略用于MMLU基准测试,从模型中采样32个思路链答案,如果足够多的答案一致,则返回最佳选择,否则使用无思路链的生成 | 在MMLU上达到90.04%,而GPT-4使用5次提示为86.4%,Gemini使用5次提示为83.7% |
ChatGPT Plus | - 大语言模型- 检索及时内容的网页浏览器插件- 执行Python代码的解释器插件- DALL-E图像生成器 | ChatGPT Plus可以调用工具(如网页浏览)来回答问题;大语言模型决定何时以及如何调用每个工具来响应 | 拥有数百万付费订户的广受欢迎的消费者AI产品 |
RAG、ORQA、Bing、Baleen等 | - 大语言模型(有时多次调用)- 检索系统 | 以多种方式结合大语言模型和检索系统,例如,让大语言模型生成搜索查询,或直接针对当前上下文进行搜索 | 在搜索引擎和企业应用中广泛使用的技术 |
复合AI系统的关键挑战
与AI模型相比,复合AI系统在设计、优化和运营方面提出了新的挑战。
设计空间
给定任务的可能系统设计范围非常广泛。例如,即使在检索增强生成(RAG)的简单情况下,使用检索器和语言模型也有:(i)众多可供选择的检索和语言模型,(ii)其他技术以提高检索质量,如查询扩展或重新排名模型,以及(iii)技术以改进大语言模型生成的输出(例如,运行另一个大语言模型以检查输出是否与检索到的段落相关)。开发者必须探索这一广阔空间以找到良好的设计。
此外,开发者需要在系统组件间分配有限的资源,如延迟和成本预算。例如,如果希望在100毫秒内回答RAG问题,应该将预算分配给20毫秒的检索器和80毫秒的大语言模型,还是相反?
优化
通常,在ML中,最大化复合系统的质量需要协同优化组件以便它们协同工作。例如,考虑一个简单的RAG应用,其中一个大语言模型看到用户问题,生成搜索查询发送给检索器,然后生成答案。理想情况下,大语言模型应调整为生成适用于_特定检索器_的查询,而检索器应调整以偏好适用于_那个大语言模型_的答案。
在单模型开发(如PyTorch)中,用户可以轻松地端到端优化模型,因为整个模型是可微分的。然而,复合AI系统包含不可微分的组件,如搜索引擎或代码解释器,因此需要新的优化方法。优化这些复合AI系统仍是一个新的研究领域;例如,DSPy提供了一个用于预训练的大语言模型和其他组件的通用优化器,而其他系统,如LaMDA、Toolformer和AlphaGeometry,在模型训练期间使用工具调用来优化模型,使其适应这些工具。
运营
对于复合AI系统来说,机器学习操作(MLOps)更具挑战性。例如,虽然跟踪传统ML模型(如垃圾邮件分类器)的成功率很容易,但开发者应如何跟踪和调试执行相同任务的大语言模型智能体的性能,该智能体可能使用可变数量的“反思”步骤或外部API调用来分类信息?我们相信,将开发出新一代的MLOps工具来解决这些问题。值得关注的问题包括:
- 监控:开发者如何最有效地记录、分析和调试复杂AI系统的轨迹?
- 数据运营:由于许多AI系统涉及数据服务组件,如向量数据库,它们的行为取决于所服务数据的质量,因此对这些系统的运营关注还应包括数据管道。
- 安全性:研究表明,复合AI系统(如带有内容过滤器的大语言模型聊天机器人)与单个模型相比可能产生未预见的安全风险。将需要新的工具来保护这些系统。
新兴的AI系统范式
为了应对构建复合AI系统的挑战,业界和研究领域正在涌现出多种新方法。我们重点介绍了一些最广泛使用的方法及其相关研究示例。
设计AI系统:组合框架和策略。 现在,许多开发者都在使用“大语言模型编程”框架,将多次调用AI模型和其他组件整合到应用程序中。包括开发者从传统程序调用的组件库,如LangChain和LlamaIndex,让大语言模型驱动应用程序的智能体框架,如AutoGPT和BabyAGI,以及控制大语言模型输出的工具,如Guardrails、Outlines、LMQL和SGLang。同时,研究人员正在开发许多新的推理策略,以使用对模型和工具的调用来生成更好的输出,如思路链、自洽性、WikiChat、RAG等等。
自动优化质量:DSPy。 来自学术界的DSPy是第一个旨在优化由大语言模型调用和其他工具组成的系统以最大化目标指标的框架。用户使用大语言模型和其他工具的调用编写应用程序,并提供目标指标,例如在验证集上的准确性,然后DSPy自动调整管道,通过为每个模块创建提示指令、少样本示例和其他参数选择来最大化端到端性能。这类似于在PyTorch中对多层神经网络进行端到端优化,只是DSPy中的模块并不总是可微分的层。为此,DSPy利用大语言模型的语言能力以一种清晰的方式:为了指定每个模块,用户用自然语言写下一个签名,例如“user_question -> search_query”,其中输入和输出字段的名称是有意义的,DSPy自动将其转换为适当的带有指令、少样本示例甚至是对底层语言模型的权重更新的提示。
优化成本:FrugalGPT和AI网关。 广泛的AI模型和服务使得为应用程序选择合适的模型变得具有挑战性。此外,不同模型可能在不同输入上表现更好。FrugalGPT是一个框架,用于自动将输入路由到不同AI模型级联,以在目标预算下最大化质量。基于一小组示例,它学习了一种路由策略,该策略可以在相同成本下将最佳大语言模型服务的性能提高4%,或者在匹配其质量的同时将成本降低90%。FrugalGPT是更广泛的AI网关或路由器概念的一个示例,这些概念在软件中得到实现,如Databricks AI Gateway、OpenRouter和Martian,以优化AI应用程序各个组件的性能。当AI任务被分解为更小的模块化步骤时,这些系统甚至表现得更好,网关可以单独为每个步骤优化路由。
运营:LLMOps和DataOps。 AI应用程序一直需要仔细监控模型输出和数据管道,以可靠地运行。然而,对于复合AI系统,系统对每个输入的行为可能更加复杂,因此重要的是跟踪应用程序采取的所有步骤和中间输出。像LangSmith、Phoenix Traces和Databricks推理表这样的软件可以以精细的粒度跟踪、可视化和评估这些输出,在某些情况下还可以将它们与数据管道质量和下游指标相关联。在研究领域,DSPy断言旨在利用来自监控检查的反馈直接在AI系统中改进输出,而基于AI的质量评估方法,如MT-Bench、FAVA和ARES旨在自动化质量监控。
结论
生成AI通过自然语言提示解锁了广泛的能力,激发了每个开发者的兴趣。然而,随着开发者力求超越演示并最大化其AI应用的质量,他们越来越倾向于使用复合AI系统作为控制和增强大语言模型能力的自然途径。确定开发复合AI系统的最佳实践仍是一个开放性问题,但已经出现了许多令人兴奋的方法来帮助设计、端到端优化和运营。我们相信,复合AI系统将继续是最大化AI应用质量和可靠性的最佳方式,可能是2024年AI领域最重要的趋势之一。
来源:The Shift from Models to Compound AI Systems
BibTex for this post:
@misc{compound-ai-blog,
title={The Shift from Models to Compound AI Systems},
author={Matei Zaharia and Omar Khattab and Lingjiao Chen and Jared Quincy Davis
and Heather Miller and Chris Potts and James Zou and Michael Carbin
and Jonathan Frankle and Naveen Rao and Ali Ghodsi},
howpublished={\\url{https://bair.berkeley.edu/blog/2024/02/18/compound-ai-systems/}},
year={2024}
}