AgentOhana:为智能体学习设计统一的数据和训练流水线

news2024/9/19 23:40:33

人工智能咨询培训老师叶梓 转载标明出处

多源数据异构性问题通常来源于多轮交互的Agent相关数据。不同数据集之间的数据结构、语法、标签约定和处理方法的多样性,使得LLM的训练和微调过程变得复杂,且容易引入偏差和不一致性。为了应对这些挑战,Salesforce 公司的研究团队提出了一个名为AgentOhana的综合解决方案,他们开发了强大的预处理流水线,确保跨不同数据格式的统一性和兼容性,并实施策略以减少非标准化表示可能引起的偏差。

方法

图 1展示了AgentOhana的工作流程。此图<bold>bold</bold>突出了如何使用统一的多轮数据格式来整合来自不同数据源的轨迹。这种格式允许将不同环境(如HotpotQA和ToolAlpaca)中的Agent轨迹整合到一个统一的框架中。

图 1 显示了数据从各个环境(Environment 1, Environment 2, ..., Environment N)流入,每个环境都提供了输入、输出和观察结果。这些数据通过“Agent Trajectory Standardizer”进行标准化,然后通过“Agent Rater”进行评估和过滤,最后通过“Combiner”、“Shuffler”和“Interleaver”等组件进行整合和随机化处理,以供训练使用。

为了解决不同环境数据格式的异构性问题,作者提出了一个统一的Agent数据格式。在图 2中,展示了如何将来自HotpotQA和ToolAlpaca环境的原始轨迹转化为统一格式的轨迹。这种格式包括用户查询、模型名称、得分和其他信息,以及详细的步骤记录,每个步骤包括输入、输出和下一个观察结果。

图 2 中的示例展示了如何将复杂的交互步骤分解为结构化的输入、输出和观察结果,这有助于更好地理解和分析Agent的行为。例如,一个查询“Which magazine was started first: Arthur's Magazine or First for Women?”的轨迹被详细记录,包括每一步的思考、动作和环境反馈。

AgentRater是一种评估Agent轨迹的方法,它基于公开的模型或封闭环境的API(如ChatGPT)来评分。这种方法不同于传统的单轮或简短对话评分,而是对整个轨迹进行评分,以0到5的分数表示。图 3 提供了一个评分模板,评分者需要根据模型对输入和观察的响应的准确性和效率给出评分,并提供详细的解释。

数据加载器是整个数据和训练流水线中的关键组件,它负责将不同格式的数据集整合到训练过程中。其通用性确保了对各种数据格式的灵活性和兼容性,使得数据能够高效地被摄入并送入训练框架。

表 1 展示了AgentOhana的统计数据,包括从10个不同环境收集的数据。表中列出了每个环境的样本数量(#Sampled Trajs)、经过AgentRater评分过滤后的轨迹数量(#Filtered Trajs),以及过滤后轨迹的平均轮数(#Average Turns)。例如,Webshop环境从11200个样本中筛选出2063个,平均每个轨迹有6.8轮。

作者引入了AgentModelDatasetBase类,以简化诸如提示格式化等常见任务,并为创建各个数据集提供虚拟模板。这个类还允许用户对数据质量进行一定程度的控制,并处理来自不同数据集的随机数据批处理,特别是在多设备分布式训练中,这需要综合的方法来确保健壮的数据集管理。

在创建自定义数据集时,首先通过流模式加载各个原始数据。然后,可以为每个数据集引入过滤器生成器,以便在将数据喂给训练器之前进一步自定义数据选择。例如,可以进一步评估并移除得分相对较低的数据。最后,通过控制种子随机打乱数据集,以确保随机性和可复现性。

在代码示例中,定义了一个名为WebshopMultiTurn的类,它继承自AgentModelDatasetBase。这个类有一个静态方法_high_score_filter_generator,用于进一步过滤轨迹,只保留得分等于或高于0.8的轨迹。create_datasets方法用于创建数据集,它首先加载数据,然后应用过滤器生成器,并最终打乱数据集。

在组合数据集时,重点是确保批处理过程中的随机性,特别是处理多个数据集时。为了实现这一点,使用init_device_seed函数根据进程ID多样化控制种子,当在多个设备上使用数据并行时。通过仔细管理种子过程,目标是在保持随机性的同时,通过划分、打乱和交错设备上的数据,维持数据的平衡分布,从而增强训练过程的健壮性和可复现性。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加下方微信或评论留言,即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory。关注享粉丝福利,限时免费录播讲解。

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

作者采用了监督式微调方法来提升他们的Agent模型xLAM-v0.1的性能。这个模型最初是在Mixtral-8x7B-Instruct-v0.1模型上预训练的。微调过程使用了AgentOhana的能力,并在8个Nvidia H100 GPU上并行进行,采用了QLoRA框架。

在数据集编译策略方面,作者确保创建了一个全面的培训语料库,该库具有来自不同来源数据的平衡分布。这种平衡有助于减少偏见,并确保模型在多样化输入下的强大性能。作者还在数据集划分和模型训练期间精心保持了跨设备的独立随机性,防止了在训练过程中引入无意的偏见。

在微调过程中,模型平均大约3次遍历每个数据集。这种多周期训练策略有助于模型全面接触数据集,使模型能够有效地学习训练数据中存在的复杂模式。

作者在四个基准测试中进行了实验评估:Webshop、HotpotQA、ToolEval和MINT-Bench。

  • Webshop 创建了一个模拟产品购买的在线购物环境。
  • HotpotQA 涉及需要通过Wikipedia API进行逻辑推理的多跳问答任务。

作者采用了BOLAA的框架来评估模型性能,包括五个单一Agent设置和一个多Agent场景。对于Webshop基准测试,BOLAA包括900个用户查询,其中200个作为测试子集。对于HotpotQA,300个用户问题被抽样到三个难度级别——容易、中等和困难——每个类别包含100个问题。这些问题专门保留用于模型测试,以确保严格的评估过程。

在Webshop和HotpotQA这两个基准测试环境中,xLAM-v0.1模型均展现出了卓越的性能。在Webshop环境中,表 2 显示xLAM-v0.1在所有测试的Agent配置中一致性地优于GPT-3.5-Turbo和GPT-3.5-Turbo-Instruct。同时,它在六个设置中的五个超越了GPT-4-0613,尽管GPT-4-0613在规划能力方面表现出色,但在推理、自我反思和多Agent交互方面则相对较弱。

在HotpotQA环境中,表 3 揭示了xLAM-v0.1相对于GPT-3.5-Turbo和Mixtral-8x7B-Instruct-v0.1在所有测试设置中的优越性。GPT-4-0613虽有轻微的性能领先,但分析表明,它倾向于在四个步骤内找到正确答案,这可能因为它在相关问答示例的大量数据上进行了训练,因此在特定领域内拥有更强的知识储备。

这些结果凸显了xLAM-v0.1在处理复杂交互和任务解决方面的能力,尤其是在需要多步骤推理和决策的场景中。尽管特定领域训练对提升模型性能有积极作用,但全面的模型优化和适当的微调策略对于实现跨领域性能同样重要。

表 4 显示了ToolEval的结果。xLAM-v0.1在所有评估场景中都超过了TooLlama V2和GPT-3.5-Turbo-0125,并在三个设置中的两个中超过了GPT-4-0125-preview。这一性能表明xLAM-v0.1在功能调用和处理复杂工具使用任务方面具有优越的能力。作者认为,通过涉及多种提示的数据增强,可以进一步提高模型的性能。

表 5 展示了在具有挑战性和全面的MINT-Bench上的测试结果,与官方排行榜的基线进行了比较。xLAM-v0.1模型在这一严格基准测试中获得了第三名,超过了其他基于Agent的模型,如Lemur-70b-Chatv1和AgentLM-70b,以及包括Claude-2和GPT-3.5-Turbo-0613在内的通用大型语言模型(LLMs)。这些结果突出了本模型在导航多轮交互和任务解决的复杂性方面的卓越能力。

AgentOhana的创建标志着在整合多轮LLM代理轨迹的多样化数据方面迈出了重要一步。通过开发统一的数据和训练流水线,建立了一个能够处理各种数据结构和格式复杂性的框架,确保了跨多个环境的兼容性。

论文链接:https://arxiv.org/pdf/2402.15506

代码链接:github.com/SalesforceAIResearch/xLAM

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

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

相关文章

2024年做了TMMi认证的中国企业有哪些

&#xff08;本文章企业名单来源&#xff1a;TMMi基金会官方网站&#xff09; 您是否想要了解2024年&#xff08;截至8月底&#xff09;有哪些新增企业做了TMMi认证&#xff08;不含2级&#xff09;&#xff1f; 以下是TMMi基金会官网查询的内容&#xff1a; TMMi基金会官网公…

数据结构————单链表

目录 一、单链表的定义及其特点 定义 特点 二、单链表的实现 准备工作&#xff1a; 1.单链表的创建 1.1头插法介绍 1.2尾插法介绍 总结&#xff1a; 2.单链表的初始化 3.单链表的求表长 4.单链表的销毁 5.单链表的插入 6.单链表的查找 6.1按序查找 6.2按值查找 7…

UDP聊天室项目

代码思路 服务器 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h>…

每周心赏|极致浪漫,这些中秋仪式感AI住了

盈月揽星辉&#xff0c;万家赴团圆。✨ 月光散尽&#xff0c;总是带着一丝温柔的凉意。 &#x1f342;清风拨弦&#xff0c;总是留存着诗意的古韵悠扬。 千年前&#xff0c;李白对月独酌&#xff0c;苏轼对影成双&#xff0c; 千年后&#xff0c;文心智能体便利店与你穿越时…

adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器

.NET兼职社区 .NET兼职社区 .NET兼职社区 1.下载adb Windows版本&#xff1a;https://dl.google.com/android/repository/platform-tools-latest-windows.zip 2.配置adb环境变量 按键windowsr打开运行&#xff0c;输入sysdm.cpl&#xff0c;回车。 高级》环境变量》系统变量》…

【C++】_stack和_queue容器适配器、_deque

当别人都在关注你飞的有多高的时候&#xff0c;只有父母在关心你飞的累不累。&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;stack •&#x1f330;1.stack介绍 •&#x1f330;2.stack的基本操作 &#x1f34b;知识点二&…

电脑之间如何快速传大文件?

这里&#xff0c;为大家介绍一款免费的远程桌面软件——远程看看&#xff0c;该软件不仅支持远程控制&#xff0c;还提供了文件传输功能&#xff0c; 用户可以传输单个文件大小不超过2TB&#xff0c;且传输速度可达每秒10MB。若您不知道电脑之间如何快速传大文件&#xff0c;远…

城市交通标线检测系统源码分享

城市交通标线检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

redis基本数据类型和常见命令

引言 Redis是典型的key-value&#xff08;键值型&#xff09;数据库&#xff0c;key一般是字符串&#xff0c;而value包含很多不同的数据类型&#xff1a; Redis为了方便我们学习&#xff0c;将操作不同数据类型的命令也做了分组&#xff0c;在官网&#xff08; Commands | Do…

Kafka 基于SASL/SCRAM动态认证部署,kafka加账号密码登录部署

文章目录 前言下载 kafka安装启动zookeeper添加账号密码 启动kafka修改kafka配置文件增加jaas授权文件修改启动文件&#xff0c;启动kafka检查是否部署成功 offset explore 连接 前言 其实挺简单的几个配置文件&#xff0c;问大模型一直没说到点上&#xff0c;绕晕了。SASL/SC…

Vue3.0组合式API:setup()函数

1、什么是组合式API Vue 3.0 中新增了组合式 API 的功能&#xff0c;它是一组附加的、基于函数的 API&#xff0c;可以更加灵活地组织组件代码。通过组合式 API 可以使用函数而不是声明选项的方式来编写 Vue 组件。因此&#xff0c;使用组合式 API 可以将组件代码编写为多个函…

浅谈EXT2文件系统----超级块

超级块概述 在 EXT2 文件系统中&#xff0c;超级块&#xff08;superblock&#xff09;是一个非常重要的数据结构&#xff0c;包含了文件系统的全局信息。每个文件系统都有一个超级块&#xff0c;位于文件系统的第一个块之后&#xff0c;通常在块组的起始处。 超级块包含以下关…

Autosar模式管理实战系列-COMM模块状态机及重要函数讲解

1.Channel状态管理 上一节提到ComM进行通信模式管理提供有两大状态机,另外一个就是Channel状态管理。这里的Channel指的是一个通信总线,目前项目主要是采用CAN总线。ComM 模块对每一个Channel都定义了一个状态机,用于描述通道的各种状态、状态转移关系和状态转移动作。该状…

NFT Insider #147:Sandbox 人物化身九月奖励上线;Catizen 付费用户突破百万

市场数据 加密艺术及收藏品新闻 Doodles 动画特别剧《Dullsville and The Doodleverse》在多伦多国际电影节首映 Doodles 最近在多伦多国际电影节&#xff08;TIFF&#xff09;首映了其动画特别剧《Dullsville and The Doodleverse》&#xff0c;这是该品牌的一个重要里程碑。…

享元模式详解:解锁高效资源管理的终极武器

&#x1f3af; 设计模式专栏&#xff0c;持续更新中 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 享元模式 享元模式&#xff08;Flyweight Pattern&#xff09; 是一种结构型…

yaml配置文件(SpringBoot学习4)

SpringBoot使用一个全局的配置文件&#xff0c;配置文件名是固定的 application.properties 语法结构&#xff1a;keyvalue application.yaml 语法结构&#xff1a;key:空格value #是注释 #yaml 普通的key - value 例&#xff1a;name&#xff1a;…

力扣题解2390

大家好&#xff0c;欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述​&#xff08;中等&#xff09;&#xff1a; 从字符串中移除星号 给你一个包含若干星号 * 的字符串 s 。 在一步操作中&#xff0c;你可以&#xff1a; 选中 s 中的一个星号。 移除星号…

23. Revit API: 几何对象(四)- BrepBuilder

一、前言 上一篇写了Solid的创建、展示、变换、布尔操作&#xff0c;这一篇写另一种Solid的创建方法。 需要再次强调的是&#xff0c;BrepBuilder不适合用来创建Solid。 二、边界表示 【Wiki】&#xff1a;边界表示&#xff08;Boundary representation&#xff0c;简称B-Re…

顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测

顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测 目录 顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现顶刊算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测&#xff08;程序可以作为JCR…

外贸展会全流程、如何高效转化,获取更多名片

马上又到展会季了&#xff0c;九十月份是各行各业的展会旺季&#xff0c;很多伙伴们比较关注的是&#xff0c;展会上如何拿到更多名片&#xff0c;如何高效转化客户 一、展会的好处 1、扩展客户资源&#xff1a;接触潜在客户、扩大市场覆盖 2、提升品牌知名度&#xff1a;展示…