AI 代理得越来越重要,能够实现自主决策和解决问题。为了有效运作,这些代理需要一个确定最佳行动方案的规划过程,然后执行计划的行动。
在本文中,我们提出了一种高效的设备端计划-行动框架,将计划和行动执行分为两个组件:一个优化用于边缘设备的计划代理,或称为 Octo-planner,以及一个使用 Octopus 模型执行函数的行动代理。Octo-planner 首先通过将任务分解为一系列子步骤来响应用户查询,然后由 Octopus 行动代理执行这些子步骤。为了优化资源受限设备上的性能,我们采用模型微调而不是上下文学习,减少计算成本和能耗,同时提高响应时间。
我们的方法包括使用 GPT-4 生成基于可用函数的多样化规划查询和响应,并进行后续验证以确保数据质量。我们在精心整理的数据集上微调 Phi-3 Mini 模型,在域内测试环境中实现了 97% 的成功率。
为了解决多域规划挑战,我们开发了一种多 LoRA 训练方法,将在不同函数子集上训练的 LoRA 权重合并。此方法在保持资源受限设备上的计算效率的同时,灵活处理复杂的多域查询。
人工智能(AI)代理通过实现自主决策和提高操作效率显著改变了各个行业。这些代理依赖于一个关键的规划过程,该过程包括确定最佳行动方案,执行计划的行动,以及总结结果。大型语言模型(LLM)如 Gemini-Pro 和 GPT-4 在这一领域显示出潜力。
虽然这些模型在执行复杂的规划任务时面临挑战,难以达到与人类表现相当的水平,但它们在处理简单任务方面仍然有效,从而促进实际应用。一个这样的应用是来自 MultiOn、Simular AI 和 Adept AI 等公司的 AI 助手工具,它们利用 LLM 的能力在各个领域提供智能助手。
此外,消费者导向的 AI 硬件产品,如 Rabbit R1、Humane AI Pin 和 Limitless Pendant,将 LLM 集成到用户友好的设备中,使智能助手更易于访问,并推动显著的吸引力。AI 代理的成功取决于基础 LLM 的性能。使用预训练模型而未在任务示范上进行微调的代理,其成功率相对较低,从桌面应用的 12% 到移动应用的 46% 不等,而利用微调模型的代理在类似于其训练数据的任务上可实现高达 80% 的成功率。
然而,使用 LLM 的 AI 代理由于高计算需求和基础设施费用而成本高昂,限制了广泛采用。缺乏设备端 AI 代理限制了需要实时处理、离线函数或增强隐私的应用。设备端 AI 代理提供了包括降低延迟、离线操作、降低成本和改善数据安全性等优势。虽然如 Octopus V2 的行动模型在函数调用上实现了 95% 以上的准确率,但仍缺乏一个设备端规划模型。通用代理框架使用单模型上下文学习,需要在每个提示中包含冗长的函数描述和规划说明。这种方法对于上下文长度有限的设备端模型而言不切实际,导致高延迟和边缘设备上的电池消耗。
在本文中,我们介绍了 Octo-planner,一个设备端规划代理,解决了效率、适应性和资源约束的关键挑战。我们的计划 - 行动框架将计划和行动执行分为两个组件:一个优化用于边缘设备的计划代理,或称为 Octo-planner,以及一个使用 Octopus 模型执行函数的行动代理。
通过优先考虑微调而不是少样本提示,我们减少了计算成本,并最小化了键值(KV)缓存需求。我们的方法使用 GPT-4 生成和验证规划数据,然后用于微调 Phi-3 Mini 以进行设备端部署。在域内测试中表明,这种微调提高了规划成功率至 97%。为了解决多域规划挑战,我们开发了一种多 LoRA 训练方法,将在不同函数子集上训练的 LoRA 权重合并。这种方法在保持资源受限设备上的计算效率的同时,灵活处理复杂的多域查询。
通过专注于简单任务的预定义函数和利用微调,我们旨在使 AI 代理在实际应用中更加实用、可访问和经济高效。
这项工作旨在为使 AI 更加可访问和实用的持续努力做出贡献。通过弥合 AI 代理潜力与边缘计算限制之间的差距,我们希望促进智能设备端助手在各个领域的采用。通过开源我们的方法,我们希望激发设备端 AI 的进一步创新,扩展先进规划能力的应用范围。
计划代理:语言模型已成为计划代理系统中的关键。OpenAI 的助手 API 等专有模型在基于用户查询和可用函数生成策略方面表现出色。最近的进展进一步扩展了语言模型在计划中的能力。ReAct 框架将计划和行动整合在有限的动作空间中,而阿里巴巴集团的研究强调了单独的计划和行动模型在复杂任务中的有效性。在机器人技术中,语言模型也越来越多地应用于任务级别的计划。值得注意的例子包括 SayCan,它使用 LLM 将高层任务分解为具体的子任务,以及视频语言计划(VLP),通过文本到视频动态模型增强了长时间计划。语言模型在计划系统中的广泛应用,从一般策略到特定的机器人任务,突显了其在各种决策过程中日益重要和适应性的地位。
微调替代长上下文:微调语言模型以内部化特定的提示或上下文信息可以减少输入长度并提高效率。这种方法包括在精心整理的特定任务数据集上训练模型。对于上下文窗口有限的模型,这种技术尤其有价值,因为它可以在不牺牲响应质量的情况下提高查询处理效率。微调的成功在很大程度上取决于使用多样化、高质量的数据集,以确保模型可以在各种提示措辞中进行概括。如果实施得当,微调可以简化特定应用的交互,解决实际部署中的上下文长度限制和计算挑战。
LoRA 和 Multi-LoRA: 低秩适应(LoRA)可以高效地将预训练语言模型适应特定任务。与微调不同,微调更新所有参数,而 LoRA 则冻结预训练权重并在每一层添加可训练的低秩矩阵,显著减少了可训练参数和计算需求。Multi-LoRA 扩展了这一概念,使多个特定任务的适配器可以训练、组合或在推理时切换,允许单一基础模型高效处理各种任务。在这些方法的基础上,研究人员开发了几种相关变体,以解决模型适应的不同方面:LoRA + 优化学习率,VeRA 使用随机投影,AdaLoRA 实现了自适应秩,DoRA 分解权重,Delta-LoRA 更新预训练权重。这些变体旨在在特定场景下进一步提高效率或性能。
本节介绍我们用于设备端计划 - 行动代理的框架。我们首先描述计划和行动代理的集成,以实现高效的问题解决。然后详细说明我们用于规划代理的数据集设计和训练过程,包括对广泛函数的支持以及附加函数集的即插即用能力。最后,我们概述了用于评估代理性能的基准测试。
3.1 计划和行动代理框架
我们的计划 - 行动方法通过将计划和行动执行过程分为两个组件来区别于通用代理框架。这种分离提高了模块化,使每个组件的专门优化成为可能。该框架的操作如下:
计划阶段:给定用户查询 q,我们的计划模型 πplan 将任务分解为一系列子步骤。形式上:
{τ1, τ2, ..., τn} - πplan (q;F )
其中 F 是可用函数描述的集合,τi 是第 i 个执行步骤。πplan 在指令微调期间内部化 F。
行动阶段:对于执行序列中的每一步,我们采用行动模型 πaction。在步骤 i,给定当前状态的观察 Oi,行动模型执行:
Oi+1 = πaction (τi, Oi),(2)
其中 Oi+1 和 τi+1 传递给下一步以继续执行。这个迭代过程确保任务子步骤的连贯进展。
对于行动模型,我们使用专为设备端函数调用设计的 Octopus 模型。图 2 展示了我们计划 - 行动框架与单模型 LLM 代理的区别。
图 2:单 LLM 代理和计划 - 行动代理框架的比较。(左)单 LLM 代理:统一模型执行任务规划和行动执行。(右)计划 - 行动代理:专门的计划模型将任务分解为子任务,而单独的行动模型依次执行每个子任务。
我们的框架模块化设计提供了几个优势:
3.2 计划数据集
我们的框架使用 Octopus 模型作为行动模型,只需训练计划代理。我们使用以下数据集格式微调计划代理:
用于聊天模型预训练的特殊标记如 <|user|> 和 <|assistant|> 是可选的。我们设置 n 为 1-5,根据我们的发现,大多数移动应用上的任务由少于 5 步组成。数据集生成和整理过程包括:
1. 数据集收集:给定可用函数 F,我们使用大型语言模型(GPT-4)生成由这些函数回答的多样化查询。我们增加模型的温度设置以确保查询多样性。然后按指定的数据集格式生成响应。重要的是,在生成过程中使用函数描述,但在最终数据集中不包括它们。相反,计划模型在训练期间内部化此函数信息。
2. 数据验证:我们使用相同的语言模型作为验证工具来评估查询 - 响应对的正确性。尽管初始生成过程中存在一些错误,但我们发现模型有效地将生成的内容分类为有效或无效,从而使我们能够过滤出错误的输出并保持数据集质量。
下面显示了不同子步骤数量的示例数据点:
有关数据集收集的可视化,请参见图 3。示例函数描述在附录 7.1 中。
3.3 基准设计
我们的评估依赖于精心构建的测试数据集。该数据集旨在代表现实世界规划的复杂性,采用多阶段方法,结合自动生成、专家验证和实证测试。
过程始于使用 GPT-4 自动生成的包含 1000 个数据点的初始数据集。这些数据点然后经历严格的质量保证过程,以确保其完整性和相关性。质量评估标准如下:
为了确保评估的可靠性,我们加入了一个额外的人工验证阶段。此阶段涉及选择一个子集示例进行端到端模型执行,从而验证结果的准确性,并对模型性能进行全面评估。
为了评估我们提出的计划模型,我们使用 GPT-4 作为 Oracle 来确定生成计划的正确性。这个选择基于经验观察,表明 GPT-4 在我们的特定用例中表现出高效。
我们的实验设计评估了 Octo-planner 在设备端 AI 代理规划中的表现。我们的目标是确定在资源受限设备上部署高效、准确的规划模型的最佳配置,同时保持对新领域和函数的适应性。我们的实验主要集中在四个关键领域:
我们在精心整理的数据集上进行监督微调,使用 Phi-3 Mini 和其他一些替代品作为基础模型。训练包括全微调和 LoRA 技术。对于所有实验,我们将数据集大小设置为可用函数数量的 800 倍,并在 NVIDIA A100 GPU 上进行微调。我们在两种技术上使用优化的超参数:学习率为 5×10-6,批量大小为 4,预热比例为 0.2,训练 2 个周期。对于 LoRA,我们将 target_modules 设置为所有线性。
5.1 全微调与 LoRA
表 1 展示了我们的计划模型在全微调和 LoRA 方法上的详细比较。我们的实验显示了这些方法在性能上的显著差异。全微调在 98.1% 的准确率上实现了最高性能,表现出优越的性能。相比之下,LoRA 的性能取决于秩大小。在秩 64 和 alpha 256 下,LoRA 达到 85.1% 的准确率,而减少到秩 16 和 alpha 32 时,准确率降至 72.9%。这些结果突显了使用 LoRA 时模型性能与计算效率之间的权衡。尽管全微调提供了更好的准确率,LoRA 在资源效率方面提供了更具吸引力的替代方案,性能取决于秩配置。
表 1:全微调与 LoRA 基准
5.2 多 LoRA 训练和合并
尽管基于 LoRA 的训练在特定函数集上有效,现实世界的应用通常需要处理新的或扩展的函数集。为了解决这个挑战,我们提出将每个在不同函数子集上训练的 LoRA 权重合并到同一个基础模型中的方法。这种方法创建了一个组合模型,结合了各种函数集的知识,为资源受限环境中的复杂多域查询提供了可扩展的解决方案。
为了评估此方法,我们构建了一个基准数据集,通过随机选择每个 LoRA 领域的函数并将它们组合成工作流。查询和计划由 GPT-4 生成。例如,在测试两个合并的 LoRA 时,查询可能涉及 Android 函数、电子商务函数或两者,概率相等。
以下代码块显示了我们的基准数据集中的示例查询及多 LoRA 合并模型的对应推理结果:
表 2 展示了我们多 LoRA 合并技术的性能结果。每个独立的 LoRA 都使用一致的超参数进行训练:秩 64,lora_alpha 256,target_modules 设置为 “all-linear”。单域 Android 函数集 LoRA 达到 85.1% 的准确率。当合并两个域(Android 和电子商务)的 LoRA 时,准确率略降至 82.2%。进一步合并的准确率下降如下:三个域(增加视频流)的准确率为 78.9%,四个域(增加旅行)的准确率为 69.7%。这些结果揭示了随着我们整合更多函数集,准确率逐渐下降的趋势,尤其是在添加第三个域后下降更明显。
表 2:多 LoRA 基准
5.3 使用不同基础模型的全微调
表 3 展示了在全微调后使用不同基础模型的基准准确率。谷歌 Gemma 2b 实现了 85.6% 的准确率,而更大的 Gemma 7b 以 99.7% 的准确率表现出色。微软 Phi-3 Mini 也表现强劲,达到 98.1% 的准确率。这些结果表明我们的框架适应各种设备端 LLM,较大的模型通常实现更高的准确率。
5.4 使用不同数据集规模的全微调
我们的默认训练数据集包含 1000 个数据点,均匀分布在 1-5 步序列中(每个 200 个),以代表不同任务的复杂性。我们研究了数据集规模对模型性能的影响,以优化函数集集成效率并解决合成数据生成成本。表 4 展示了不同训练数据集规模的基准准确率:
结果显示数据集规模与准确率之间存在明显的相关性。完整的 1000 点数据集达到 98.1% 的准确率,而减少到 500 个数据点的准确率下降至 92.5%。进一步减少到 250 和 100 个数据点,准确率分别为 85.3% 和 78.1%。这些发现表明,为了达到最佳性能,建议使用超过 1000 个数据点的训练数据集。
本文介绍了 Octo-planner,一个设计用于与 Octopus V2 等行动代理协作的设备端规划代理。
通过分离计划和行动执行,我们提高了专业化和适应性。我们的方法微调了 Phi-3 Mini(一种 38 亿参数的 LLM),使其能够在边缘设备上本地运行,在域内测试中达到 97% 的成功率。我们减少了计算需求,提高了延迟和电池寿命,并实现了多 LoRA 技术,用于在不进行完全再训练的情况下扩展模型能力。Octo-planner 为解决 AI 部署问题做出了贡献,包括数据隐私、延迟和离线函数。它代表了向实用、复杂的个人设备 AI 代理的进步。
通过开源我们的模型权重,我们旨在推动设备端 AI 的创新,促进高效、尊重隐私的应用程序的开发,增强日常生活,而不影响性能或安全性。
尽管我们的当前模型在特定的手机使用案例中表现有效,但在更广泛的适用性方面存在局限性。
与 ReAct 等框架不同,它们基于实时反馈在计划步骤和执行行动之间交替,我们的模型在前进行所有计划。这种事先计划的方法在处理简单任务方面效率较高,但在条件可能在执行过程中变化的复杂或不可预测的场景中可能不那么适应。
未来的工作将重点探索基于实时观察的迭代计划方法,改进对动态环境的适应性。我们还计划研究将我们的计划模型与多样化的行动模型集成,将其能力扩展到移动应用之外的领域,如物联网、机器人技术和智能家居系统。这些进展将解决当前的局限性,扩展我们设备端规划模型的多函数性,弥合高效、本地化 AI 处理与复杂的现实世界需求之间的差距。
文章来自于微信公众号“机器之心”,作者 “机器之心”
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner