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

文章目录

    • 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.rhkb.cn/news/14451.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软开源 JARVIS 用 ChatGPT 控制 AI 模型

微软亚洲研究院和浙江大学的研究团队近日发布的一篇论文 ——《HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace》介绍了一个大模型协作系统 该系统提出了一种让 LLM 充当控制器的新方法,让 LLM 来管理现有的 AI 模型,来完成…

ChatGPT会大规模取代人力吗?这场论坛聚焦当下热点话题。

2月25日,第三届上海数字创新大会在中以(上海)创新园落下帷幕。为期2天的会期中,设立了5场分论坛,ChatGPT、集成电路、新能源汽车等成为各个分论坛中各行业专家热议的关键词。 360集团创始人周鸿祎通过视频分享的方式&…

2015小米暑期实习笔试题_风口的猪-中国牛市(dp)

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的…

牛市一宝:证券行业

牛市一宝:证券行业 这篇博客转载的是雪球用户“一颗财丸(yikecaiwan)”:https://xueqiu.com/9760119050/97909820 在不同跑道,十年差十倍的差距(上)里,我们看了13个行业指数近13年…

外汇天眼:什么是熊市和牛市?

牛市会发生什么? 当多头在市场上占主导地位时,人们正在寻求投资;信心高,风险接受度普遍上升。 这导致了各个市场的上涨——尤其是股票市场,以及澳元 (AUD)、加元 (CAD)、新西兰元 (NZD) 和新兴市场货币等外汇货币。相…

牛市来了,我劝读者不要炒股他却骂我不地道...

大家好我是敖丙,一个在互联网苟且偷生的程序员。 我相信前段时间股票市场铺天盖地的牛市消息已经席卷大家的社交圈子了,像微信、微博、头条等各种软件也都能看到对应的信息流推送,我有自己的技术交流群,平时聊骚聊技术的群&#x…

R语言——牛市追涨杀跌模型

一、牛市追涨杀跌模型 2019年,随着贸易战的和谈,国内政策面的刺激,A股迎来了一波比较客观的小牛市。由此,我们选择建立追涨杀跌模型来进行投资。接下去以所选股票池(结语有介绍)内的稳定型股票——中直股份…

各大AI研究院共35场NLP算法岗面经奉上

本文涵盖了腾讯微信事业群模式识别中心,PCG和TEG事业群,阿里达摩院,蚂蚁金服,百度研究院,京东研究院,头条AI Lab,滴滴AI Lab,微软亚洲研究院,微软工程院以及联想研究院等…

DeFi会带来牛市吗?

作者:蒙特卡洛 一、Defi的火爆 区块链市场平淡很久了,最近才找到一丝丝火热的气息,这个火热的气息是由Defi带来的。 借助于“借贷即挖矿”,Compound的代币COMP在短短一个月时间之内,价格翻了20多倍,一跃成为…

bluetooth射频已关闭请打开bluetooth射频_投资笔记:5G之射频研究

文/牛市市长 微信公众号:晓烽投资 因为工作关系,今年断断续续的梳理了很多投资笔记,一直想把这篇《5G之射频前端》部分汇总篇文章推送到前台,一直没有时间。这篇文章推送了晚了点,文中的很多判断可能是基于当时的市场做出的结论,不一定适合于当下,请关注的朋友注意。 科技…

这次可能不是你所期待的牛市

6月底,市场还在激烈地讨论3000点是否已经被焊牢;7月伊始,上证综指便以迅雷不及掩耳之势放量突破3150,非银金融和房地产板块翩翩起舞,券商更是集体上演涨停潮。 这似曾相识的行情,让市场嗅到了牛市初期的味道…

无人再谈“永恒牛市”

(图片来源于网络) 请问3月份比特币6万刀的时候是什么市?站在今天回顾过去很多人肯定说是牛市。那么今天比特币3万3是什么市?这个问题就有分歧了。有人说是牛市中的回调,有人说是熊市的途中。从来都是如此,回顾过往人人皆赛诸葛孔明…

牛市因子和熊市因子

来源:Chihiro Quantitative Research ,作者:刀疤连 未经授权严禁转载! 1.前言 因子化投资近年来越来越火热,是量化投资领域的主流方向[1]。因子投资指在某个资产内部,使用一个或多个具有风险溢价的因子…

牛市看涨期权套利

牛市看涨期权套利 操作组合:买低卖高,方向相同 使用场合:对后市谨慎看多 损益图: 参数说明:较低执行价K1的权利金为Q1,较高执行价K2的权利金为Q2 净权利金: Q1-Q2 (也是最大损失)…

牛市价差组合

既可以用看涨期权构造,也可以用看跌期权构造 看涨期权组合 总体看好的情况下 看跌牛市价差

牛市的三个阶段

(图片来源于网络) 早在2/21文章《牛市已进入中场》[链接]中就说,“比特币站稳5万刀、市值破万亿之后,这一轮牛市就进入中场了。”那么,通常而言,牛市有以下三个阶段衔接构成: 第一阶段,上半场。远见者相信牛…

烽火通信C语言笔试题:牛市区间问题

小明最近在研究股市,他拿了某只股票连续n天的股市变化数据,天数编号1到n,对于第i天,该股票的涨跌程度用一个整数啊【i】来表示。小明觉得对于某一段日期区间【li,ri】,如果这段区间内该股票总涨幅不小于K&a…

SpringBoot集成ChartGpt

SpringBoot集成ChartGpt 文章目录 SpringBoot集成ChartGpt[TOC] 前言一、ChatGpt集成组件二、OpenAi连接配置三、查询接口调用1、代码实现2、结果展示 三、获取文本向量接口1、代码实现2、结果展示 四、代理设置总结 前言 ChatGPT(Chatbot Generative Pre-trained …

python预测体彩大乐透

从网上抄了个机器训练的代码,另外自己改了几个数学预测方法 唯一不方便的就是每次要更新数据源然后由于配置太差,每次买之前要提前执行一个钟多,如果间隔时间长的话,手动更新数据也比较繁琐。 这段时间趁着空闲对整个程序修改了一…

ChatGPT结合Excel公式办公 —— ChatGPT统计富豪信息

💧 C h a t G P T 统计富豪信息 \color{#FF1493}{ChatGPT统计富豪信息} ChatGPT统计富豪信息💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法…