> 文章列表 > 【HuggingGPT】Solving AI Tasks with ChatGPT and its Friends in Hugging Face

【HuggingGPT】Solving AI Tasks with ChatGPT and its Friends in Hugging Face

【HuggingGPT】Solving AI Tasks with ChatGPT and its Friends in Hugging Face

文章目录

    • 所解决的问题?
    • 背景
    • 所采用的方法?
    • 取得的效果?
    • 问题
    • 所出版信息?作者信息?
    • 参考链接

所解决的问题?

当前的语言模型Large Language Models (LLMs)缺乏处理复杂信息的能力,像视觉,语音这类信息就不能够很好的处理,这是一个语言模型能力缺陷上的问题。再一个是现实世界的很多问题可以拆分成子任务,通常需要多个模型之间相互协调配合。语言模型本身其实更擅长做Zero-Shot,或者是Few-Shot的任务,对于具体的任务并不如Fine-Turn的模型好。

作者将大语言模型作为中间件,去链接AI模型和语言模型,对AI模型进行规划、调度和合作。期望是具备二者的通用能力。

背景

目前存在的一些工作是训练多模态的大模型,或者给大模型加上一些工具插件来解决问题。作者提出的这个方法更加通用。

所采用的方法?

作者在这篇文章中,将large language models (LLMs)作为一个AI模型管理器,去管理各种各样的AI模型,从而解决跨领域,跨模态的复杂任务。

具体来说,就是来了一个用户的请求request,然后基于一些提前写好的prompt,HuggingGPT选择要采用哪个模型来去解决子任务,然后基于执行的结果做出响应。

整个HuggingGPT的处理过程可以分为4步:

  1. 任务规划(Task Planning): 理解用户的请求,并理解其意图,将其分为为可以被执行的子任务。
  2. 模型选择(Model Selection):基于AI模型描述和规划出来的子任务选择领域模型,或者称为专家模型(expert model)。
  3. 任务执行(Task Execution):调用这些AI模型,并执行拿到返回结果给ChatGPT。
  4. 回复生成(Response Generation):最终再次调用ChatGPT整合所有模型的预测结果,生成最终回复给用户。

上述4部分的具体细节为:

  1. 任务规划:一些基础的指令:任务ID:用于任务规划的ID区分;任务类型Task Type:像是图像、音频、文本等等;任务依赖:定义一些执行此任务之前的依赖,只有依赖任务都被执行,此任务才会被启动。任务参数:这些参数来自用户的request或者是依赖任务生成的。在此基础上还会给一些prompt demonstration。
  2. 模型选择:在做模型选择之前首先需要模型描述,这些模型描述都是来自Hugging Face本身的。由于模型太多,所有的模型描述全部输入的话,会超过prompt的长度限制,作者这里将其进行了任务分类,再依据下载次数排名,选择top-k个模型描述给到prompt中。
  3. 任务执行:在任务执行中最主要考虑的就是资源的调度,独立的任务可以并行执行。作者这里采用特定的符号<resource>去管理资源。

具体prompt的设计:

文中作者还给了一些demo,可以参考看一下。

取得的效果?

截至论文发表,HuggingGPT可以整合几百个(400+)模型,覆盖了24个任务,像分类、目标检测、分割、问题等等。

问题

这样的方法带来的问题就是,如果管理的AI模型比较多的话,需要好好设计prompt,尤其是AI模型的描述,就是这个AI模型到底能做什么样的事情。还存在一些限制,比如调用的时间开销、资源开销、max_token开销等等。

所出版信息?作者信息?

2023年,浙江大学和微软研究亚洲一起合作发表的一篇文章。

参考链接

  • 论文题目:HuggingGPT: Solving AI Tasks with ChatGPT andits Friends in Hugging Face