端侧Agent系列 | 端侧AI Agent任务拆解大师如何助力AI手机?(详解版)

news2024/11/17 12:45:29
  • 引言

  • 简介

  • Octo-planner

  • 规划和执行Agent框架

  • 规划数据集

  • 基准设计

  • 实验设计

  • 结果

  • 全量微调与LoRA

  • 多LoRA训练与合并

  • 不同基础模型的全量微调

  • 不同数据集大小的全量微调

  • 总结

  • 实战

  • 英文

  • 中文示例1:

  • 中文示例2:

0. 引言

人生到处知何似,应似飞鸿踏雪泥。

在这里插入图片描述

今天这篇小作文主要介绍端侧Agent智能体中任务规划和拆解,从而实现复杂场景下多指令任务的执行。随着人工智能技术的快速发展,AI Agent(智能体)在各个领域的应用越来越广泛。然而,目前大多数AI Agent依赖于大型语言模型(LLM),这些模型通常需要通过联网的方式在云端消耗大量的计算资源,这限制了其在边缘设备上的应用。为了解决这一问题,研究人员提出了Octo-planner,这是一个专为边缘设备而设计的用于规划任务的AI Agent框架。

1. 简介

AI智能体由于其能够自主决策并执行任务并解决诸多问题,从而在各领域变得越发重要。为了有效运作AI Agent,NexaAI的研发人员提出了一种设备端 规划-执行框架 ,将规划和执行分为两个部分:Octo-planner和Octopus执行智能体。Octo-planner将任务分解为子步骤,然后由Octopus模型(指之前提出的Octopus v1、v2、v3、v4模型)执行。为优化资源受限设备上的运行性能,官方使用模型微调而非上下文学习,从而降低计算成本和能耗,提高响应速度。至于数据,研究人员使用GPT-4生成多样化的规划查询和响应,然后对这些数据进行验证以确保质量。然后使用这个精心策划的数据集对Phi-3 Mini模型进行微调, 最终在领域内测试取得97%的成功率。为应对多领域规划,官方还开发了多LoRA训练方法,合并不同函数子集上的LoRA权重,以灵活处理复杂查询。

模型下载:https://huggingface.co/NexaAIDev/octopus-planning

论文地址:https://arxiv.org/abs/2406.18082

2. Octo-planner

这一章节介绍端侧设备上的规划-执行智能体框架:Octo-planner。首先,介绍集成规划和执行的Agent,以高效解决问题。接着,详细介绍规划Agent的数据集设计和训练过程,包括对广泛功能函数的支持和附加函数集的即插即用能力。最后,概述了用于评估Agent性能的基准数据集。

规划和执行Agent框架

Octo-planner将规划和执行过程分成两个组件,这与一般的Agent框架不同。这种分离提高了模块化,并允许对每个组件进行专门优化。Octo-planner框架的运作如下:

在这里插入图片描述

对于执行模型,使用 Octopus 系列模型(包括 v1、v2、v3、v4),其专为端侧设备上的函数调用而设计。图 2 展示了Octo-planner规划-执行框架与单模型方法在大型语言模型(LLM)智能体中的区别。

Figure 2:单 LLM Agent和规划-执行Agent框架的比较。(左)单 LLM Agent:一个统一模型同时执行任务规划和执行。(右)规划-执行Agent:一个专门的规划模型将任务分解为子任务,而一个独立的执行模型顺序执行每个子任务。

Octo-planner框架的模块化设计有如下优点:

  • 专业化:规划和执行的分离,使得可以对每个模型进行专门优化,以提高复杂任务中的性能。

  • 可扩展性:规划和执行能力的独立扩展可有效适应不同复杂程度的任务。

  • 可解释性:不同阶段的明确分离,提高了决策过程的透明度。

  • 适应性:更容易将领域特定知识或约束集成到任一阶段,而无需对整个系统进行更改。

规划数据集

Octo-planner框架使用Octopus模型作为执行模型,只需训练规划器Agent。使用以下数据集格式对规划器Agent进行微调:

<|user|>{user’s query}<|end|>   
<|assistant|>{query1}<nexa_split>{query2}<nexa_split>...<nexa_split>{queryn}.<|end|>   

<|user|><|assistant|>这种特殊token仅用于聊天模型(即chat版模型)的预训练,其他情况则是非必需的。n的取值设置为1~5,这是因为研究人员发现,大多数移动应用任务由<=5个步骤组成。数据集生成和整理过程包括:

  1. 数据集收集:给定可用函数,使用大语言模型(这里指GPT-4)生成可由这些函数回答的多样化查询。这个过程增加模型的温度设置以确保查询的多样性。然后以指定的数据集格式生成响应。需要说明的是,虽然在生成过程中使用了函数描述,但它们不包含在最终数据集中。相反,规划器模型在训练过程中内化这些函数信息。

  2. 数据验证:使用相同的语言模型作为验证工具来评估查询-响应对的正确性。尽管初始生成过程中存在一些错误,但研究人员发现该模型能区分生成的内容是否有效,使得最终能够过滤掉不正确的输出并维持数据集质量。

不同子步骤数量的示例数据如下所示:

在这里插入图片描述

有关数据集收集的可视化,请参见Figure 3。示例函数描述在附录7.1中。

Figure 3:规划器模型训练数据的收集过程。首先,确定所需的步骤数,在当前情况下将N设置为1到5。接下来,为每个查询生成相应的查询和步骤。

基准设计

Octo-planner使用的评估依赖于精心构建的测试数据集。该数据集旨在代表真实世界规划的复杂性,因此采用多阶段方法,整合了自动生成、专家验证和实证测试。

该过程先使用GPT-4自动生成包含1,000个数据点的初始数据集。这些数据点随后经过严格的质量检查过程,以确保其完整性和相关性。质量评估标准如下:

  • 每个步骤必须对应一个现有函数;

  • 步骤的顺序必须正确。

为确保评估的可靠性,加入了额外的手动验证阶段。这个阶段涉及选择一部分示例进行端到端模型执行,从而验证结果的准确性。

对于Octo-planner规划模型的评估,具体是使用GPT-4作为判断生成计划正确性的标准。这个选择基于经验观察:GPT-4在特定用例中具有高度熟练度。

3. 实验设计

如何设计实验评估Octo-planner在设备端AI Agent 规划中的性能?为了在资源受限的设备上部署高效、准确的规划模型的最佳配置,同时保持对新领域和函数的适应性。设计的评估实验重点关注四个方面:

  1. 全量微调与LoRA之间的性能和效率权衡。

  2. 多LoRA在同时处理不同函数集时的准确性。

  3. 不同基础模型及其尺寸的性能比较。

  4. 数据集大小对准确性的影响,范围从100到1000个训练样本。

在自定义数据集(是否会公开发布子集?)上进行监督微调,使用Phi-3 Mini和其他几个模型作为基础模型。训练包括全量微调和LoRA技术。对于所有实验,将数据集大小设置为函数数量的800倍,并在NVIDIA A100 GPU上进行微调。在两种技术中使用的超参数:学习率为5 × 10^-6,批量大小为4,预热比为0.2,进行2个epoch。对于LoRA,将target_modules设置为所有线性模块。

4. 结果

全量微调与LoRA

表1详细比较了Octo-planner规划模型使用全量微调和LoRA方法的配置及其结果。实验显示这些方法的性能存在显著差异。全量微调实现了最高98.1%的准确率,表现出卓越的性能。相比之下,LoRA的性能取决于rank大小。当rank为64且alpha为256时,LoRA对应的准确率为85.1%,而减少到rank 16和alpha 32时准确率下降到72.9%。这些结果突显了使用LoRA时模型性能与计算效率之间的权衡。尽管全量微调提供了更好的准确性,LoRA则提供了一种更具资源效率的替代方案,其性能因rank配置而异。

多LoRA训练与合并

虽然基于LoRA的训练对特定函数集有效,但现实应用通常需要处理新的或扩展的函数集。为应对这一挑战,Octo-planner官方提出合并多个LoRA权重,每个权重在不同的功能子集上训练,使用相同的基础模型。此方法创建了一个复合模型,将来自各种函数集的知识结合在一起,为资源受限环境中的复杂多领域查询提供了一种可扩展的解决方案。

为了评估这一方法,构建基准数据集。构建方法:随机选择每个LoRA领域的函数,以相同概率将它们组合成工作流来;使用GPT-4生成的查询和计划。例如,在测试两个合并的LoRA时,查询可能涉及Android函数、电子商务领域的函数或两者兼有,概率相等。

下面的代码块显示了基准数据集中的示例查询以及来自多LoRA合并模型的相应推断结果:
在这里插入图片描述

表2展示了多LoRA合并技术的性能结果。每个单独的LoRA都使用一致的超参数进行训练:rank 64,lora_alpha 256,target_modules设置为"all-linear"。在单领域的Android函数集上,LoRA取得了85.1%的准确率。当合并来自两个领域(Android和电子商务)的LoRA时,准确率略微下降到82.2%。进一步合并则导致更低的准确率:三个领域(添加视频流)为78.9%,四个领域(添加旅行)为69.7%。这些结果揭示了随着整合更多函数集,准确率逐步下降的趋势,特别是在添加第三个领域后,下降幅度更大。

不同基础模型的全量微调

表3展示了不同基础模型在全量微调后在基准评测集上的准确率。Google Gemma 2b的准确率为85.6%,而更大的Gemma 7b表现十分优异,达到了99.7%。微软的Phi-3也表现强劲,达到了98.1%。这些结果表明,Octo-planner框架能够很好地适应各种设备端的大型语言模型(LLM),并且较大的模型通常能获得更高的准确率。

不同数据集大小的全量微调

默认训练数据集包含1000个数据点,均匀分布在1至5步的序列中(每种200个),以代表不同复杂程度的任务。官方还研究了数据集大小对模型性能的影响,以优化函数集的集成效率,从而应对合成数据生成成本。表4显示了在不同训练数据集大小下,基准评测集的准确率:

结果显示数据集大小与准确率之间存在明显的相关性。完整的1000个数据集达到了98.1%的准确率,而减少到500个数据点时准确率下降到92.5%。进一步减少到250和100个数据点时,准确率分别为85.3%和78.1%。这些发现表明,为了获得最佳性能,建议训练数据集应超过1000。

5. 总结

本文介绍了Octo-planner,这是一种设计用于与Octopus V2等执行类Agent协同工作的设备端规划类Agent。通过将规划和执行分开,提高了专业化和适应性。使用Octo-planner方法对Phi-3 Mini(一个38亿参数的LLM)进行了微调,使其能够作为规划类Agent在边缘设备上本地运行,并在领域内测试取得97%的成功率。通过Octo-planner方式,降低了计算需求,改善了延迟和电池寿命,并实施了多LoRA技术,以在不进行完全重新训练的情况下扩展模型能力。

Octo-planner有助于解决AI部署中的数据隐私、延迟和离线功能等问题。这代表着向个人设备提供实用且复杂的AI智能体(Agent)的进步。另外,官方开源了模型权重,以推动设备端AI的创新,促进开发高效、尊重隐私的应用程序,这些应用程序在不影响性能或安全的情况下改善日常生活。

6. 实战

英文

question = "Find my presentation for tomorrow's meeting, connect to the conference room projector via Bluetooth, increase the screen brightness, take a screenshot of the final summary slide, and email it to all participants"   

输出结果

You are not running the flash-attention implementation, expect numerical differences.   
=== inference result ===
<s><|user|> Find my presentation for tomorrow's meeting, connect to the conference room projector via Bluetooth, increase the screen brightness, take a screenshot of the final summary slide, and email it to all participants<|end|><|assistant|> Locate the presentation file for the upcoming meeting<nexa_split>Connect to the conference room projector via Bluetooth<nexa_split>Increase the screen brightness for better visibility<nexa_split>Take a screenshot of the final summary slide of the presentation<nexa_split>Email the screenshot to all meeting participants with a brief note about the presentation content<|end|>      

中文示例1:

question = "请找到我明天会议的演示文稿,通过蓝牙连接会议室的投影仪,增加屏幕亮度,截取最后总结幻灯片的截图,并将其发送给所有参会者。"   

输出结果

=== inference result ===   
<s><|user|> 请找到我明天会议的演示文稿,通过蓝牙连接会议室的投影仪,增加屏幕亮度,截取最后总结幻灯片的截图,并将其发送给所有参会者。<|end|><|assistant|> 找到会议的演示文稿<nexa_split>连接会议室的投影仪<nexa_split>增加投影仪的屏幕亮度<nexa_split>截取演示文稿的最后总结幻灯片的截图<nexa_split>发送截图给所有参会者<|end|>   

中文示例2:

question = """   
帮我下午5点预定一个5个人的会议,并添加到日历,主题是"如何实现使用LLM辅助编程",然后在飞书AI吃瓜划水群在群里通知大家会议时间,并发一下会议链接。另外,再帮我定下明天上午10点的会议,并设置提前30分钟提醒。最后设置明天早上8点半的闹钟,确保我能准时起床准备。   
"""   

输出结果:

=== inference result ===   
<s><|user|> 帮我下午5点预定一个5个人的会议,并添加到日历,主题是"如何实现使用LLM辅助编程",然后在飞书AI吃瓜划水群在群里通知大家会议时间,并发一下会议链接。另外,再帮我定下明天上午10点的会议,并设置提前30分钟提醒。最后设置明天早上8点半的闹钟,确保我能准时起床准备。   
<|end|><|assistant|> 1. 打开会议管理应用程序。       
2. 在应用界面中找到会议的功能并创建一个新会议。      

3. 设置会议时间为下午5点,并设置会议持续时间为1小时。      

4. 在会议名称或标题中输入"如何实现使用LLM辅助编程"。      

5. 在会议内容或描述中添加必要的信息。      

6. 在会议的设置中选择添加到日历的选项,并确保会议在日历上显示。      

7. 在会议的设置中输入会议链接或发送链接。      

8. 在会议的设置中输入邮箱或电话号码,以便在会议结束后通知大家。      

9. 在应用程序的其他功能中找到提醒功能,并设置一个提前30分钟的提醒,以便明天上午10点的会议。      

10. 在提醒功能中设置一个早晨的闹钟,设置时间为8点半,以确保会议的准时起床。<|end|>   

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单理解C++在C的基础上的改变

1.C语言的一些不足 我们首先看下面用C语言实现栈 #include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int StackDateType; typedef struct Stack {StackDateType* _ps;size_t _size;size_t _capacity; }Stack; void StackInit(Stack* ps) {…

探索基因奥秘:汇智生物如何利用DNA亲和纯化测序技术革新生物医学研究?

引言&#xff1a; 随着生物医学技术的不断进步&#xff0c;我们对生命奥秘的探索越来越深入。在众多的生物技术中&#xff0c;表观组学分析技术逐渐成为研究的热点。本文将带您走进汇智生物&#xff0c;了解他们如何利用DNA亲和纯化测序技术&#xff08;DAP-seq&#xff09;推…

vue2 将页面生成pdf下载

项目场景&#xff1a; 在项目开发的过程中&#xff0c;经常有下载一些报表&#xff0c;有部分要求文档是pdf格式的文件&#xff0c;这时候可以插件快速地搭建一个将页面生成pdf文件的功能。 依赖支持 本次项目中主要使用的nodejs: 14.20.0&#xff0c;npm版本是6.14.17。 npm…

Glide基本用法及With方法源码解析

文章目录 引入优点 使用步骤导入依赖权限使用 其他用法占位符错误图片后备回调符圆角过渡动画大小调整gif缩略图 使用RequestOptions缓存机制设置缓存策略清理缓存 使用集成库OkHttpVolley with源码解析getRetrieverGlide.getinitializeGlide getRequestManagerRetriever Reque…

VS Code breadcrumbs view 是什么

VS Code breadcrumbs view 是什么 正文 正文 breadcrumbs view&#xff1a;中文翻译&#xff0c;面包屑视图&#xff0c;乍听起来感觉十分抽象。这里我们来解释一下这个视图的含义&#xff1f; 如下图所示&#xff0c;红色框标记的部分就是 这个视图可以显示出当前打卡文件所…

深入理解 Nuxt.js 中的 app:error:cleared 钩子

title: 深入理解 Nuxt.js 中的 app:error:cleared 钩子 date: 2024/9/28 updated: 2024/9/28 author: cmdragon excerpt: Nuxt.js 中的 app:error:cleared 钩子的用途及其实现方式。这个钩子为开发者提供了一种优雅的方式来处理错误清除后的状态恢复和用户反馈。 categor…

Rust赋能前端:为WebAssembly 瘦身

❝ 凡事你一旦接纳了&#xff0c;就不存在了&#xff1b;你看不惯它&#xff0c;它就一直折磨你 大家好&#xff0c;我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 WebAssembly Rust SIMD LLVM binaryen 因为&#xff0c;行文字…

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

windows10 docker 推送本地镜像

windows10安装好docker后&#xff0c;接下来上传本地镜像文件&#xff1a; 1&#xff0c;设置请非安全参数&#xff0c;处理&#xff1a;https改为http请求 点击设置&#xff0c;打开 Docker Engine 追加&#xff1a; "insecure-registries": ["http://177.18…

8-回溯算法

参考 代码随想录 题目分类大纲如下&#xff1a; 一、回溯算法理论基础 1、什么是回溯法 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法 2、回…

分享了一个支持WIN7的QGIS3.34的版本

上传分享了一个支持WIN7的QGIS3.34的版本&#xff0c;该版本同时也是个轻量级的QGIS&#xff0c;大小轻便、启动速度也快&#xff01;但该版本没有Python及Python插件支持。 需要在WIN7下使用或只使用QGIS3.34核心基本功能的可以使用这个&#xff01;当然这个版本也支持WIN7以上…

Docker必学命令与操作技巧:新手快速入门指南

各位Docker初学者大家好!今天为大家分享一些关于Docker的必学命令和操作技巧,帮助大家快速入门。 Docker是什么? Docker是一个开源的容器化平台,它可以让开发者打包他们的应用以及依赖项到一个轻量级、可移植的容器中,然后在任何运行Docker引擎的机器上运行。 必学Dock…

使用Python创建EXE运行器和截图工具

在今天的博客中,我们将探讨如何使用Python和wxPython创建一个强大而实用的桌面应用程序。这个应用程序可以遍历指定文件夹中的所有EXE文件,并提供运行这些文件和自动截图的功能。无论你是系统管理员、软件测试人员,还是仅仅对自动化工具感兴趣的开发者,这个项目都会给你带来启发…

低代码用户中心:构建高效便捷的用户管理平台

什么是低代码用户中心&#xff1f; 低代码用户中心是一种利用低代码开发平台构建的用户管理系统&#xff0c;允许企业快速创建、部署和管理用户信息、权限及互动记录。通过可视化界面和预置组件&#xff0c;企业可以在短时间内实现灵活的用户管理解决方案&#xff0c;而无需编…

美畅物联丨GB/T 28181系列之TCP/UDP被动模式和TCP主动模式

GB/T 28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》作为我国安防领域的重要标准&#xff0c;为视频监控系统的建设提供了全面的技术指导和规范。该标准详细规定了视频监控系统的信息传输、交换和控制技术要求&#xff0c;在视频流传输方面&#xff0c;GB/T 2…

【Midjourney中文版:AI绘画新纪元,赋能创意设计与开发】

在数字艺术与设计领域&#xff0c;创新与效率并重。Midjourney中文版&#xff0c;作为一款强大的AI绘画工具&#xff0c;正引领我们步入一个全新的创意时代。它不仅简化了复杂的绘画流程&#xff0c;更以智能算法为驱动力&#xff0c;为开发者、设计师及所有创意工作者带来了前…

从0开始深度学习(6)——Pytorch动态图机制(前向传播、反向传播)

PyTorch 的动态计算图机制是其核心特性之一&#xff0c;它使得深度学习模型的开发更加灵活和高效。 0 计算图 计算图&#xff08;Computation Graph&#xff09;是一种用于表示数学表达式或程序流程的图形结构&#xff0c;可以将复杂的表达式分解成一系列简单的操作&#xff0…

Materials Studio零基础专题培训重磅来袭

一、软件介绍 Materials Studio是一款由美国Accelrys公司开发的新一代材料计算软件&#xff0c;专为材料科学领域的研究者设计&#xff0c;能够运行在PC上进行各种模拟研究。以下是对它的具体介绍&#xff1a; 1. 软件简介 定义与用途&#xff1a;Materials Studio是一款专门…

基于SpringBoot+Vue的智慧博物馆管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

MapReduce学习与理解

MapReduce为google分布式三驾马车之一。分别为《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。三遍论文奠定了分布式存储和计算的基础。本篇文章来说说mapreduc…