项目链接:https://github.com/tencent-ailab/persona-hub论文标题:Scaling Synthetic Data Creation with 1,000,000,000 Personas论文链接:https://arxiv.org/pdf/2406.20094 - 合成数据在训练大型语言模型(LLMs)中日益重要。
- 现有的数据合成方法面临挑战:实例驱动方法难以超越种子语料库的限制;关键点驱动方法难以创建全面的关键点列表;现有方法难以实现大规模、多样化的合成数据创建。
- 提出新颖的人物角色驱动数据合成方法:利用LLM中的多种视角创建多样化合成数据;通过向数据合成提示添加人物角色来引导LLM产生独特内容。
- 引入Persona Hub:包含10亿个多样化人物角色的集合;从网络数据中自动筛选和构建;覆盖全球约13%的人口,作为分布式世界知识载体;
- 数据合成流程:利用Text-to-Persona和Persona-to-Persona方法扩展人物角色集合;使用零样本或少样本提示方法生成多样化指令和内容;通过迭代扩展人物关系,进一步丰富人物角色集合。
- 多功能性:成功应用于数学和逻辑推理问题、用户指令、知识丰富文本、游戏NPC和工具功能等多个领域。
- 性能提升:在MATH数据集上,7B模型达到64.9%的准确率,仅次于某些GPT-4变体。
- 可扩展性和多样性:能够大规模创建多样化的合成数据,覆盖广泛的主题和视角。
- 灵活性和易用性:可以轻松适应不同场景和需求,如指令调优、预训练和后训练等。
- 潜在影响:有望推动合成数据创建和应用的范式转变;可能对LLM的研究、开发和应用产生深远影响。
图1:角色可以与各种数据合成提示(例如,创建一个数学问题或用户提示)协同工作,引导LLM从相应视角合成数据。角色中心中的10亿角色能够以亿级规模促进各种数据合成场景的合成数据创建随着合成数据——通常指由模型或算法而非直接由人类生成的数据——在训练大型语言模型(LLMs)中日益受到重视,人们对使用LLMs进行数据合成的兴趣也在不断增长:只需指定一个数据合成提示,就期望LLM能够产生理想的合成数据。然而,在实践中,大规模创建合成数据并非易事:虽然论文可以轻松扩大合成数据的数量,但确保其多样性同步扩大却很困难。不考虑采样的情况下,给定一个数据合成提示,LLM只能产生1个实例。因此,要大规模创建多样化的合成数据(例如,10亿个不同的数学问题),就需要大量多样化的提示。先前的研究倾向于通过以下两种范式来使数据合成提示多样化,但遗憾的是,这两种方法都无法实现可扩展的合成数据创建:• 实例驱动:这种方法通过利用种子语料库(即基于种子语料库中的实例创建新实例)来使数据合成提示多样化。然而,在这种范式下,合成数据的多样性主要来自种子实例,难以真正超越种子语料库。考虑到大多数实际场景中种子语料库的有限规模,这种范式难以扩大合成数据的创建。
• 关键点驱动:这种方法通过精心策划的全面关键点(或概念)列表来使数据合成提示多样化,这些关键点可以是主题、科目或论文期望合成数据包含的任何知识。然而,这种方法在扩大合成数据创建方面也面临困难:除非限定在狭窄且特定的领域(如数学),否则在实践中很难通过枚举不同粒度级别的所有关键点来策划一个全面的列表。
为了在实践中实现大规模多样化合成数据的创建,论文提出了一种新颖的基于人物角色的数据合成方法。这受到以下观察的启发:仅仅在数据合成提示中添加一个人物角色就能引导LLM朝相应的视角创建独特的合成数据,如图1所示。由于几乎任何LLM用例都可以与特定的人物角色相关联,只要论文构建一个全面的人物角色集合,就可以大规模创建包罗万象的合成数据。图2 从压缩的角度来看(Tang et al., 2023; Li et al., 2024),Persona Hub(约1010个令牌)可以被视为将世界知识(用于训练LLMs的公共网络文本,约1014个令牌)压缩成分布式载体的形式。另一方面,公共网络文本可以被看作是这些角色以其知识和经验创造的解压内容。为了促进以角色为驱动的数据合成研究,论文首先从角色库(Persona Hub)中发布200,000个角色,并随后发布论文使用各种角色创建的合成数据样本,包括:•10,000篇知识丰富的文本 - 1,000个游戏NPC角色 * 5,000种工具(功能)论文提出了两种可扩展的方法,从大量网络数据中衍生出多样化的角色,以构建角色库:文本到角色(Text-to-Persona)和角色到角色(Persona-to-Persona)。2.2.1 文本到角色(Text-to-Persona)具有特定专业经历和文化背景的人会有独特的阅读和写作兴趣。因此,从特定文本中,论文可以推断出一个可能[阅读、写作、喜欢、不喜欢...]该文本的特定角色。鉴于网络上的文本数据几乎是无限的且包罗万象的,论文只需通过这些网络文本提示LLM,就能获得广泛的角色集合,如图3所示。存在多种格式(例如,纯文本或结构化文本)来表示一个角色,这些格式可以在提示中进行控制。输出角色描述的粒度也可以通过提示进行调整。例如,在第一种情况下,粗粒度的角色可能是“一位计算机科学家”,而细粒度的角色则是“专注于神经网络架构和注意力机制的机器学习研究人员”。在论文的实践中,论文要求大型语言模型(在提示中)输出角色描述应尽可能具体。除了在提示中指定角色描述的粒度外,输入文本也可以影响角色描述的粒度。如图4所示,如果输入文本(例如,来自数学教科书或关于超导性的学术论文)包含许多详细元素,生成的角色描述也将是具体且细致的。因此,通过将Text-to-Persona方法应用于大规模网络文本数据,论文可以获得数十亿(甚至数万亿)种多样化的角色,涵盖不同粒度的广泛方面。图3:Text-to-Persona方法:通过向LLM提问“谁可能[阅读、写作、不喜欢...]这段文字?”,可以使用任何文本作为输入来获取相应的角色图4:如果输入文本涉及许多详细元素,角色描述将更加细致如上所述,Text-to-Persona是一种高度可扩展的方法,可以合成几乎涵盖每个方面的角色。然而,它可能仍会遗漏一些在网络上可见度较低的角色,因此不太可能通过Text-to-Persona获得,例如儿童、乞丐或电影幕后工作人员。为了补充Text-to-Persona可能难以触及的角色,论文提出了Persona-to-Persona,该方法从通过Text-to-Persona获得的角色中推导出具有人际关系的角色。如图5所示,"一个孩子"的人物角色可以从儿童医院护士的人物角色衍生出来(患者-照顾者关系)。同样,"一个乞丐"可以从避难所工作人员的人物角色衍生出来(援助关系),而"一个幕后电影工作人员"可以从电影主演的人物角色衍生出来(同事关系)。根据六度分离理论(Travers & Milgram, 1977),论文对通过文本到人物角色方法获得的每个人物角色进行六次迭代的人物关系扩展,从而进一步丰富了论文的人物角色集合。 图5:人物角色到人物角色方法通过人际关系获得多样化的人物角色,这可以通过向LLM提问"谁与给定人物角色有密切关系?"来轻松实现论文首先在RedPajama v2数据集上运行Text-to-Persona,然后执行Persona-to-Persona。在获得数十亿个人物角色后,不可避免地会有一些人物角色是相同或极其相似的。为了确保Persona库的多样性,论文通过两种方式对这些人物角色进行去重:基于MinHash的去重 论文使用MinHash根据人物角色描述的n-gram特征进行去重。由于人物角色描述通常只有1-2句话,远短于文档,论文简单地使用了1-gram和128的签名大小进行MinHash去重。论文在相似度阈值为0.9的情况下进行去重。基于嵌入的去重 在基于表面形式(即带有n-gram特征的MinHash)去重之后,论文还采用了基于嵌入的去重方法。论文使用文本嵌入模型(例如,OpenAI的text-embedding-3-small模型)为每个人物角色计算一个嵌入,然后过滤掉余弦语义相似度大于0.9的人物角色。需要注意的是,尽管论文在这里选择0.9作为阈值,但论文可以根据具体需求灵活调整它以进行进一步的去重。例如,当对实例数量的要求不高(例如,只需要100万个实例)但对多样性的要求较高时,论文可以进一步应用更严格的去重标准(例如,丢弃相似度大于0.5的人物角色)。经过去重处理并采用简单的启发式方法过滤掉低质量的人物描述后,论文总共收集了1,015,863,523个人物角色,最终形成了论文的人物角色库(Persona Hub)。论文提出的基于人物角色的数据合成方法简单而有效,其核心在于将一个人物角色融入到数据合成的提示语中的适当位置。尽管这一方法看似简单,却能显著引导大型语言模型(LLM)采用该人物角色的视角来生成合成数据。依托于人物角色库中10亿级的人物角色,该方法能够轻松地以亿级规模生成多样化的合成数据。正如论文可以使用零样本或少样本方法来提示大型语言模型(LLM),角色驱动的方法同样灵活且兼容多种形式的提示,以创建合成数据。如图 6 所示,论文提出了三种角色驱动的数据合成提示方法:•零样本提示不利用任何现有示例(即演示),从而充分发挥模型的创造力,不受特定示例的限制。•少样本提示通过提供一些演示,能更好地确保合成数据符合要求。•角色增强少样本提示在增强 LLM 的角色驱动数据合成能力方面更为有效。然而,其缺点是需要在少样本提示之前为每个演示推导出相应的角色。论文展示了角色中心在多种数据合成场景中的应用案例,包括大规模创建数学和逻辑推理问题、指令(即用户提示)、知识丰富的文本、游戏 NPC 以及工具(函数)开发。如前所述,角色驱动的方法具有普遍性和多功能性,只需调整数据合成提示,即可轻松适应不同的数据合成场景。因此,论文仅对数学问题合成进行详细的技术讨论,而对其他应用案例则不作详细讨论。正如初始示例(图 1)所示,当提示 LLM 创建数学问题时,添加一个角色会使 LLM 创建与该角色相关的数学问题。图 7(左)中的示例进一步证实了这一点:当呈现语言学家角色时,LLM 将在计算语言学的背景下创建数学问题。此外,添加角色并不会阻碍提示的灵活性——论文仍然可以轻松地在提示中指定所需数学问题的焦点(图7(中间))或难度(图7(右边))。图7:一个语言学家角色,针对不同数学问题创建提示,指定焦点(例如几何)或难度(例如奥林匹克级别) 图8:使用与数学领域相关的专业人士角色创建的数学问题示例。这些问题通常比使用通用角色创建的问题更具挑战性,因为它们通常需要对高级数学知识和技能有更深入和更细致的理解图7中的示例展示了使用通用角色创建数学问题的方法。论文当然也可以利用与数学相关的专业人士来创建数学问题。如图8所示,数学专业人士的角色通常涉及更高级和细粒度的数学知识和技能(如前文第2.1节和图4所述),这使得创建的数学问题能够涵盖这些数学概念,从而更具挑战性。数据论文从Persona Hub中选取了109万个角色,并使用GPT-4的零样本提示方法,利用这些角色创建数学问题,在创建过程中不借鉴MATH等基准中的任何实例。这种方法使论文合成了109万个数学问题。由于本工作侧重于创建新的合成数据而非合成解决方案,论文仅使用gpt-4o(助手)为创建的问题生成解决方案。在这109万个数学问题中,论文随机抽取2万个作为合成测试集以方便评估。剩余的107万个问题用于训练。•合成测试集(同分布,In-distribution):由于这2万个保留的问题集与107万个训练实例的生成方式相同,因此可以视为同分布测试集。为了确保该测试集中答案的准确性以提高评估的可靠性,论文额外使用gpt-4o(PoTb)和gpt-4-turbo(助手)生成解决方案,除了gpt-4o(助手)生成的解决方案。论文仅保留至少有两个解决方案一致的测试实例。剩余的测试集包含11.6万个测试实例。 •数学(MATH Out-of-distribution):最广泛认可的用于测试LLMs数学推理能力的基准。其测试集包含5,000道具有参考答案的竞赛级数学问题。由于论文未使用MATII数据集中的任何实例进行数据合成或训练,因此将MATIH测试集视为外分布测试集。等式检查:论文遵循与OpenA7相同的评估协议,在MATH基准上进行答案等式检查。对于合成测试集,论文采用类似方法,区别在于使用Llama-3-70B-Instruct而非gpt-4-turbo-preview作为等式检查器。论文仅对最新的开源7B LLM——Qwen2-7B(qwe, 2024)进行微调,使用论文合成的107万个数学问题,并在上述两个测试集上评估其贪心解码输出。表2:MATI的分布外评估。标记有星号()的结果可能未使用OpenAI的评估方法。使用论文合成的1.07M数学问题微调的模型在MATH上达到64.9%,与仅7B规模的gpt-4-turbo-preview性能相当*图1展示了在11.6K合成测试实例上的分布内(ID)评估结果。在测试的开源LLMs中,Qwen2-72B-Instruct取得了最佳结果,其他模型的排名通常与其在其他数学基准上的报告性能一致。论文的模型,借助1.07M合成数学问题,达到了近80%的准确率,超过了所有开源LLMs。然而,考虑到合成测试中的答案并非绝对可靠,并且论文的模型可能是唯一使用ID训练数据的模型,因此这些ID评估结果应仅作为参考。论文在表2中展示了在MATH数据集上的评估结果。使用合成训练数据微调的7B模型仅通过贪婪解码就在MATH上取得了令人印象深刻的64.9%的准确率,只有gpt-4o、gpt-4-turb 图9:在MATH数据集上,通过缩放用于训练Qwen2-7B的合成实例的准确性图9展示了模型在不同规模的合成数学问题训练下的MATH数据集表现。其性能趋势大体符合缩放定律。与先前研究在分布内数据上进行缩放(例如,严重依赖MATH训练数据来增强分布内数据)不同,论文在数据合成或训练过程中未使用任何MATH实例。因此,在这种分布外(OOD)评估设置下,超越gpt-4-turbo-preview(1106/0125)的表现对于一个7B模型来说确实令人印象深刻且充满希望。论文检验了合成的数学问题的质量:论文从200个挑战性问题中抽样(涉及中国高中和大学水平的数学知识点),并由腾讯AI实验室的两位数学专家评估这些问题的有效性。仅有7个问题被标记为无效(例如,由于条件不足或相互矛盾),得出一个可靠的有效率96.5%。 图10:不同相似度人格生成的数学问题的相似性:(a) 无特定焦点时数学问题的相似性;(b) 提示指定必须与财务和概率相关时数学问题的相似性;(c) 相似度为0.9的人格合成的gpt-4o和gpt-35-turbo生成的数学问题的相似性此外,论文特别考察了提示中人格差异对合成数学问题的影响。论文首先采样了100对语义相似度分别为0.4、0.6和0.8的人格。对于每一对人格,论文使用它们通过贪心解码(即温度为0)生成一对数学问题。然后,论文计算这些数学问题对的语义相似性,并将结果展示在图10中。论文清楚地观察到,合成数学问题之间的语义相似度往往与对应角色之间的相似度相关,但通常较低。当论文向提示中添加更多特定约束(例如,关于金融和概率的数学问题)时,合成数学问题之间的相似度往往会增加(图10(b))。在图10(c)中,论文还测试了使用高度相似角色(相似度=0.9)创建的gpt-4o和gpt-35-turbo生成的数学问题的相似度。结果表明,gpt-4o和gpt-35-turbo生成的数学问题的语义相似度似乎没有显著差异:大多数合成数学问题的相似度落在0.6到0.75的范围内,远低于角色之间的相似度(0.9)。鉴于这些观察,论文相信使用角色中心的角色库中的角色可以确保合成数据的多样性——即使在十亿规模上。与数学问题类似,逻辑推理问题也可以轻松合成。论文在图11中展示了使用论文提出的角色驱动方法合成的典型逻辑推理问题示例。此外,论文还在图12中展示了使用角色创建的几个“弱智吧风格”的逻辑推理问题。所有示例都表明,只要论文能清楚地描述要创建的逻辑推理问题的要求,论文就可以使用各种角色引导大型语言模型生成多样化的逻辑推理问题,这些问题不仅满足要求,而且与角色高度相关,即使是异想天开的“弱智吧风格”问题。 如需更多示例,请参阅论文发布的50,000个合成推理问题。LLMs的最终用户是人类。论文可以使用Persona Hub来模拟各种用户,以了解他们对LLM援助的典型请求,从而生成多样化的指令(即用户提示)。图13展示了两个典型的基于人物角色的提示,用于合成指令,分别对应第3节中描述的零样本提示和人物角色增强的少样本提示方法。零样本方法不依赖任何现有的指令数据集,允许LLM根据不同的人物角色生成各种指令。相比之下,人物角色增强的少样本方法需要现有的指令数据集来采样一些指令作为示范,并通过文本到人物角色方法推断这些指令的相关人物角色。虽然这种方法更复杂,但它产生的合成指令更接近真实用户的指令。使用Persona Hub创建的多样化指令,通常代表用户与LLM对话的第一轮,论文可以轻松使用LLM生成后续的对话轮次,从而产生大量模拟的用户-LLM对话,这将有助于增强LLM的指令遵循和对话能力。此外,论文甚至可以采用类似的方法,从Persona Hub中选择两个人物角色,让LLMs扮演这两个角色,从而模拟两个真实人物之间的对话。由于图1已经展示了使用这种方法创建的一些指令,论文在此不再展示示例。对更多示例感兴趣的读者可以参考论文发布的通过0样本和人物角色增强的2样本提示合成的50,000条指令。除了合成可以增强LLMs指令微调的指令外,基于人物角色的方法还可以轻松适应创建有利于LLMs预训练和后训练的知识丰富的普通文本。如图14所示,论文可以提示LLM使用从Persona Hub中抽样的人物角色来撰写一篇Quora文章。这种方法能引出LLM相应的知识和观点,从而产生高度信息化和知识丰富的内容。通过利用Persona Hub中的10亿个人物角色来扩大这一过程,论文可以轻松获得大量知识丰富的文本,几乎涵盖了各种粒度级别的任何主题。 角色中心的一个直接且实用的应用是创建多样化的NPC(非玩家角色),适用于游戏的大规模生产。只要论文能够向LLM提供游戏的背景和世界构建信息,论文就可以提示LLM将角色中心中的角色(通常是现实世界的角色)投影到游戏世界中的角色。这样,论文可以显著减少游戏设计过程中构思NPC所需的努力。 图16:使用Persona Hub为《天涯明月刀》游戏创建NPC图15和16展示了具体的例子,论文使用Persona Hub中的人物角色为游戏"魔兽世界12"和"天涯明月刀13"创建游戏NPC(非玩家角色)。 图17:使用Persona Hub创建工具(功能)的示例Persona Hub可用于模拟广泛的实际用户,以预测他们对LLM的可能请求(即指令)。类似地,论文可以使用Persona Hub来预测用户可能需要的工具,以便论文预先构建这些工具(功能)。当真实用户提出类似请求时,LLM可以直接调用这些预构建的工具返回结果,而无需每次都从头开始构建工具。这种由Persona Hub引入的范式是一种全新的解决方案,它能让LLMs更好地服务用户。论文相信,随着LLMs变得更加大众化和多功能化,这种方法在未来将具有巨大的潜力。图17展示了使用各种角色创建的工具示例。这些工具提供了角色可能需要(例如,出租车司机需要查看交通状况)但无法通过LLM直接访问的功能,极大地扩展了LLM提供的服务范围。需要注意的是,尽管图17中的工具仅是接口定义,但这些定义可以轻松转换为代码实现,如图18所示。 图18:图17中的接口定义(例如,物种识别接口)可以通过调用LLM轻松转换为代码实现。生成的预构建工具随后可以直接被LLM在未来使用,无需每次从头开始构建