来 源: 机器之心
几个月来,ChatGPT、GPT-4 的相继爆火,让人们看到大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,这引起了学界和业界的极大关注,也让人们看到了 LLM 在构建通用人工智能 (AGI) 系统方面的潜力。
要实现 AGI,LLM 要面临诸多挑战,包括:
【资料图】
受限于文本生成的输入和输出形式,当前的 LLM 缺乏处理视觉和语音等复杂信息的能力;
在现实场景中,一些复杂的任务通常由多个子任务组成,因此需要多个模型的调度和协作,这也超出了语言模型的能力范围;
对于一些具有挑战性的任务,LLM 在零样本或少样本情况下表现出优异的结果,但它们仍然弱于一些专用的微调模型。
其中,最重要的一点是实现 AGI 需要解决不同领域、不同模式的复杂 AI 任务,而现有 AI 模型大多是用于特定领域特定任务。
基于此,来自浙江大学和微软亚研的研究者最近提出了一种让 LLM 充当控制器的新方法,让 LLM 来管理现有的 AI 模型以解决复杂的 AI 任务,并且使用语言作为通用接口。该研究提出的 HuggingGPT 是一个利用 LLM 连接机器学习社区(例如 HuggingFace)中各种 AI 模型以解决复杂 AI 任务的系统。
论文地址:https://arxiv.org/abs/2303.17580
项目地址:https://github.com/microsoft/JARVIS
具体来说,HuggingGPT 在收到用户请求时使用 ChatGPT 进行任务规划,根据 HuggingFace 中可用的功能描述选择模型,用选定的 AI 模型执行每个子任务,并根据执行结果汇总响应。借助 ChatGPT 强大的语言能力和 HuggingFace 丰富的 AI 模型,HuggingGPT 能够完成覆盖不同模态和领域的复杂 AI 任务,并在语言、视觉、语音等具有挑战性的任务中取得了令人印象深刻的结果。HuggingGPT 为走向通用人工智能开辟了一条新的道路。
我们先来看一下 HuggingGPT 完成任务的例子,包括文档问题回答、图像转换、视频生成和音频生成:
还有为图像生成复杂详尽的文本描述:
为了处理复杂的 AI 任务,LLM 需要与外部模型协调以利用它们的能力。因此,问题的关键是如何选择合适的中间件来桥接 LLM 和 AI 模型之间的连接。
该研究注意到每个人工智能模型都可以通过总结其模型功能来表示为一种语言形式。因此,该研究提出一个概念:「语言是 LLM 连接 AI 模型的通用接口」。通过将 AI 模型的文本描述融入到 prompt 中,LLM 可以被视为管理(包括规划、调度和协作) AI 模型的「大脑」。
另一个挑战是,解决大量的 AI 任务需要收集大量高质量的模型描述。在这一点上,该研究注意到一些公共 ML 社区通常会提供各种适用于特定 AI 任务的模型,并且这些模型具有定义明确的描述。因此该研究决定将 LLM(例如 ChatGPT)与公共 ML 社区(例如 GitHub、HuggingFace、Azure 等)联系起来,通过基于语言的接口解决复杂的 AI 任务。
截至目前,HuggingGPT 已经围绕 ChatGPT 在 HuggingFace 上集成了数百个模型,涵盖了文本分类、目标检测、语义分割、图像生成、问答、文本转语音、文本转视频等 24 个任务。实验结果证明了 HuggingGPT 在处理多模态信息和复杂 AI 任务方面的强大能力。并且,HuggingGPT 将继续添加面向特定任务的 AI 模型,从而实现可增长和可扩展的 AI 功能。
HuggingGPT 介绍
HuggingGPT 是一个协作系统,大型语言模型(LLM)充当控制器、众多专家模型作为协同执行器。其工作流程共分为四个阶段:任务规划、模型选择、任务执行和响应生成。
任务规划:ChatGPT 等 LLM 首先对用户请求进行解析,进行任务分解,并根据其知识规划任务顺序和依赖关系;
模型选择:LLM 将解析后的任务分配给专家模型;
任务执行:专家模型在推理端点上执行分配到的任务,并将执行信息和推理结果记录到 LLM;
响应生成:LLM 对执行过程日志和推理结果进行汇总,并将汇总结果返回给用户。
接下来我们看看这四步具体实现过程。
任务规划
在 HuggingGPT 的第一阶段,大型语言模型接受用户请求并将其分解为一系列结构化任务。复杂的请求往往涉及多个任务,大型语言模型需要确定这些任务的依赖关系和执行顺序。为了促使大型语言模型进行有效的任务规划,HuggingGPT 在其提示设计中采用了基于规范的指令和基于演示的解析。
通过在提示中注入几个演示,HuggingGPT 允许大型语言模型更好地理解任务规划意图和标准。目前,HuggingGPT 支持的任务列表如表 1、表 2、表 3 和表 4 所示。可以看出,HuggingGPT 覆盖 NLP、CV、语音、视频等任务。
模型选择
在解析任务列表之后,HuggingGPT 为任务列表中的每个任务选择适当的模型。为了实现这一过程,该研究首先从 HuggingFace Hub 获得对专家模型的描述(模型描述大致包括模型功能、体系架构、支持的语言和域、许可等信息。)然后通过上下文中的任务模型分配机制动态地为任务选择模型。
任务执行
一旦将任务分配给特定模型,接下来就是执行任务,即执行模型推理。为了加速和计算稳定性,HuggingGPT 在混合推理端点上运行这些模型。将任务参数作为输入,模型计算推理结果,然后将信息反馈给大型语言模型。
响应生成
所有任务执行完成后,HuggingGPT 进入响应生成阶段。在这一阶段,HuggingGPT 将前三个阶段(任务规划、模型选择和任务执行)的所有信息整合成一个简洁的摘要,包括计划任务列表、模型选择和推理结果。其中最重要的是推理结果,它是 HuggingGPT 做出最终决策的基础。这些推理结果以结构化格式出现,例如对象检测模型中具有检测概率的 bounding boxes、问答模型中的答案分布等。
实验
该研究使用 gpt-3.5-turbo、text-davinci-003 这两种 GPT 模型的变体当做大型语言模型,这些模型可以通过 OpenAI API 公开访问。表 5 提供了任务规划、模型选择和响应生成阶段详细的提示设计。
HuggingGPT 对话演示示例:在演示中,用户输入一个可能包含多任务或多模态资源的请求。然后 HuggingGPT 依靠 LLM 组织多个专家模型的合作,生成反馈给用户。
图 3 显示了在任务之间存在资源依赖关系时 HuggingGPT 的工作流程。在这种情况下,HuggingGPT 可以根据用户的抽象请求解析出具体的任务,包括姿态检测、图像描述等。此外,HuggingGPT 成功识别出任务 3 与任务 1 和 2 之间的依赖关系,并在依赖任务完成后将任务 1 和 2 的推理结果注入到任务 3 的输入参数中。
图 4 展示了 HuggingGPT 在音频和视频模态上的对话能力。
图 5 显示了 HuggingGPT 集成多个用户输入资源以执行简单推理。
该研究还在多模态任务上测试了 HuggingGPT,如下图所示。在大型语言模型和专家模型的配合下,HuggingGPT 可以解决语言、图像、音频、视频等多种模态,包含了检测、生成、分类和问答等多种形式的任务。
除了上述简单任务,HuggingGPT 还能完成更为复杂的任务。图 8 演示了 HuggingGPT 在多轮对话场景中处理复杂任务的能力。
图 9 显示,对于一个简单的尽可能详细地描述图像的请求,HuggingGPT 可以将其扩展为五个相关任务,即图像字幕、图像分类、物体检测、分割和视觉问答。HuggingGPT 为每个任务分配专家模型,这些模型从 LLM 的不同方面提供与图像相关的信息。最后,LLM 将这些信息进行整合,并做出全面而详细的描述。
这项研究的发布,也让网友感叹,AGI 似乎即将冲出开源社区。
还有人将其比喻为公司经理,评论道「HuggingGPT 有点像现实世界中的场景,公司有一群超强的工程师,在各个专业能力超群,现在有一个经理把他们管理起来,当有人有需求,那么这个经理就会分析需求,然后分给相应的工程师去做,最后合并在一起再返回给用户。」
还有人盛赞 HuggingGPT 是一个具有革命性的系统,其利用语言的力量来连接和管理来自不同领域和模态的现有 AI 模型,为实现 AGI 铺平了道路。