用ChatGPT「指挥」数百个模型,HuggingGPT让专业模型干专业事
机器之心 2023-04-03 13:16 发表于北京
机器之心报道
机器之心编辑部
ChatGPT 这次成为数百个模型的管理者。
几个月来,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 组织多个专家模型的合作,生成反馈给用户。