论文阅读:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

news2024/9/22 3:59:21

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face
https://proceedings.neurips.cc/paper_files/paper/2023/file/77c33e6a367922d003ff102ffb92b658-Paper-Conference.pdf

HuggingGPT: 解决与ChatGPT及其在Hugging Face的朋友们相关的AI任务

Yongliang Shen1,2*, Kaitao Song2*,†, Xu Tan2, Dongsheng Li2, Weiming Lu1†, Yueting Zhuang1†

  1. 浙江大学, 2. 微软亚洲研究院
    {syl, luwm, yzhuang}@zju.edu.cn, {kaitaosong, xuta, dongsli}@microsoft.com
    https://github.com/microsoft/JARVIS

摘要

解决涉及不同领域和模态的复杂AI任务是实现通用人工智能的关键步骤。尽管目前有众多针对不同领域和模态的AI模型,但它们无法自主处理复杂的AI任务。鉴于大型语言模型(LLMs)在语言理解、生成、交互和推理方面表现出色,我们主张LLMs可以作为控制器来管理现有的AI模型解决复杂任务,语言则作为一种通用接口来实现这一目标。基于这一理念,我们提出了HuggingGPT,这是一个由LLM驱动的代理,利用LLMs(例如ChatGPT)连接机器学习社区(例如Hugging Face)中的各种AI模型来解决AI任务。具体来说,我们使用ChatGPT在接收到用户请求时进行任务规划,根据Hugging Face中可用的功能描述选择模型,使用选定的AI模型执行每个子任务,并根据执行结果总结响应。通过利用ChatGPT强大的语言能力和Hugging Face中丰富的AI模型,HuggingGPT能够处理跨越不同模态和领域的广泛复杂AI任务,并在语言、视觉、语音等具有挑战性的任务中取得了令人印象深刻的成果,这为实现通用人工智能开辟了新的途径。

1 引言

大型语言模型(LLMs)[1, 2, 3, 4, 5, 6],例如ChatGPT,因其在各种自然语言处理(NLP)任务上的出色表现,已经吸引了学术界和工业界的广泛关注。基于对大量文本语料库的大规模预训练和来自人类反馈的强化学习[2],LLMs在语言理解、生成和推理方面展现出了卓越的能力。LLMs的强大能力也推动了许多新兴研究课题的发展(例如,上下文学习[1, 7, 8]、指令学习[9, 10, 11, 12, 13, 14]和思维链提示[15, 16, 17, 18]),进一步探索了LLMs的潜力,并为推进通用人工智能带来了无限可能。

尽管取得了这些巨大的成功,当前的LLM技术仍不完善,并在构建先进AI系统的道路上面临一些紧迫的挑战。我们从以下几个方面讨论这些问题:1)限于文本生成的输入和输出形式,当前的LLMs缺乏处理如视觉和语音等复杂信息的能力,尽管它们在NLP任务上取得了显著成就;2)在现实世界场景中,一些复杂任务通常由多个子任务组成,因此需要多个模型的调度和协作,这超出了语言模型的能力;3)对于一些具有挑战性的任务,LLMs在零样本或少样本设置中表现出色,但它们仍然不如一些专家(例如,微调模型)。

如何解决这些问题可能是LLMs迈向通用人工智能的关键步骤。

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

在本文中,我们提出了一个名为HuggingGPT的由LLM驱动的代理,它能够自主地解决广泛的复杂AI任务,连接LLMs(即ChatGPT)和机器学习社区(即Hugging Face),并且可以处理不同模态的输入。更具体地说,LLM充当大脑:一方面,它根据用户请求拆解任务,另一方面,根据模型描述为任务分配合适的模型。通过执行模型并整合计划任务中的结果,HuggingGPT能够自主完成复杂的用户请求。图1所示的HuggingGPT的整个过程可以分为四个阶段:

  • 响应生成:最后,使用ChatGPT整合所有模型的预测结果,并为用户生成响应。

得益于这样的设计,HuggingGPT能够从用户请求中自动生成计划,并使用外部模型,使其能够整合多模态感知能力,并解决各种复杂的AI任务。更值得注意的是,这个流程允许HuggingGPT不断地吸收特定任务专家的力量,促进AI能力的增长和可扩展性。

总的来说,我们的贡献可以总结如下:

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

在这里插入图片描述
图 1:语言作为接口,使大型语言模型(例如ChatGPT)能够连接众多AI模型(例如Hugging Face中的模型)来解决复杂的AI任务。在这个概念中,LLM充当控制器,管理和组织专家模型的协作。LLM首先根据用户请求规划任务列表,然后为每个任务分配专家模型。专家执行任务后,LLM收集结果并响应用户。

在这里插入图片描述
在这里插入图片描述

图 2:HuggingGPT的概览。以LLM(例如ChatGPT)作为核心控制器,专家模型作为执行者,HuggingGPT的工作流程包括四个阶段:1)任务规划:LLM将用户请求解析成任务列表,并确定任务间的执行顺序和资源依赖关系;2)模型选择:LLM根据Hugging Face上专家模型的描述为任务分配合适的模型;3)任务执行:混合端点上的专家模型执行分配的任务;4)响应生成:LLM整合专家的推理结果,并生成工作流日志的摘要,以回应用户。

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

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

相关文章

乐尚代驾十订单支付

账单信息 司机结束代驾之后,生成账单(包含账单信息和分账信息)司机发送账单给乘客乘客获取账单之后,进行支付 获取账单信息 order_bill表记录的账单信息,我们直接获取即可 Operation(summary "根据订单id获…

递归~~~

一.定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 比如单链表递归遍历的例子: void f(Node node){if (node null){return;}f(node.next);} 说明: 1.自己调用自己,如…

基于SpringBoot+Vue的汽车服务管理系统(带1w+文档)

基于SpringBootVue的汽车服务管理系统(带1w文档) 基于SpringBootVue的汽车服务管理系统(带1w文档) 在开发系统过程中采用Java语言、MySQL数据库存储数据。系统以B/S为基础,实现管理一体化、规范化,为用户提供一个高效快捷的交流系统[5]。利用springboot架…

LearnOpenGL之3D显示

前序 AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合: Github地址:https://github.com/wangyongyao1989/AndroidLearnOpenGL 系列文章: 1、LearnOpenGL之入门基础 2、LearnOpenGL之3D显示 显示效果 根据上一篇文章的LearnO…

结构型设计模式:桥接/组合/装饰/外观/享元

结构型设计模式:适配器/代理 (qq.com)

浮动IP(Floating IP)计费;OpenStack算力共享;OpenStack实现资源虚拟化;算力调度策略

目录 浮动IP(Floating IP)计费 浮动IP的定义与作用 计费中的浮动IP数据 浮动IP在计费中的作用 OpenStack算力共享 一、OpenStack在算力共享中的角色 二、OpenStack与算力共享的结合方式 三、实际应用案例 算力调度策略 算力计费策略 OpenStack实现资源虚拟化 1.虚…

用于仅摄像头闭环驾驶的视觉语言模型

CarLLaVA: Vision language models for camera-only closed-loop driving 用于仅摄像头闭环驾驶的视觉语言模型 Abstract In this technical report, we present CarLLaVA, a Vision Language Model (VLM) for autonomous driving, developed for the CARLA Autonomous Driv…

【云原生】kubernetes最新版本1.30.2,集群搭建部署全方位攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

SimGCL graph contrastive learning by finding homophily in heterophily

发表于: Knowledge and Information Systems, ccfb 推荐指数: #paper/ ⭐ 总结: 重新定义了相似度矩阵, 重新定义了特征, 重新设计了节点删除概率等, 但是, 换汤不换药, 引入了大量的超参 (快 10 个了吧). 创新点不够, 所以 ccf B 期刊理所应该. (甚至我觉得更低) 相关知识: 本…

详细教程 MySQL 数据库 下载 安装 连接 环境配置 全面

数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…

通俗易懂玩Qt:时间滑动选择器实现(内附主要源码)

时间滑动选择器实现 组件说明: 本组件命名为时间滑动选择器,主要运用于 arm 平台下的触摸屏上,虽然 QT 自带有时间选择组件,但是对触摸屏的使用并不友好,为了提升项目界面的交互性,于是就有了时间滑动选择器…

【深海王国】初中生也能画的电路板?番外1:Arduino其他家族成员的拓展板开发(1)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛苦工作的你今天也辛苦啦(/≧ω) 今天大都督为大家带来电路板的番外系列——初中生也能画的电路板?番外1:Arduino其他家族成员的拓展板开发,带你给其他Arduino家族成…

数据库漫游记:表、视图、函数、存储过程及触发器之跨平台兼容性分析(上)

先言之 🌟余撰此文,乃为导引初窥数据库之学人,俾其明了表、视图、函数、存储过程及触发器之义理,及其于诸般平台之上创建、修改与废弃之法式。盖初学之人,常陷于迷雾之中,难辨东西,故须详述而明…

lombok使用@slf4j 运行时提示找不到符号log(Missing POM for org.projectors:lombok:jar)

1.问题表现 原本是之前搭建好的工程&#xff0c;只是换了个开发环境重新启动就不行了。一直编译不通过&#xff01; 可以看到IDEA其实是引入了依赖的 都没有出现红色波浪线 <mapstruct.version>1.5.5.Final</mapstruct.version> <lombok.version>1.18.30<…

鸿蒙(API 12 Beta2版)NDK开发【JSVM-API使用规范】

JSVM-API使用规范 生命周期管理 【规则】 合理使用OH_JSVM_OpenHandleScope和OH_JSVM_CloseHandleScope管理JSVM_Value的生命周期&#xff0c;做到生命周期最小化&#xff0c;避免发生内存泄漏问题。 每个JSVM_Value属于特定的HandleScope&#xff0c;HandleScope通过OH_JSV…

【Python实战因果推断】71_图因果模型6

目录 Positivity Assumption An Identification Example with Data Confounding Bias Positivity Assumption 调整公式同样强调了正则性&#xff08;positivity&#xff09;的重要性。因为你正在对治疗和结果之间的差异在X的条件下求平均&#xff0c;你必须确保对于所有X的…

【32单片机篇】项目:WIFI天气预报

一、项目需求 使用 ESP8266 通过 HTTP 获取天气数据&#xff08;心知天气&#xff09;&#xff0c;并显示在 OLED 屏幕上。 按键 1 &#xff1a;循环切换今天/明天/后天天气数据&#xff1b; 按键 2 &#xff1a;更新天气 二、项目框图 三、硬件部分 四、项目源码及实现 1.项…

MySQL是怎样运行的——第1章 初识MySQL

文章目录 1. 1 MySQL的客户端/服务器架构1.2 安装MySQL&#xff08;略&#xff09;1.3 启动MySQL服务器程序1.4 启动MySQL客户端程序1.5 客户端与服务器连接的过程1.6 服务器处理客户端请求 1. 1 MySQL的客户端/服务器架构 MySQL的运行过程就是C/S架构。多个客户端程序连接到服…

洛谷 P1868 饥饿的奶牛

原题 题目描述 有一条奶牛冲出了围栏&#xff0c;来到了一处圣地&#xff08;对于奶牛来说&#xff09;&#xff0c;上面用牛语写着一段文字。 现用汉语翻译为&#xff1a; 有 N 个区间&#xff0c;每个区间x,y 表示提供的x∼y 共y−x1 堆优质牧草。你可以选择任意区间但不…

dockerfile定制镜像 docker-compose编排容器

1 dockerfile dockerfile本质上是利用了Linux系统的挂载&#xff08;UnionFS&#xff09;&#xff0c;将多个目录挂载到同一目录下&#xff0c;实现镜像的层叠式结构&#xff0c;从而实现功能聚合。 1.1 一个最简单的程序 package mainimport "fmt"func main() {f…