语言模型在广泛的应用中已被证明是有效的,但最复杂的模型通常是专有的。例如,OpenAI的GPT-4和Anothropic的各种模型不仅昂贵,而且消耗大量能源。与此相比,开源社区已经生产了能够竞争的模型,如Llama3。此外,为特定领域如法律、医疗或金融任务定制的较小的语言模型,已在性能上超越了它们的专有对手。本文介绍了一种新的方法,采用functional token整合了多个开源模型,每个模型都针对特定任务进行了优化。我们新开发的Octopus v4模型利用functional token智能地将用户查询引导至最合适的垂直模型,并重新格式化查询以实现最佳性能。Octopus v4是Octopus v1、v2和v3模型的演化,擅长于选择和参数理解与重组。此外,我们还探索了使用图作为一种多功能数据结构,有效地协调多个开源模型,利用Octopus模型和functional token的能力。通过激活大约 100 亿参数的模型,我们在同级别模型中实现了 74.8 的 SOTA MMLU 分数。
Octopus-V4-3B 是一款先进的开源语言模型,拥有30亿参数,作为 Nexa AI 设想中的语言模型图的主节点。该模型专为 MMLU 基准测试话题定制,能够高效地将用户查询转换成专业模型可以有效处理的格式。它擅长将这些查询正确引导至相应的专业模型,确保精确且有效的查询处理。
📱 紧凑尺寸:Octopus-V4-3B 体积紧凑,使其能在智能设备上高效、迅速地运行。
🐙 准确性:Octopus-V4-3B 利用functional token设计准确地将用户查询映射到专业模型,提高了其精度。
💪 查询重格式化:Octopus-V4-3B 帮助将自然人类语言转换为更专业的格式,改善了查询描述,从而获得更准确的响应。
我们诚邀全球的开发者和技术爱好者参与此开源项目,一起创造一个强大的图语言模型,构建最经济最高效的模型解决方案,并联合所有垂类开源模型一起达到闭源模型的效果。
试用Octopus v4模型:https://huggingface.co/NexaAIDev/Octopus-v4
开源的GitHub: https://github.com/NexaAI/octopus-v4
论文标题:Octopus v4: Graph of language models
论文链接:https://arxiv.org/pdf/2404.19296
大型语言模型(LLMs)的迅速发展彻底革新了自然语言处理领域,使人工智能系统能够以惊人的准确度理解和生成类似人类的文本。像GPT-4和Anothropic这样的模型,经过大量数据集训练,能够捕捉到语言、语境和意义的细微差别,因此在不同行业中具有广泛的潜在应用。这些模型在多种子任务中表现出色,例如高精度的语言翻译、情感分析以评估客户意见和监控品牌声誉、利用广泛知识库进行问答以及总结长篇文档和文章。在医疗保健领域,LLMs能够处理病患数据和医学文献,以支持疾病诊断、治疗规划和药物发现,甚至生成个性化的病人报告。金融行业利用LLMs进行风险评估、欺诈检测和自动化财务报告生成,法律领域则受益于合同分析、法律研究和文件起草的简化。LLMs在教育领域也显示出重大潜力,提供个性化学习体验、生成内容并提供即时反馈。随着LLMs的持续进步,它们在各个领域的影响预计将显著增长,自动化任务、增强决策制定并推动创新。
自Meta在2023年推出Llama3模型及其后续产品Llama2以来,开源大型语言模型(LLMs)的景观显著增长。这一转变催生了众多创新的LLMs,每个模型都以前所未有的速度发布。作为这一动态领域的关键参与者,这些模型已显著影响自然语言处理。我们突出介绍了最具影响力的开源LLMs,包括Mistral的稀疏专家混合模型Mixtral-8x7B、阿里巴巴云的多语言Qwen1.5系列、Abacus AI的Smaug以及01.AI的Yi模型,专注于数据质量。其他值得注意的模型包括Databricks的精细MoE模型DBRX、Upstage AI的深度扩展SOLAR-10.7B、艾伦人工智能研究所的对齐焦点TULU 2以及合作的OLMo系列、微软的由Evol-Instruct驱动的WizardLM、伯克利的Starling-7B、谷歌DeepMind的以Gemini为灵感的Gemma模型、xAI的Grok以及Deci AI的高效率DeciLM-7B。在2024年4月,我们见证了迄今为止最强大的开源模型,Meta的Llama3,其70B参数版本在Groq上实现了约300代币/秒的印象深刻推理速度。此后不久,更多功能强大的开源设备模型发布,包括微软的3.8亿参数的Phi-3-mini和苹果的OpenELM系列模型,参数范围从10亿到30亿不等。这些多样化的模型适应各种用例,使用户可以根据用例选择最佳模型。
图数据结构已经成为表示各个领域复杂关系和依赖性的强大工具。在计算机科学中,一个图由一组节点(或顶点)组成,通过边连接,这些边可以是有向的或无向的。这种灵活的结构允许表示线性或表格格式难以捕捉的复杂连接和层次结构。图提供了比其他数据结构更多的优势,包括高效的遍历、模式发现以及能够模拟现实世界的网络。许多著名公司已经利用基于图的方法增强了他们的产品和服务。例如,Pinterest使用图结构表示用户、看板和别针之间的关系,实现个性化内容推荐和改善用户互动。同样,像Facebook和LinkedIn这样的社交网络依赖图表表示来模拟用户连接,促进如好友建议和专业网络等功能。在整合开源语言模型的上下文中,图结构可以用来表示不同模型之间的关系、它们的能力和最佳用例。通过将每个语言模型视为图中的一个节点,并根据它们的兼容性、互补特性或任务特定性能建立边,我们可以创建一个用于无缝模型整合、智能查询路由和优化性能的强大框架。
在设备上的AI模型的出现彻底改变了自然语言处理的格局,与传统的基于云的方法相比,提供了许多优势。这些模型,例如Google的Gemma2B和Llama7B模型,旨在直接在用户设备上运行,通过在本地处理查询来确保数据隐私,并消除了与远程服务器的网络通信的需要。这种本地处理不仅增强了安全性,还减少了延迟,使实时交互和改善用户体验成为可能。例如Octopus v2、v3等在设备上的AI代理利用这些能力提供智能助理。然而,在设备上的AI的真正潜力在于它与基于云的模型的无缝集成,这种“云-在设备上”协作观念的崛起。通过利用在设备上和基于云的模型的力量,AI系统可以实现前所未有的性能、可扩展性和灵活性水平。这种协作允许高效分配计算资源,由在设备上的模型处理较轻和私有任务,而由基于云的模型处理更复杂或资源密集的操作。此外,物联网(IoT)在启用此类协作中发挥了关键作用,连接了广泛的设备网络并促进了在设备上和基于云的模型之间的数据和洞察交换。在设备上的AI、基于云的模型和IoT的整合代表了AI发展的范式转变。这种方法结合了每个组成部分的优势,创建了一个能够适应用户和应用程序多样化需求的协同生态系统。随着我们继续探索“云-在设备上”协作的潜力,我们可以期待在AI领域看到重大进展。
在本文中,我们介绍了一种使用语言模型的新框架,通过构建一个以不同垂直语言模型为节点的图。我们使用Octopus v2模型的特性,并将其用作协调器。从单一模型推理到多节点推理的转变在图(1)中展示。
图数据格式和图算法已成为计算机科学中的基本研究领域,应用范围从社会网络分析到推荐系统和生物信息学。经典图算法,如广度优先搜索(BFS)和深度优先搜索(DFS),已被广泛研究并优化以适应各种图形表示。Dijkstra的最短路径算法及其变体在解决路由问题和在加权图中找到最优路径方面至关重要。PageRank算法,由Google用于网页排名,已革命化信息检索领域并激发了无数基于图的排名技术。最近在图神经网络(GNNs)方面的进展推动了基于图的学习的边界,使得处理图结构数据的任务,如节点分类、链接预测和图生成成为可能。这一领域的前沿研究包括开发更具表达力和效率的GNN架构,如图注意网络(GATs)和图卷积网络(GCNs),它们在各种图相关任务上都取得了最先进的性能。
增强AI代理的functional token,基于Octopus系列(v1到v3)的研究,通过利用functional token,扩展了AI代理的能力,并将所有开源模型统一起来。这些早期版本有效地利用了这些令牌来实现高级功能。我们现在研究它们在整合不同开源语言模型中的扩展用途。我们的研究表明,functional token在分类任务中不仅仅是提高精确度,例如选择适当的功能或模型来处理查询。重要的是,它们增强了Octopus模型解释和重塑用户查询为指定功能的最优格式的能力,从而提高性能。functional token与Octopus模型在分类和查询重构方面的能力的协同作用已进一步应用于图结构。在这里,一个关键方面涉及到在节点之间转移信息并选择适当的邻域进行此转移。我们增强的Octopus模型有效地选择最佳邻居,重新结构当前节点的信息,并将优化的信息传输给后续节点。
多代理LLMs标志着AI的关键进化,通过整合多个专门的代理来促进协作解决问题。与传统的单代理LLMs不同,这些多代理系统从专门领域的代理中汲取集体智能。这种协作方法为复杂问题提供了更全面的解决方案。多代理LLMs在提供领域特定的专业知识、增强解决问题的能力以及提供鲁棒性、可靠性和适应性方面表现出色。这些系统承诺将在医疗保健、金融、教育和客户服务等领域产生变革性的影响,通过提供定制的专业知识、个性化互动和高效的决策过程。然而,部署多代理LLMs涉及一些挑战,如整合困难、数据共享问题和保持代理之间顺畅协调。正在进行的多代理LLMs研究正在探索跨领域专业知识和实时协作的可能性,同时考虑伦理方面。此外,我们的论文也受到多代理系统的启发,采用图架构。通过自连接和通过图遍历顺序处理动作,可以实现如并行函数调用等高级功能,提高其操作效率和可扩展性。
LLMs的规模化法则已经彻底改变了我们对模型大小、数据集大小、计算资源和性能之间关系的理解。这些法则表明,训练在庞大数据集上的较大模型通常表现优于较小的模型。然而,随着LLMs的继续扩展,它们面临与服务器容量和能耗相关的重大挑战,这些挑战限制了它们进一步的扩展。我们提出的架构通过利用分布式计算和节点扩展技术,解决了这些可扩展性问题,实现了几乎无限的节点可扩展性。通过增加更多节点,我们可以创建更强大的语言模型系统,绕过服务器数量和电源供应的限制。
本节概述了如何将语言模型作为图中的节点加以整合,并提供了针对实际应用定制的系统架构的详细信息。此外,还讨论了使用合成数据集对Octopus模型进行训练的策略。我们也会强调这种语言模型图在生产环境中的系统设计。
3.1 从Octopus v2提取的用于分类的语言模型
在Octopus v2的论文中,我们介绍了一种名为functional token的分类方法。Octopus v2模型有效地处理了这一任务:
𝑃(𝑓,params∣𝑞)
其中 𝑓 表示从集合 𝐹 中选择,params 代表从查询 𝑞 中重构的信息。本文演示了这种方法在函数调用任务中的应用。此外,functional token还可以适应其他需要从指定池中选择最优选项并重新格式化查询以向后续节点传递信息的类似场景。在涉及预定义图的典型用例中,每个节点,代表一个语言模型,都有固定数量的邻居。为了进行语言模型推断,选择最佳的相邻节点,并将信息从当前节点传递到下一个节点。因此,Octopus v2模型非常适合处理这一问题,如Octopus v2论文中所记录的,显示了快速执行和高精度。
3.2 图中的语言模型作为节点
考虑一个定义为:
𝐺=(𝑁,𝐸)
其中 𝑁 代表图中的各种节点,𝐸 代表连接这些节点的边。节点分为两种类型:主节点 𝑁𝑚,它们通过将查询定向到合适的工作节点 𝑁𝑤 并传递执行任务所需的信息来协调查询;工作节点接收来自主节点的信息并执行所需的任务,使用Octopus模型来促进进一步的协调。节点信息传输过程如图所示。为了处理用户查询 𝑞 并生成响应 𝑦,我们将概率建模为:
𝑃(𝑦∣𝑞)=𝑃(𝑦∣𝑞;𝐺)
对于只涉及一个工作节点的单步任务,该过程可以定义为:
𝑃(𝑦∣𝑞;𝐺)=𝑃(𝑁𝑤,𝑞ℎ∣𝑞;𝑁𝑚)×𝑃(𝑦∣𝑞ℎ;𝑁𝑤)
这里,𝑃(𝑁𝑤,𝑞ℎ∣𝑞;𝑁𝑚) 使用Octopus v2模型为 𝑁𝑚 选择最佳的相邻工作节点并重新格式化查询为 𝑞ℎ,这是重构的查询。这个表达式是一个典型的问题,可以由Octopus模型解决,其结构与方程相同。概率 𝑃(𝑦∣𝑞ℎ;𝑁𝑤) 由位于工作节点的语言模型计算。
对于多步任务,通常在多代理工作流中,该过程涉及多个节点之间的几次顺序交互,如下:
𝑃(𝑦∣𝑞;𝐺)=∏𝑖=0𝑘−1𝑃(𝑁𝑤𝑖,𝑞ℎ𝑖∣𝑞;𝑁𝑚𝑖)×𝑃(𝑦∣𝑞ℎ𝑖;𝑁𝑤𝑖)
这个公式将单步任务扩展为多步骤,每一步可能由不同的工作节点处理,由各自的主节点协调。每一步处理查询的一部分并贡献到最终结果,其中 𝑘 表示多代理过程中的步骤或交互次数。这种方法示范了在基于图的框架中多个专业代理的协调和执行模式,利用多个专门代理的能力。
3.3 使用图进行多步骤操作的任务规划
在多步骤任务规划中,包含多个步骤是必要的。传统上,所有可用功能都列在上下文中并提交给语言模型,随后生成基于用户查询的计划。然而,当语言模型,尤其是参数少于10B的模型,尝试处理长功能描述时,这种方法存在局限性。这些模型难以有效把握大量的描述。此外,此方法没有考虑不同功能描述之间的固有相关性。为了应对这些挑战,构建一个图映射各节点(语言模型/代理)之间的相关性提供了一种可行的解决方案。这种基于图的方法确保只考虑与特定节点相关的邻近节点,与总功能描述数量相比,显著减少了选择的复杂性。通过利用Octopus v2模型的功能,这种策略提高了效率,使得快速的查询重定向和重格式化成为可能。实际上,我们有两层抽象。首先,对于每个语言模型,我们可以应用functional token使其作为一个单一的AI代理进行单一功能调用。或者,单一节点/语言模型可以是像Llama3或Phi3这样的普通语言模型,能进行问答、编写等。另一层抽象是,我们还可以创建另一个Octopus v3模型来从不同节点中进行选择。这两层抽象在图(3)中展示。
3.4 functional token和数据集收集
类似于Octopus v2中的functional token架构,我们将每个模型概念化为一个独立的功能,使用functional token激活特定模型的使用。这种方法简化了语言模型的功能设计,只需要一个输入参数和一个输出结果。此外,对于特定模型,我们可以在功能的文档字符串中详细说明所需的提示模板。这使得Octopus v4模型能够重新构建原始查询以匹配预期的格式。例如,专门处理法律信息的功能可能被描述如下:
Python |
此外,当我们使用类似于Octopus v2论文中描述的方法构建数据集时。遵循Octopus v2论文中概述的方法,我们可以训练多个functional token以对应于各种自定义语言模型。如在Octopus v2论文中,数据集收集过程涉及使用合成数据来训练functional token。为了更好地适应多样化的查询,提高数据生成过程中的温度可能是有益的。这种调整有助于捕获用户查询中常见的变异性和潜在的格式不一致。
3.5 语言模型图的系统设计
本节详细说明了复杂图中每个节点代表一个语言模型的系统架构,利用多个Octopus模型进行协调。在我们准备生产部署时,整合一个负载均衡器以有效管理系统需求至关重要。下面,我们将系统划分为几个可管理的组件,强调核心方法:
- 工作节点部署:每个工作节点 𝑁𝑤 对应一个单独的语言模型。我们建议为这些节点采用无服务器架构,特别推荐使用Kubernetes进行基于内存使用和工作负载的强大自动缩放。
- 主节点部署:主节点应使用不超过10B参数的基础模型(我们的实验中使用3B模型),以便在边缘设备上部署。每个工作节点与一个Octopus模型接口,以增强协调。如Octopus v2所示,可以集成一个紧凑的Lora模型以扩展functional token的能力。我们建议使用单一基础模型并补充多个Loras,每个工作节点一个。推荐使用开源的LoraX库来管理这种配置的推理操作。
- 通讯:工作节点和主节点分布在不同设备上,不限于单一设备。因此,互联网连接对于节点之间的数据传输至关重要。虽然主节点可能位于智能设备上,工作节点则托管在云端或其他设备上,结果返回智能设备。为了支持数据缓存需求,包括聊天历史存储,我们推荐使用Redis,一个高性能的内存数据库,促进分布式缓存。
整体系统设计架构在图(4)中展示。
本节详细介绍了我们使用的框架进行的实验,目的是通过多节点协作提高语言模型的性能。我们展示了我们的框架如何使用 MMLU 基准测试评估来提升语言模型的效果。我们采用了17种不同的模型进行 MMLU 任务。接收用户查询后,Octopus v4模型将查询定向到相关的专业模型,然后适当地重新格式化它。以下实验采用了一个简单的图;更复杂的图将在我们的GitHub仓库中提供。并且最终的图需要整个社区的努力。
4.1 专业模型
多任务多语言理解(MMLU)包含57个独特的任务,进一步分为17个整合组,如作者所建议。例如,研究生级别和高中数学任务已被归入更广泛的数学类别。任务分布如下:
- STEM:物理、化学、生物、计算机科学、数学、工程;
- 人文学科:历史、哲学、法律;
- 社会科学:政治、文化、经济、地理、心理学;
- 其他:杂项、商业、健康。
专业模型是根据基准得分、人气和用户推荐从 Hugging Face 精选的。并非所有专业任务都有相应的模型;例如,人文学科和社会科学目前尚无专门的模型。尽管如此,Llama3模型,通过定制系统提示调整,用以模拟专业能力而无需直接微调。以下17个模型要么通过提示特别微调,要么通过提示自定义:
- 物理:Weyaxi/Einstein-v6.1-Llama3-8B,针对物理数据集进行微调;
- 生物:jondurbin/bagel-8b-v1.0,针对生物数据集进行微调;
- 计算机科学:Llama-3-Smaug-8B,针对各种计算机科学论坛定制;
- 数学:Open-Orca/Mistral-7B-OpenOrca,针对数学进行优化;
- 工程:phi-2-electrical-engineering,针对电气工程数据集进行微调;
- 法律:AdaptLLM/law-chat,针对法律数据集进行微调;
- 健康:AdaptLLM/medicine-chat,针对医疗数据进行优化;
- 心理学、历史、哲学、政治、文化、地理、商业、化学、经济:目前没有可用的专业模型。使用Llama3和CoT技术通过系统提示模拟专业模型。
4.2 MMLU 基准评估
本节介绍了对Octopus v4系统的基准评估,比较了其性能与其他著名模型使用MMLU基准的表现,以展示我们模型的有效性。在我们的推理系统中,我们使用两个紧凑的语言模型:3B参数的Octopus v4模型和一个不超过8B参数的另一个工作语言模型。比较展示在图(5)中。推理过程在图(2)中演示。
一个用户查询的例子如下:
查询:告诉我当 x 为 2 时 x^3 的导数结果是什么?
响应:<nexa_4>('确定函数 f(x) = x^3 在 x 等于 2 的点的导数,并在变化率和切线斜率的上下文中解释结果。')<nexa_end>
注意 <nexa_4> 是一个functional token,映射到数学 gpt。
在本节中,我们强调了如何培训专业模型的教程。同时,我们也概述了我们团队的未来计划。
5.1 如何培训垂直模型
为了有效地对大型语言模型进行微调以适应特定领域的专业知识,首先需要收集大量的高质量、领域相关的数据。这些数据应包括教科书、研究论文、文章和其他相关材料,充分覆盖模型预期的领域知识。确保数据多样性、组织良好并体现模型所需的领域知识是至关重要的。然后,使用这些预处理的领域特定数据对预训练的大型语言模型进行微调。这一过程调整了模型的参数,使其专注于您选择的领域,有效地嵌入必要的专业知识。可选地,考虑使用知识蒸馏技术,从更大模型的API中转移洞见到更小、更高效的模型。对于这一微调阶段,我们推荐使用 Hugging Face 提供的 SFT 训练器进行监督微调,随后进行直接优化。
5.2 未来工作
我们当前的 GitHub 项目专注于开发语言模型的图形框架,目前处于起始阶段。我们计划通过整合多种垂直特定模型并加入先进的 Octopus v4 模型来增强这一框架,以多代理能力为特征。未来版本将在此存储库中展示更强大的图形表示。GitHub仓库将由 Nexa AI 小心维护。与更大模型的缩放法则、数据集相比,我们的框架无限制,并且我们可以创建一个大型图。
此外,我们正在开发 Octopus 3.5,一个多模态模型,能够处理视觉、音频和视频数据。后续版本将将这个 AI 代理纳入我们的图形框架。Nexa AI 也旨在为多种垂直领域开发紧凑、专门化的模型。