AIGC:【LLM(三)】——JARVIS:连接ChatGPT和HuggingFace解决AI问题

news2024/11/26 8:37:20

文章目录

    • 0.摘要
    • 1.引言
    • 2.相关工作
    • 3.HuggingGPT
      • 3.1 任务规划
      • 3.2 模型选择
      • 3.3 任务执行
      • 3.4 响应生成
    • 4.限制
    • 5.结论
    • 6.参考资料

0.摘要

解决具有不同领域和模态的复杂人工智能任务是通往人工通用智能的关键骤。尽管存在丰富的适用于不同领域和模态的人工智能模型,但它们无法处理复杂的人工智能任务。考虑到大型语言模型(LLMs)在语言理解、生成、交互和推理方面表现出色,我们主张LLMs可以作为一个控制器来管理现有的人工智能模型,以解决复杂的人工智能任务,并认为语言可以成为一种通用接口来增强这一过程。基于这一理念,我们提出了HuggingGPT框架,利用LLMs(例如ChatGPT)连接机器学习社区(例如Hugging Face)中的各种人工智能模型来解决人工智能任务。具体而言,当接收到用户请求时,我们使用ChatGPT进行任务规划,根据Hugging Face中可用的功能描述选择模型,使用所选的人工智能模型执行每个子任务,并根据执行结果进行响应汇总。通过利用ChatGPT的强大语言能力和Hugging Face中丰富的人工智能模型,HuggingGPT能够覆盖各种模态和领域中的众多复杂人工智能任务,并在语言、视觉、语音和其他具有挑战性的任务中取得令人印象深刻的结果,为实现人工通用智能铺平了一条新的道路。

1.引言

大型语言模型(LLMs),如ChatGPT,由于在各种自然语言处理(NLP)任务上的出色性能,引起了学术界和工业界的巨大关注。基于大规模文本语料库的预训练和人类反馈的强化学习(RLHF),LLMs在语言理解、生成、交互和推理方面具有优越的能力。LLMs的强大能力还推动了许多新兴的研究课题(例如上下文学习,指令学习和思维链提示),进一步探索LLMs的巨大潜力,并为我们构建先进的人工智能系统带来了无限可能性。

尽管取得了这些伟大的成功,当前的LLM技术仍然存在不完善之处,并面临着构建先进AI系统的一些紧迫挑战。我们从以下几个方面进行讨论:

  1. 目前的LLMs受限于文本生成的输入和输出形式,无法处理复杂的信息,如视觉和语音,尽管它们在NLP任务中取得了显著成就;
  2. 在现实场景中,一些复杂任务通常由多个子任务组成,因此需要多个模型的调度和协作,这也超出了语言模型的能力范围;
  3. 对于一些具有挑战性的任务,LLMs在零样本或少样本设置下展示出优秀的结果,但仍然比一些专家(例如,微调模型)弱。如何解决这些问题可能是LLMs走向人工通用智能的关键一步。

在本文中,我们指出为了处理复杂的人工智能任务,LLMs应该能够与外部模型协调合作以发挥它们的能力。因此,关键问题是如何选择适当的中间件来连接LLMs和人工智能模型之间的联系。为了解决这个问题,我们注意到每个人工智能模型都可以通过总结其功能来用语言形式描述。因此,我们引入了一个概念:“语言是LLMs连接人工智能模型的通用接口”。换句话说,通过将这些模型描述融入提示中,LLMs可以被视为管理人工智能模型的大脑,例如进行规划、调度和协作。因此,这种策略使得LLMs能够调用外部模型来解决人工智能任务。然而,当涉及将多个人工智能模型整合到LLMs中时,另一个挑战出现了:解决众多人工智能任务需要收集大量高质量的模型描述,这反过来需要进行大量的提示工程。巧合的是,我们注意到一些公开的机器学习社区通常提供各种适用的模型,并为解决特定的人工智能任务(如语言、视觉、语音等)提供明确定义的模型描述。这些观察给我们带来了一些灵感:我们能否通过基于语言的接口将LLMs(例如ChatGPT)与公共机器学习社区(例如GitHub、Hugging Face等)连接起来,以解决复杂的人工智能任务?

因此,在本文中,我们提出了一个名为HuggingGPT的系统,用于连接LLMs(即ChatGPT)和机器学习社区(即Hugging Face),该系统可以处理来自不同模态的输入并自主解决众多复杂的人工智能任务。具体而言,对于Hugging Face中的每个人工智能模型,我们使用其在库中的相应模型描述,并将其融入到提示中以建立与ChatGPT的连接。随后,在我们的系统中,LLMs(即ChatGPT)将充当大脑,确定用户问题的答案。正如图1所示,HuggingGPT的整个过程可以分为四个阶段:
• 任务规划:使用ChatGPT分析用户的请求,理解其意图,并通过提示将其拆分为可能可解决的任务。
• 模型选择:为了解决规划的任务,ChatGPT根据模型描述从Hugging Face上选择托管的专家模型。
• 任务执行:调用和执行每个选定的模型,并将结果返回给ChatGPT。
• 响应生成:最后,利用ChatGPT集成所有模型的预测结果,并为用户生成响应。

在这里插入图片描述

得益于这样的设计,HuggingGPT能够根据用户请求自动生成计划,并使用外部模型,从而集成多模态感知能力并处理多个复杂的人工智能任务。更值得注意的是,这个流程还允许HuggingGPT不断吸收来自任务专家的能力,实现可增长和可扩展的人工智能能力。此外,我们还指出,在HuggingGPT中,任务规划起着非常重要的作用,直接决定了后续工作流程的成功与否。因此,如何进行规划也是反映LLMs能力的一个好的视角,也为LLMs的评估开辟了新的途径。总体而言,我们的贡献可以总结如下:

  1. 为了补充大型语言模型和专家模型的优势,我们提出了具有模型间合作协议的HuggingGPT。HuggingGPT将LLMs应用于规划和决策,自动调用和执行每个特定任务的专家模型,为设计通用人工智能解决方案提供了一种新的方式。
  2. 通过将Hugging Face平台与ChatGPT周围的众多任务特定模型集成,HuggingGPT能够处理涵盖多个模态和领域的广义人工智能任务。通过模型的开放协作,HuggingGPT可以为用户提供多模态和可靠的对话服务。
  3. 我们指出了任务规划在HuggingGPT(以及自主代理)中的重要性,并制定了一些用于衡量LLMs在规划方面能力的实验评估方法。
  4. 在语言、视觉、语音和跨模态等多个具有挑战性的人工智能任务上进行了广泛的实验证明了HuggingGPT在理解和解决来自多个模态和领域的复杂任务方面的能力和巨大潜力。
    在这里插入图片描述

2.相关工作

近年来,自然语言处理(NLP)领域在大型语言模型(LLMs)的出现下发生了革命性变化,例如GPT-3 、GPT-4、PaLM 和LLaMa等模型。由于其庞大的语料库和密集的训练计算,LLMs在零样本和少样本任务以及数学问题和常识推理等更复杂的任务中表现出令人印象深刻的能力。为了将大型语言模型(LLMs)的范围扩展到文本生成之外,当代研究可以分为两个分支:1)一些工作已经设计了统一的多模态语言模型来解决各种人工智能任务[21, 22, 23]。例如,Flamingo结合了预训练的视觉和语言模型进行感知和推理。BLIP-2 利用Q-former来协调语言和视觉语义,而Kosmos-1 则将视觉输入融入到文本序列中,以融合语言和视觉输入。2)最近,一些研究人员开始探索在LLMs中使用工具或模型的整合[24, 25, 26, 27, 28]。Toolformer是首个将外部API标签引入文本序列的先驱性工作,促进了LLMs访问外部工具的能力。因此,许多工作已经扩展了LLMs以涵盖视觉模态。Visual ChatGPT将BLIP和ControlNet等视觉基础模型与LLMs融合在一起。Visual Programming和ViperGPT通过使用编程语言,将LLMs应用于可视化对象,并将视觉查询解析为表示为Python代码的可解释步骤。我们还在附录B中对相关工作进行了更多讨论。

与这些方法不同,我们提出的HuggingGPT在以下几个方面推进了更通用的人工智能能力:1)HuggingGPT使用LLM作为接口将用户请求路由到专家模型,有效地将LLM的语言理解能力与其他专家模型的专业知识相结合;2)HuggingGPT不仅限于视觉感知任务,通过LLM组织模型之间的合作,可以处理任何模态或领域的任务。得益于HuggingGPT中任务规划的设计,我们的系统可以自动、高效地生成任务流程并解决更复杂的问题;3)HuggingGPT提供了一种更开放的模型选择方法,基于模型描述分配和组织任务。通过仅提供模型描述,HuggingGPT可以持续且方便地集成来自AI社区的各种专家模型,而无需改变任何结构或提示设置。这种开放和持续的方式使我们离实现人工通用智能更近了一步。

3.HuggingGPT

HuggingGPT是一个用于解决人工智能任务的协作系统,它由一个大型语言模型(LLM)和来自机器学习社区的许多专家模型组成。它的工作流程包括四个阶段:任务规划、模型选择、任务执行和响应生成,如图2所示。给定用户的请求,我们的HuggingGPT采用LLM作为控制器,将自动部署整个工作流程,从而协调和执行专家模型以实现目标。表1展示了我们HuggingGPT中详细的提示设计。我们将在以下各小节中介绍每个阶段的设计。

3.1 任务规划

通常,在现实世界的场景中,许多用户请求会包含一些复杂的意图,因此需要协调多个子任务来实现目标。因此,我们将任务规划作为HuggingGPT的第一个阶段,旨在使用LLM分析用户请求,然后将其分解为一系列结构化任务。此外,我们还要求LLM确定这些分解任务的依赖关系和执行顺序,以建立它们之间的连接。为了更好地提示LLM进行有效的任务规划,HuggingGPT采用了一种提示设计,包括基于规范的指令和基于演示的解析。我们将在下面的段落中介绍这些细节。

基于规范的指令 为了更好地表示用户请求的预期任务并在后续阶段使用它们,我们期望LLM能够按照一些规范(例如JSON格式)解析任务。因此,我们为任务提供了一个统一的模板,并指示LLM通过槽位填充进行任务解析。如表1所示,任务解析的模板包括四个槽位(“task”、“id”、“dep"和"args”),用于表示任务的信息、唯一标识符、依赖关系和参数。有关每个槽位的详细信息可以在模板描述中找到(请参阅附录A.1.1)。通过遵循这些任务规范,HuggingGPT可以自动地利用LLM分析用户请求并相应地解析任务。
在这里插入图片描述

基于演示的解析 为了更好地理解任务规划的意图和标准,HuggingGPT在提示中加入了多个演示。每个演示包括一个用户请求及其相应的输出,代表了解析任务的预期顺序。通过考虑任务之间的依赖关系,这些演示帮助HuggingGPT理解任务之间的逻辑连接,从而准确确定执行顺序和识别资源依赖关系。我们的演示设计如表1所示。此外,为了支持更全面的用户请求(例如,多轮对话),我们通过添加以下指示将聊天记录并入提示中:为了辅助任务规划,聊天记录可作为{{ Chat Logs }}使用,您可以追踪用户提到的资源并将其纳入任务规划中。其中,{{ Chat Logs }}代表之前的聊天记录。这样的设计使得HuggingGPT能够更好地管理上下文,并在多轮对话中回答用户请求。

3.2 模型选择

在任务规划之后,HuggingGPT接下来需要将任务和模型进行匹配,即为解析的任务列表中的每个任务选择最合适的模型。为此,我们使用模型描述作为语言接口来连接每个模型。具体而言,我们首先从机器学习社区(例如Hugging Face)获取专家模型的描述,然后通过一种上下文任务-模型分配机制动态地为任务选择模型。这种策略实现了增量式的模型访问(仅需提供专家模型的描述),能够更加开放和灵活地使用机器学习社区。更多细节将在下一段介绍。

上下文任务-模型分配 我们将任务-模型分配问题形式化为单选问题,在给定上下文中将潜在模型作为选项呈现。通常情况下,根据提示中提供的用户查询和任务信息,HuggingGPT能够为每个解析的任务选择最合适的模型。然而,由于最大上下文长度的限制,一个提示不可能包含所有相关模型信息。为了解决这个问题,我们首先根据任务类型筛选模型,只保留与当前任务类型匹配的模型。对于这些选定的模型,我们将根据它们在Hugging Face上的下载数量对它们进行排名(我们认为下载数量在一定程度上能够反映模型的质量),然后选择排名前K的模型作为HuggingGPT的候选模型。这种策略可以大大减少提示中的标记使用量,并有效地为每个任务选择适当的模型。

3.3 任务执行

一旦为解析的任务分配了特定的模型,下一步就是执行任务,即进行模型推理。因此,在这个阶段,HuggingGPT将自动将这些任务参数输入到模型中,执行这些模型以获得推理结果,然后将结果发送回LLM。在这个阶段,资源依赖性的问题需要强调。由于先决任务的输出是动态生成的,HuggingGPT在启动任务之前还需要动态指定任务的依赖资源。因此,在这个阶段建立具有资源依赖性的任务之间的连接是具有挑战性的。

资源依赖性 为了解决这个问题,我们使用一个独特的符号“”来维护资源依赖关系。具体而言,HuggingGPT将先决任务生成的资源标识为-task_id,其中task_id是先决任务的任务ID。在任务规划阶段,如果有任务依赖于由task_id任务生成的资源,HuggingGPT将此符号设置为任务参数中相应资源子字段的值。然后在任务执行阶段,HuggingGPT会动态地用先决任务生成的资源替换这个符号。因此,这个简单的策略使得HuggingGPT能够在任务执行过程中高效处理资源依赖关系。

此外,在获取了没有任何资源依赖关系的任务后,我们将并行执行这些任务,以进一步提高推理效率。这意味着可以同时启动满足先决依赖关系的多个任务。此外,为了加速和计算稳定性,我们还提供了一个混合推理端点来部署这些模型。

3.4 响应生成

在完成所有任务执行之后,HuggingGPT需要生成最终的响应。就像表1中所示,HuggingGPT将前三个阶段(任务规划、模型选择和任务执行)的所有信息整合到这个阶段的简洁摘要中,包括计划任务的列表、任务的选定模型以及模型的推理结果。

其中最重要的是推理结果,这是HuggingGPT做出最终决策的关键点。这些推理结果以结构化的格式呈现,例如目标检测模型中带有检测概率的边界框,问答模型中的答案分布等。HuggingGPT允许LLM接收这些结构化的推理结果作为输入,并以友好的人类语言形式生成响应。此外,LLM不仅仅是简单地汇总结果,还生成主动响应用户请求的响应,提供具有置信水平的可靠决策。
在这里插入图片描述

4.限制

HuggingGPT提出了设计AI解决方案的新范式,但我们要强调它仍然存在一些限制或改进空间:1)HuggingGPT在规划方面严重依赖LLM的能力。因此,我们无法保证生成的计划始终是可行和最优的。因此,探索优化LLM以增强其规划能力至关重要;2)效率是我们框架中的一个常见挑战。为了构建这样一个协作系统(即HuggingGPT)并实现任务自动化,它严重依赖于一个强大的控制器(例如ChatGPT)。然而,HuggingGPT需要在整个工作流程中与LLM进行多次交互,这导致生成响应的时间成本增加;3)在使用LLM时,令牌长度是另一个常见问题,因为最大令牌长度总是有限的。尽管一些工作已将最大长度扩展到32K,但如果我们想连接大量模型,这仍然是不足够的。因此,如何简要有效地总结模型描述也值得探索;4)不稳定性主要是由于LLM通常是不可控的。尽管LLM在生成方面很擅长,但在预测过程中仍可能无法遵循指令或给出错误答案,导致程序工作流程中出现异常。在设计系统时应考虑如何减少这些不确定性。

5.结论

在本文中,我们提出了一个名为HuggingGPT的系统,用于解决AI任务,以语言作为将LLMs与AI模型连接起来的接口。我们系统的原则是,LLM可以被视为一个控制器,用于管理AI模型,并可以利用来自Hugging Face等ML社区的模型自动解决用户的不同请求。通过利用LLMs在理解和推理方面的优势,HuggingGPT可以分析用户的意图,并将其分解为多个子任务。然后,根据专家模型描述,HuggingGPT能够为每个任务分配最合适的模型,并整合来自不同模型的结果生成最终的响应。通过利用机器学习社区中众多AI模型的能力,HuggingGPT展示了在解决具有挑战性的AI任务方面的巨大潜力,从而为实现人工通用智能铺平了一条新的道路。

6.参考资料

HuggingGPT报道:https://mp.weixin.qq.com/s/x9nihEI6uhbouFTR-0hqQg
HuggingGPT论文:https://arxiv.org/pdf/2303.17580.pdf
HuggingGPT代码:https://github.com/microsoft/JARVIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统之iostat命令的基本使用

Linux系统之iostat命令的基本使用 一、iostat命令介绍二、iostat命令帮助1.1 iostat的帮助信息1.2 iostat的选项解释 三、iostat命令的基本使用3.1 查看iostat工具版本3.2 直接使用iostat命令3.3 间隔5秒查看3次信息3.4 只查看磁盘状态3.5 以k或M为单位显示信息 四、查看磁盘I/…

JMM 规范

JMM是Java Memory Model(Java 内存模型)的缩写,是Java虚拟机规范中定义的一套规则,用来规范Java程序在多线程环境下的内存访问方式。其主要作用是保证多线程之间的数据可见性、有序性和原子性。JMM规范定义了一些程序员和JVM实现者…

机器学习(ML)策略

目录 1、正交化的概念 2、单一数字评估指标(Single number evaluation metric) 3、训练/开发/测试集划分 4、迁移学习 5、多任务学习 6、端到端深度学习 1、正交化的概念 正交化是机器学习中一种常用的数据预处理技术,用于减少特征之间…

IMX6ull SPI 协议

一 SPI 简介 1.1 SPI SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口 技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作 …

【IT服务管理】MITRE :IT服务管理

定义: 信息技术 (IT) 服务管理 (ITSM) 是解决管理、支持和交付 IT 服务的最佳实践的框架、流程和模型的通用保护伞。IT 服务可能包括(由 NIST 为云计算定义):软件即服务 (SaaS)、平台即服务 (PaaS) 和基础设施即服务 (IaaS)。 关键…

DevExpress WPF Scheduler组件,快速构建性能优异的调度管理器!(下)

在上文中(点击这里回顾>>),我们介绍了DevExpress WPF Scheduler组件中的日历视图、时间轴视图等,在本文中我们将继续带大家了解Scheduler组件的UI/UX自定义等其他功能。 DevExpress WPF拥有120个控件和库,将帮助…

Spring Boot 61:JPA 中的级联类型

Spring Boot 61:JPA 中的级联类型 图源:简书 (jianshu.com) 关系型数据库的增删改查操作会因为有关联关系而存在“级联操作”的需要,体现在 JPA 中,就是实体中会定义的级联类型(Cascade Type)。 JPA 中的…

【二维属性+贪心+双指针】ABC 195 D

D - Shipping Center (atcoder.jp) 题意: 思路: 经典中的经典,二维属性,对于其中的一个关键字排序,然后双指针将合法的可行解放入容器中,再去容器中找最优解,用双指针是因为它具有单调性 这里…

18-Linux 常用命令

目录 1.ls PS:FinalShell设置背景和字体 2.pwd 3.cd PS:认识 Linux 目录结构——Linux 是一个树形目录结构 PS:绝对路径 vs 相对路径 PS:使用 tab 键补全 PS:使用 ctrl c 重新输入 4.touch PS:L…

基于梯度下降算法的无约束函数极值问题求解

基于梯度下降算法的无约束函数极值问题求解 1 知识预警1.1导数1.2偏导数1.3方向导数1.4梯度 2 梯度下降算法3 无约束函数极值问题求解3.1 算例13.1.1 Python编程求解3.1.2 求解结果与可视化 3.2 算例2 Rosenbrock函数3.2.1 Python编程求解3.2.2 求解结果与可视化 1 知识预警 1…

JSON多层级数据自动映射值优化

JSON多层级数据自动映射值优化 FieldMethodHandles结果分析 Spring boot装载模板代码工程中,JSON多层级数据自动映射值只是简单封装JsonPath,对DTO的声明字段做foreach轮询,检查字段注解JPath,然后从JsonPath的解析缓存中读取JPat…

数字孪生三维可视化在海洋能源开发中的应用有哪些?

数字孪生是一种将现实世界中的实体、系统或过程在虚拟世界中重构,并相互映射和交互的领先技术。在能源领域,数字孪生技术可谓大有作为,比如通过实时监测和分析各种数据,提高能源的利用效率、降低能源成本、优化能源分配&#xff0…

【零基础入门学习Python---Python中机器学习和人工智能之快速入门实践】

🚀 零基础入门学习Python🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜…

android_mars老师_获取用户定位

结果展示 MainActivity package com.example.locationmanager;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.content.Context; import android.location.Location; import …

JavaWeb 笔记——3

JavaWeb 笔记——3 JavaWeb技术栈一、HTTP1.1、HTTP介绍1.2、HTTP请求数据格式1.3、HTTP响应数据格式 二、Web服务器 - Tomcat2.1、简介&基本使用2.2、Tomcat配置和部署项目2.3、Web项目结构2.4、创建MavenWeb项目2.5、IDEA集成本地Tomcat2.6、Tomcat-Tomcat Maven插件 三、…

23西安电子科技大学通信工程学院811考研录取情况

01、通信工程学院各个方向 02、23通信工程学院一志愿考研录取情况总览、平均分 PS:通院23年院线相对于22年院线上涨5-15分,个别专业下降10分反应西电通院热度23年和22年基本一致。 PS:1、通院23年比较多的考生在本部学硕、专硕扎堆&#xff…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册6

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

yolov7论文学习——创新点解析、网络结构图

创新点 1、提出了E-ELAN,但是只在yolov7-e6e中使用到。 2、yolov7基于拼接模型的缩放方法,在yolov7x中使用到。 3、将重参数化卷积应用到残差模块中或者用到基于拼接的模块中去。RepConvN 4、提出了两种新的标签分配方法 一、ELAN和E-ELAN 1、 ELAN …

AI 如何应对 DevOps 监控和可观察性挑战

持续监控和可观察性用例 CI异常检测: AI可以分析历史数据以检测持续集成阶段的异常。任何不寻常的变化都可以在进入下一阶段之前进行标记以供审查。IBM Watson AnomalyDetection 等工具可以通过使用 AI 检测模式和异常情况来帮助识别这些异常情况。 代码质量保证&…

如何快速定位linux故障

1、背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以&#xff0c…