人工智能咨询培训老师叶梓 转载标明出处
多源数据异构性问题通常来源于多轮交互的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