HuggingGPT:一个ChatGPT控制所有AI模型,自动帮人完成AI任务

最强组合:HuggingFace+ChatGPT ——HuggingGPT,它来了!

只要给定一个AI任务,例如“下面这张图片里有什么动物,每种有几只”。

它就能帮你自动分析需要哪些AI模型,然后直接去调用HuggingFace上的相应模型,来帮你执行并完成。

整个过程,你要做的就只是用自然语言将你的需求输出

这项由浙大与微软亚研院的合作成果,一经发布就迅速爆火。

英伟达AI研究科学家Jim Fan直呼:

这是我本周读到的最有意思的论文。它的思想非常接近“Everything App”(万物皆App,被AI直接读取信息)。

而一位网友则“直拍大腿”:

这不就是ChatGPT“调包侠”吗?

AI进化速度一日千里,给我们留口饭吃吧……

所以,具体怎么回事儿?

HuggingGPT:你的AI模型“调包侠”

其实,若说这个组合物只是“调包侠”,那格局小了。

它的真正用义,是AGI。如作者所言,迈向AGI的关键一步是能够解决具有不同领域和模式的复杂AI任务。我们目前的成果离此还有距离——大量模型只能出色地完成某一特定任务。

然而大语言模型LLM在语言理解、生成、交互和推理方面的表现,让作者想到:可以将它们作为中间控制器,来管理现有的所有AI模型,通过“调动和组合每个人的力量”,来解决复杂的AI任务。

在这个系统中,语言是通用的接口。于是,HuggingGPT就诞生了。它的工程流程分为四步:

  • 首先,任务规划。ChatGPT将用户的需求解析为任务列表,并确定任务之间的执行顺序和资源依赖关系。

  • 其次,模型选择。ChatGPT根据HuggingFace上托管的各专家模型的描述,为任务分配合适的模型。

  • 接着,任务执行。混合端点(包括本地推理和HuggingFace推理)上被选定的专家模型根据任务顺序和依赖关系执行分配的任务,并将执行信息和结果给到ChatGPT。

  • 最后,输出结果。由ChatGPT总结各模型的执行过程日志和推理结果,给出最终的输出。

如下图所示。假定我们给出这样一个请求:

请生成一个女孩正在看书的图片,她的姿势与example.jpg中的男孩相同。然后请用你的声音描述新图片。

可以看到HuggingGPT是如何将它拆解为6个子任务,并分别选定模型执行得到最终结果的。

具体效果怎么样?

作者采用gpt-3.5-turbo和text-davinci-003这俩可以通过OpenAI API公开访问的变体,进行了实测。

如下图所示,在任务之间存在资源依赖关系的情况下,HuggingGPT可以根据用户的抽象请求正确解析出具体任务,完成图片转换。

在音频和视频任务中,它也展现了组织模型之间合作的能力,通过分别并行和串行执行两个模型的方式,完了一段“宇航员在太空行走”的视频和配音作品。

此外,它还可以集成多个用户的输入资源执行简单的推理,比如在以下三张图片中,数出其中有多少匹斑马。

一句话总结:HuggingGPT可以在各种形式的复杂任务上表现出良好的性能。

项目已开源,名叫「贾维斯」

目前,HuggingGPT的论文已经发布,项目则正在建设中,代码只开源了一部分,已揽获1.4k标星。

我们注意到,它的项目名称很有意思,不叫本名HuggingGPT,而是钢铁侠里的AI管家贾维斯(JARVIS)。

有人发现它和3月份刚发布的Visual ChatGPT的思想非常像:后者HuggingGPT,主要是可调用的模型范围扩展到了更多,包括数量和类型。

不错,其实它们都有一个共同作者:微软亚研院。

具体而言,Visual ChatGPT的一作是MSRA高级研究员吴晨飞,通讯作者为MSRA首席研究员段楠。

HuggingGPT则包括两位共同一作:Shen Yongliang,TA来自浙江大学,在MSRA实习期间完成此项工作;

Song Kaitao,MSRA研究员。

其通讯作者为浙大计算机系教授庄越挺。

  论文地址:https://arxiv.org/abs/2303.17580

  项目链接:https://github.com/microsoft/JARVIS

最后,对于这个强大新工具的诞生,网友们很是兴奋,有人表示:

ChatGPT已成为人类创建的所有AI的总指挥官了。

也有人据此认为:

AGI可能不是一个LLM,而是由一个“中间人”LLM连接的多个相互关联的模型。

那么,我们是否已经开启“半AGI”的时代了?

参考链接:

https://twitter.com/DrJimFan/status/1642563455298473986

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 02 数据类型(04元组)

一、元组 元组和列表的唯一不同:不能直接对元组的元素进行修改,删除,添加。 不能修改 1.1 创建元组 1.1.1 创建一个空元组 touple1() # ‘() 里面没有元素,表示为空元组 1.1.2 元组可以容纳任意数据类型的数据的有序集合&…

CoppeliaSim安装教程(以前叫V-REP)

最近使用机器人仿真器CoppeliaSim做一些机械臂相关的东西,记录一下安装过程。 注意:CoppeliaSim使用广泛,我感觉最经典的一篇文章就是andy zeng等人使用CoppeliaSim仿真器和强化学习方法进行机械臂push and grasp的研究,参考文献在…

【李宏毅】深度学习——HW4-Speaker Identification

Speaker Identification 1.Goal 根据给定的语音内容,识别出说话者是谁 2.Data formats 2.1data directory 目录下有三个json文件和很多pt文件,三个json文件作用标注在下图中,pt文件就是语音内容。 mapping文件 metadata文件 n_mels:Th…

优思学院|《精益思想》让企业快速应对市场变化的利器

1985年,美国麻省理工学院的丹尼尔T琼斯(Daniel T. Jones)、詹姆斯沃默克(James P. Womack)等筹资500万美元,用了近5年的时间对90多家汽车厂进行对比分析,于1990年出版了《改变世界的机器》一书&…

贵金属技术分析的止损保护

前面说过我们这些小散户,最多也不过十几万或者几万美金的账户,没有必要想国际的一些大基金那样,又锁仓,又对冲什么的,我们资金小的投资者,足够灵活,自然有我们存活的方法。所以我们要注意发挥我…

算法题回顾:双指针链表系列集锦

1,合并两个有序链表 思路 创建一个指向空的新链表,用来存储合并后的链表,p指针指向该链表。创建双指针,分辨指向两个链表,用p1, p2表示while循环,依次判断两个指针指向数据的大小,将最小值赋值…

从零开始实现一个C++高性能服务器框架----日志模块

此项目是根据sylar框架实现,是从零开始重写sylar,也是对sylar丰富与完善 项目地址:https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍:实现了一个基于协程的服务器框架,支持多线程、多协程协同调度&am…

Vue3走马灯(Carousel)

Vue2走马灯&#xff08;Carousel&#xff09; 可自定义设置以下属性&#xff1a; 走马灯图片数组&#xff08;imageData&#xff09;&#xff0c;类型&#xff1a;Array<{title: string, link?: string, imgUrl: string}>&#xff0c;默认 [] 自动滑动轮播间隔&#…

3-ELK+Kafka+Filebeat 海量级日志收集 TB PB级别

ELKKafkaFilebeat 终极版 4、Kafka&#xff1a; 数据缓冲队列(消息队列)。同时提高了可扩展性。具有峰值处理能力&#xff0c;使用消息队列能够使关键组件顶住突发的访问压力&#xff0c;而不会因为突发的超负荷的请求而完全崩溃。是一个分布式、支持分区的&#xff08;partit…

模板匹配及应用

模板匹配及应用 1)模板匹配 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的, 而是通过在 输入图像上滑动图像块(模板)同时比对相似度, 来对模板和输入图像进行匹配的一种方法。 应用: ①目标查找定位 ②运动物体跟踪 ③…

SpringMvc中拦截器

文章目录 1.拦截器概述 2.拦截器类中的方法 1.先写一个前端页面 2.写后台代码 3.编写success.jsp页面 4.编写拦截器类&#xff0c;实现HandlerInterceptor接口 5.编写error.jsp页面 6.配置拦截器类 3.配置多个拦截器 3.1再写一个拦截器类 3.2 配置拦截器类 1.拦截器概述 Spring…

中国版ChatGPT即将来袭-国内版ChatGPT入口

必应chatGPT入口 目前并不存在“必应ChatGPT”这个概念。必应&#xff08;Bing&#xff09;是Microsoft公司推出的一款搜索引擎&#xff0c;而ChatGPT是OpenAI开发的自然语言处理技术&#xff0c;它们是两个不同的产品品牌。 不过&#xff0c;Microsoft也在自然语言处理领域里…

Leetcode字符串的排列

其实可以看成使用其中一个字符加上其他字符的连接&#xff0c;最后用set去重 class Solution:lru_cache(None)def permutation(self, s: str) -> List[str]:if not s: return []res set()for i in range(len(s)):for j in self.permutation(s[:i]s[i1:]):res.add(s[i]j)re…

Unity Animation -- 改进动画效果

使用曲线&#xff08;Curves&#xff09;改善动画 在上一篇笔记中&#xff08;Unity Animation -- Overview_亦枫Leonlew的博客-CSDN博客&#xff09;&#xff0c;我们制作了简单的小球弹跳的动画&#xff0c;但这个动画看起来很不自然&#xff0c;小球的弹跳看起来就像是不受…

Leetcode.559 N 叉树的最大深度

题目链接 Leetcode.559 N 叉树的最大深度 easy 题目描述 给定一个 N 叉树&#xff0c;找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 N 叉树输入按层序遍历序列化表示&#xff0c;每组子节点由空值分隔&#xff08;请参见示例&#xff09;。…

Vector - CAPL - CRC算法介绍(续)

不常用CRC算法 目录 Crc_CalculateCRC8H2F 代码示例 Crc_CalculateCRC32P4 代码示例 Crc_CalculateCRC64 代码示例 Crc_CalculateCRC8H2F 功能&#xff1a;根据数据计算CRC8H2F的相应校验和。 data&#xff1a;待计算CRC8H2F校验和的数据 dataSize&#xff1a;待计算CRC…

Ansys Zemax | 如何使用 Zernike 凹陷表面对全反射系统进行建模

本文介绍如何使用Zernike标准下垂表面对全反射系统进行建模。全反射系统是一种特殊情况&#xff0c;其中Zernike凹陷表面可用于模拟给定场点的所有波长下的性能。使用Zernike凹陷表面代替Zernike相位&#xff0c;因为衍射功率与波长变化时的反射功率不同。一个相位波是任何波长…

linux 共享内存 shmget

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理机制 系统命令 接口说明 代码演示 结尾 前言 本专栏主要分享linu…

Day924.自动化测试 -系统重构实战

自动化测试 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于自动化测试的内容。 自动化测试是一个很容易产生“争议”的话题&#xff0c;也经常会有一些很有意思的问题。 自动化测试不是应该由测试同学来编写吗&#xff0c;开发是不是没有必要学吧&#xff1f;之前…

【Linux】进程理解与学习-程序替换

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念 【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学…
最新文章