当前位置: 首页 > news >正文

2023+HuggingGPT: Solving AI Tasks with ChatGPT and itsFriends in Hugging Face

摘要:

语言是llm(例如ChatGPT)连接众多AI模型(例如hugs Face)的接口,用于解决复杂的AI任务。在这个概念中,llms作为一个控制器,管理和组织专家模型的合作。LLM首先根据用户请求规划任务列表,然后为每个任务分配专家模型。专家执行任务后,LLM收集结果并响应用户。

问题:

1.尽管LLMs在NLP任务中取得了重大成就,但由于文本输入和输出形式的限制,目前的LLMs缺乏处理复杂信息(如视觉和语音)的能力。

2.在现实场景中,一些复杂的任务通常由多个子任务组成,因此需要多个模型的调度和协作,这也超出了语言模型的能力。

3.对于一些具有挑战性的任务,LLMs在零射击或少射击设置中表现出出色的结果,但他们仍然比一些专家(例如,微调模型)弱。

贡献点:

1. 为了补充大型语言模型和专家模型的优势,提出了HuggingGPT。HuggingGPT将llm作为规划和决策的大脑,针对每个特定任务自动调用和执行专家模型,为通用AI解决方案的设计提供了新的途径。

2. 通过将Hugging Face与ChatGPT周围的许多任务特定模型集成,HuggingGPT能够处理涵盖多种模式和领域的广义人工智能任务。HuggingGPT通过模型间的开放协作,为用户提供多模式、可靠的服务。

3. 指出了HuggingGPT(和自治代理)中任务规划的重要性,并制定了一些实验评估来衡量llm的规划能力。

4.在跨语言、视觉、语音和跨模态的多个具有挑战性的人工智能任务上进行的大量实验表明,HuggingGPT在理解和解决来自多个模态和领域的复杂任务方面具有巨大的潜力。

方法:

整体流程

1.任务规划:使用ChatGPT分析用户的请求,了解用户的意图,并通过提示将其分解为可能可解决的任务。

通常,在实际场景中,许多用户请求将包含一些复杂的意图,因此需要编排多个子任务来实现目标。因此,我们制定任务规划作为HuggingGPT的第一阶段,目的是利用LLM分析用户请求,然后将其分解为结构化任务的集合。此外,我们还需要LLM来确定依赖关系以及这些分解任务的执行顺序,以建立它们之间的联系。

2.模型选择:为了解决计划的任务,ChatGPT根据模型描述选择托管在hug Face上的专家模型。

完成任务规划后,HuggingGPT接下来需要将任务和模型进行匹配,即在解析的任务列表中为每个任务选择最合适的模型。为此,我们使用模型描述作为连接各个模型的语言接口。更具体地说,我们首先从机器学习社区(例如,hug Face)获得专家模型的描述,然后通过上下文任务模型分配机制动态选择任务模型。该策略支持增量模型访问(简单地提供专家模型的描述),并且可以更加开放和灵活地使用ML社区。

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

3.任务执行:调用并执行每个选定的模型,并将结果返回给ChatGPT。

一旦将特定的模型分配给已解析的任务,下一步就是执行该任务,即执行模型推理。因此,在这个阶段,HuggingGPT会自动将这些任务参数输入到模型中,执行这些模型来获得推理结果,然后将其发送回LLM。在这个阶段有必要强调资源依赖的问题。由于先决条件任务的输出是动态生成的,因此HuggingGPT还需要在启动任务之前动态地指定任务的依赖资源。

4.响应生成:最后,利用ChatGPT整合所有模型的预测并为用户生成响应。

在所有任务执行完成后,HuggingGPT需要生成最终响应。HuggingGPT将前三个阶段(任务规划、模型选择和任务执行)的所有信息集成为这一阶段的简明总结,包括计划任务列表、任务选择的模型以及模型的推断结果。其中最重要的是推理结果,这是HuggingGPT做出最终决策的关键点。这些推理结果以结构化的格式呈现,如对象检测模型中带有检测概率的边界框,问答模型中的答案分布等。HuggingGPT允许LLM接收这些结构化的推理结果作为输入,并以友好的人类语言形式生成响应。此外,LLM不是简单地聚合结果,而是生成主动响应用户请求的响应,从而提供具有置信度的可靠决策。

整体流程如下图所示:语言是llm(例如ChatGPT)连接众多AI模型(例如hugs Face)的接口,用于解决复杂的AI任务。在这个概念中,LLM作为一个控制器,管理和组织专家模型的合作。LLM首先根据用户请求规划任务列表,然后为每个任务分配专家模型。专家执行任务后,LLM收集结果并响应用户。

一个huggingGPT的例子,如下图所示。HuggingGPT的工作流程以LLM(如ChatGPT)为核心控制器,专家模型为执行者,分为四个阶段:1)任务规划:LLM将用户请求解析为任务列表,确定任务之间的执行顺序和资源依赖关系;2)模型选择:基于专家模型在hug Face上的描述,LLM为任务分配合适的模型;3)任务执行:混合端点上的专家模型执行分配的任务;4)响应生成:LLM集成专家的推理结果,生成工作流日志汇总,响应用户。

局限性:

(1)HuggingGPT中的规划严重依赖于LLM的能力。因此,我们不能保证生成的计划总是可行和最优的。因此,如何对LLM进行优化,提高LLM的规划能力至关重要;

(2) 在我们的框架中,效率是一个共同的挑战。为了构建这样一个具有任务自动化的协作系统(例如HuggingGPT),它严重依赖于一个强大的控制器(例如ChatGPT)。然而,HuggingGPT在整个工作流程中需要与llm进行多次交互,从而增加了生成响应的时间成本;

(3)令牌长度是使用LLM时的另一个常见问题,因为最大令牌长度总是有限的。虽然有些作品已经将最大长度扩展到32K,但如果我们想要连接众多的模型,这对我们来说仍然是无法满足的。因此,如何简单有效地总结模型描述也是值得探索的问题;

(4)不稳定性的主要原因是llm通常是不可控的。虽然LLM在生成方面很熟练,但在预测过程中仍有可能不符合指令或给出不正确的答案,导致程序工作流程出现异常。如何减少推理过程中的不确定性是设计系统时必须考虑的问题。

相关文章:

2023+HuggingGPT: Solving AI Tasks with ChatGPT and itsFriends in Hugging Face

摘要: 语言是llm(例如ChatGPT)连接众多AI模型(例如hugs Face)的接口,用于解决复杂的AI任务。在这个概念中,llms作为一个控制器,管理和组织专家模型的合作。LLM首先根据用户请求规划任务列表,然后为每个任务分配专家模…...

Ant Design Mobile是什么?

在当今的数字时代,移动应用程序和网页设计已经成为各行各业的重要组成部分。用户界面的设计直接影响到用户体验和产品的成功。为了帮助设计师在移动设计领域更好,Antdesignmobile应运而生。Antdesignmobile是蚂蚁金服的移动UI设计语言和框架,…...

深入理解设计模式-行为型之模板(和回调区别联系)

概述 模板设计模式(Template Design Pattern)是一种行为型设计模式,它定义了一个算法的骨架,将算法的一些步骤延迟到子类中实现。模板设计模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板设计模式的核心思想…...

LabVIEW控制通用工作台

LabVIEW控制通用工作台 用于教育目的的计算机化实验室显着增长,特别是用于运动控制的实验室。它们代表了各种工业应用中不断扩大的领域,并成为以安全的方式使用通常昂贵或独特的实验室设备进行实时实验的宝贵工具。NI LabVIEW等软件应用程序的开发和不断…...

什么是事务,并发带来的事务问题以及事务隔离级别(图文详解)

一、什么是事务? 简单说就是逻辑上的一组操作,要么都执行,要么都不执行。 举个例子,假如小明要给小红转账100元,这个转账会涉及到两个关键操作:①将小明的余额减少100元。 ②将小红的余额增加100元 。但…...

【MySQL】MySQL数据库的delete from table和truncate table之间的区别

DELETE FROM table 和 TRUNCATE TABLE 是两种不同的数据库操作,用于从MySQL数据库的表中删除数据。它们有以下区别: 操作方式:DELETE FROM table 是一种逐行删除的操作,它会逐个删除表中的每一行数据,并且可以带有条件…...

强制Edge或Chrome使用独立显卡【WIN10】

现代浏览器通常将图形密集型任务卸载到 GPU,以改善你的网页浏览体验,从而释放 CPU 资源用于其他任务。 如果你的系统有多个 GPU,Windows 10 可以自动决定最适合 Microsoft Edge 自动使用的 GPU,但这并不一定意味着最强大的 GPU。 …...

easyx图形库基础:3实现弹球小游戏

实现弹球小游戏 一.实现弹球小游戏:1.初始化布:2.初始化一个球的信息:3.球的移动和碰撞反弹4.底边挡板的绘制和移动碰撞重置数据。 二.整体代码: 一.实现弹球小游戏: 1.初始化布: int main() {initgraph(800, 600);setorigin(40…...

vue基础知识三:v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…...

Python Opencv实践 - 图像旋转

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像旋转 #Opencv中的旋转&#xff0c;首先通过cv.getRotationMatrix2D获得旋转矩阵 #cv.getRotationMatrix2D(center,ang…...

第五章 Opencv图像处理框架实战 5-10 文档扫描OCR识别

一、整体流程演示 上一篇我们进行了银行卡数字识别,这次我们利用opnecv等基础图像处理方法实现文档扫描OCR识别,该项目可以对任何一个文档,识别扫描出该文档上所有的文字信息。 为了方便后续程序运行,大家可以在Run->Edit Configuration中配置相关参数,选择相应编译器…...

CentOS 7 源码制作openssh 9.4p1 rpm包 —— 筑梦之路

参考之前的博客&#xff1a; centos 7 制作openssh8.7/8.8/8.9/9.0/9.1/9.2/9.3 p1 rpm包升级——筑梦之路_openssh rpm包_筑梦之路的博客-CSDN博客 需要说明的是9.4版本必须要openssl 1.1.1&#xff0c;低于此版本无法完成编译。这也是单独写这篇文章的必要性。 参考这篇编…...

OpenCV图像处理——轮廓检测

目录 图像的轮廓查找轮廓绘制轮廓 轮廓的特征轮廓面积轮廓周长轮廓近似凸包边界矩形最小外接圆椭圆拟合直线拟合 图像的矩特征矩的概念图像中的矩特征 图像的轮廓 查找轮廓 binary,contours,hierarchycv.findContours(img,mode,method)绘制轮廓 cv.drawContours(img,coutours…...

【论文阅读】基于深度学习的时序预测——Non-stationary Transformers

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…...

开发者如何使用讯飞星火认知大模型API?

目录 1、申请星火API接口 2、使用星火API接口 3、测试编译效果 之前我们使用网页文本输入的方式体验了讯飞星火认知大模型的功能&#xff08;是什么让科大讯飞1个月股价翻倍&#xff1f;&#xff09;&#xff0c;本篇博文将从开发者角度来看看如何使用讯飞星火认知大模型API…...

linux 系统中vi 编辑器和库的制作和使用

目录 1 vim 1.1 vim简单介绍 1.2 vim的三种模式 1.3 vim基本操作 1.3.1命令模式下的操作 1.3.2 切换到文本输入模式 1.3.3 末行模式下的操作 2 gcc编译器 2.1 gcc的工作流程 2.2 gcc常用参数 3 静态库和共享&#xff08;动态&#xff09;库 3.1库的介绍 3.2静态…...

麒麟arm架构 编译安装qt5.14.2

1、先在官网下载qt源码&#xff1a; https://download.qt.io/archive/qt/5.14/5.14.2/single/[qt源码下载地址] 2、解压编译 使用tar -xvf qt-everywhere-src-5.14.2.tar.xz 解压压缩包 cd qt-everywhere-src-5.14.2 执行 ./configure --prefix/usr/local/qt.5.14.2 make -…...

【springmvc系】利用RequestBodyAdviceAdapter做接口鉴权

需求 有个简单的需求&#xff0c;对于第三方接口我们需要做个简单的鉴权机制&#xff0c;这边使用的是非对称性加密的机制。我们提供三方公钥&#xff0c;他们通过公钥对接口json报文使用加密后的报文请求&#xff0c;我们通过对接收过来的请求某一个加密报文字段来进行RSA解密…...

ROS学习笔记(三)---好用的终端Terminator

ROS学习笔记文章目录 01. ROS学习笔记(一)—Linux安装VScode 02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序&#xff08;简例&#xff09; 一、Terminator是什么&#xff1f; 在前面的学习中&#xff0c;为了运行hello.py我是在vscode频繁的点击运行窗口的“”号…...

NFT Insider#102:The Sandbox重新上线LAND桥接服务,YGG加入Base生态

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...