一种大语言模型训练方法、装置、设备及存储介质转让专利

申请号 : CN202311624845.3

文献号 : CN117332791B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁乐王伟刘子星徐煌施建生

申请人 : 税友软件集团股份有限公司

摘要 :

本申请公开了一种大语言模型训练方法、装置、设备及存储介质,涉及大语言模型领域,包括:获取初始语料数据并进行数据清洗得到目标语料数据,以创建第一训练数据集;将P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于第一训练数据集对适配器模块进行训练;基于第一训练数据集构建第二训练数据集,并在底座大模型中嵌入预设门控模块;基于第二训练数据集对预设门控模块进行训练,在预训练语言大模型收敛后停止训练。通过将P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,和基于前置的门控模块改造预训练的底座模型,将训练流

权利要求 :

1.一种大语言模型训练方法,其特征在于,包括:

获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;

将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练;

在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;

基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练;

其中,所述基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练之前,还包括:冻结所述底座大模型的相关参数,以基于所述第一训练数据集对所述适配器模块中的所述预设P‑Tuning v2模块的embedding编码器参数进行训练;

所述基于所述第二训练数据集对所述预设门控模块进行训练之前,还包括:冻结所述底座大模型和所述适配器模块的相关参数,以基于所述第二训练数据集对所述预设门控模块的自身参数进行训练;

并且,所述基于所述第一训练数据集构建第二训练数据集,包括:获取预设垂直领域外的第二初始语料数据,并利用未嵌入所述适配器模块的底座大模型基于所述第二初始语料数据生成第三训练数据集;

基于所述第一训练数据集和所述第三训练数据集根据预设比例构建所述第二训练数据集;

所述在所述预训练语言大模型的底座大模型中嵌入预设门控模块,包括:在所述预训练语言大模型的所述底座大模型的embedding层与attention层之间嵌入所述预设门控模块。

2.根据权利要求1所述的大语言模型训练方法,其特征在于,所述根据所述目标语料数据创建第一训练数据集,包括:根据所述目标语料数据以json数据格式创建初始训练数据集,并基于预设样本生成规则对所述初始训练数据集中的序列进行处理后生成目标样本,以基于所述目标样本构建所述第一训练数据集。

3.根据权利要求2所述的大语言模型训练方法,其特征在于,所述基于预设样本生成规则对所述初始训练数据集中的序列进行处理后生成目标样本,包括:若所述目标语料数据为QA对,则将所述QA对中的聊天历史作为所述序列的history值;

将所述history值拼接到所述序列的prompt之前,以生成所述目标样本。

4.一种大语言模型训练装置,其特征在于,包括:

数据集创建模块,用于获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;

适配器训练模块,用于将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练;

门控嵌入模块,用于在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;

门控训练模块,用于基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练;

其中,所述适配器训练模块,还包括:

适配器训练单元,用于冻结所述底座大模型的相关参数,以基于所述第一训练数据集对所述适配器模块中的所述预设P‑Tuning v2模块的embedding编码器参数进行训练;

所述门控训练模块,还包括:

门控训练单元,用于冻结所述底座大模型和所述适配器模块的相关参数,以基于所述第二训练数据集对所述预设门控模块的自身参数进行训练;

并且,所述门控嵌入模块,包括:

第一数据集构建单元,用于获取预设垂直领域外的第二初始语料数据,并利用未嵌入所述适配器模块的底座大模型基于所述第二初始语料数据生成第三训练数据集;

第二数据集构建单元,用于基于所述第一训练数据集和所述第三训练数据集根据预设比例构建所述第二训练数据集;

门控嵌入单元,用于在所述预训练语言大模型的所述底座大模型的embedding层与attention层之间嵌入所述预设门控模块。

5.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至3任一项所述的大语言模型训练方法。

6.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的大语言模型训练方法。

说明书 :

一种大语言模型训练方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及大语言模型领域,特别涉及一种大语言模型训练方法、装置、设备及存储介质。

背景技术

[0002] 近年,随着越来越多大语言模型的涌现,衍生出了一些效果较好的以适配器形式进行模型微调的方式,典型的有LoRa(Low‑Rank Adaptation of Large Language Models,大语言模型的低阶自适应)和P‑Tuning v2。
[0003] 相较于底座大模型本身巨大的参数量,模型微调适配器参数量大大降低,从而降低了模型微调所需的资源要求和时间成本。但是,这类微调方法在训练完后,微调完后的大模型在微调中类似的问题上表现稳定,但在原有的大模型通用知识和语言理解表达能力上会发生遗忘,这个风险本质上是属于“过拟合”。adaptor是一种轻量级的模型,用于在预训练底座模型中添加任务特定的参数,adaptor的目的是在不改变预训练模型的情况下,将预训练模型适应于特定任务,因此,adaptor往往可包含信息量较低,微调训练时语料数量相对较少、类型相对匮乏。因此,如何改善大语言模型微调的效果,是本领域有待解决的问题。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种大语言模型训练方法、装置、设备及存储介质,通过将P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,和基于前置的门控模块改造预训练的底座模型,将训练流程变成二段式,实现模型动态控制激活适配器参数,达到输出结果更稳定、泛化的目的。其具体方案如下:
[0005] 第一方面,本申请提供了一种大语言模型训练方法,包括:
[0006] 获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;
[0007] 将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练;
[0008] 在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;
[0009] 基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。
[0010] 可选的,所述根据所述目标语料数据创建第一训练数据集,包括:
[0011] 根据所述目标语料数据以json数据格式创建初始训练数据集,并基于预设样本生成规则对所述初始训练数据集中的序列进行处理后生成目标样本,以基于所述目标样本构建所述第一训练数据集。
[0012] 可选的,所述基于预设样本生成规则对所述初始训练数据集中的序列进行处理后生成目标样本,包括:
[0013] 若所述目标语料数据为QA对,则将所述QA对中的聊天历史作为所述序列的history值;
[0014] 将所述history值拼接到所述序列的prompt之前,以生成所述目标样本。
[0015] 可选的,所述基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练之前,还包括:
[0016] 冻结所述底座大模型的相关参数,以基于所述第一训练数据集对所述适配器模块中的所述预设P‑Tuning v2模块的embedding编码器参数进行训练。
[0017] 可选的,所述基于所述第一训练数据集构建第二训练数据集,包括:
[0018] 获取预设垂直领域外的第二初始语料数据,并利用未嵌入所述适配器模块的底座大模型基于所述第二初始语料数据生成第三训练数据集;
[0019] 基于所述第一训练数据集和所述第三训练数据集根据预设比例构建所述第二训练数据集。
[0020] 可选的,所述基于所述第二训练数据集对所述预设门控模块进行训练之前,还包括:
[0021] 冻结所述底座大模型和所述适配器模块的相关参数,以基于所述第二训练数据集对所述预设门控模块的自身参数进行训练。
[0022] 可选的,所述在所述预训练语言大模型的底座大模型中嵌入预设门控模块,包括:
[0023] 在所述预训练语言大模型的所述底座大模型的embedding层与attention层之间嵌入所述预设门控模块。
[0024] 第二方面,本申请提供了一种大语言模型训练装置,包括:
[0025] 数据集创建模块,用于获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;
[0026] 适配器训练模块,用于将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练;
[0027] 门控嵌入模块,用于在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;
[0028] 门控训练模块,用于基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。
[0029] 第三方面,本申请提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述的大语言模型训练方法。
[0030] 第四方面,本申请提供了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的大语言模型训练方法。
[0031] 本申请中首先获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;通过将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练,在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;然后基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。通过上述技术方案,本申请通过改造预训练的底座模型,在进入生成环节前,前置一个门控模块,整个训练流程就变成了二段式,即先训练adaptor模块,再训练门控模块,保证了两个模块(适配器、门控)的参数训练互不影响,将它们对大模型最终输出的影响和训练流程解耦开来,方便对它们单独进行训练优化,并且避免发生灾难性遗忘,使输出结果更稳定、实现泛化的目的。

附图说明

[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0033] 图1为本申请提供的一种大语言模型训练方法流程图;
[0034] 图2为本申请提供的一种具体的大语言模型训练方法流程图;
[0035] 图3为本申请提供的一种适配器模块训练流程图;
[0036] 图4为本申请提供的一种模型评估指标示意图;
[0037] 图5为本申请提供的一种门控模块训练流程图;
[0038] 图6为本申请提供的一种大语言模型训练装置结构示意图;
[0039] 图7为本申请提供的一种电子设备结构图。

具体实施方式

[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 目前想要对大模型进行专业化训练可以以适配器形式进行微调,相较于底座大模型本身巨大的参数量,模型微调适配器参数量大大降低,从而降低了模型微调所需的资源要求和时间成本。但是,这类微调方法在训练完后,也会存在很大的灾难性遗忘风险,并且基于adaptor进行微调训练时语料数量相对较少、类型相对匮乏。而本申请通过改造预训练的底座模型,在进入生成环节前,前置一个门控模块,先训练adaptor模块,再训练门控模块,保证了两个模块的参数训练互不影响,将它们对大模型最终输出的影响和训练流程解耦开来,方便对它们单独进行训练优化,避免发生灾难性遗忘,使输出结果更稳定。并且可以理解的是,ChatGLM‑6b的资源要求低、中文能力较好,是理想的中文垂直领域大模型的底座模型,因此本申请也以此模型为底座大模型进行改造。
[0042] 参见图1所示,本发明实施例公开了一种大语言模型训练方法,包括:
[0043] 步骤S11、获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集。
[0044] 本实施例中,首先需要进行数据收集,获取垂直领域内符合预设任务类型的第一初始语料数据,并对进行数据清洗得到目标语料数据,然后根据目标语料数据创建第一训练数据集。在数据收集时,为了使模型具备应用不同专业领域,可以收集预先定义的垂直领域内涵盖专业知识、概念的seq2seq语料。上述seq2seq语料为一种生成式模型任务类型,指根据输入的序列推断对应的一段序列,该任务类型常在大模型预训练和微调阶段使用。通过进行垂直领域知识的训练,从而在不改变大模型本身参数的前提下降低训练成本,提高模型垂直领域专业性。可以理解的是,上述语料样本可以是QA对,也可以是内容格式标准、知识概念准确的前后句等属于领域内seq2seq数据类型的数据样本,然后对收集到的数据样本进行数据清洗,具体可以利用以下过程进行清洗:通过将文字表达模糊,逻辑存在问题的语料数据剔除、将文本中无用或容易造成混淆的符号去除、将非指定领域内知识的样本剔除。
[0045] 需要指出的是,在根据目标语料数据创建训练数据集时,可以根据目标语料数据以json数据格式创建初始训练数据集,并基于预设样本生成规则对初始训练数据集中的序列进行处理后生成目标样本,以基于目标样本构建上述第一训练数据集。以json数据格式创建训练、测试数据集后,其中输入的序列为prompt的值,输出序列为response的值。
[0046] 并且可以理解的是,当序列前后较长时,可以将逻辑连贯的段落按句子切分,无独立逻辑的句子不允许独立成一个序列,可直接删除,如:你好,请问。生成的参考格式文本如下:
[0047] 样本1:{prompt:自监督学习是一种无需人工标注数据的学习方式,它通过利用数据本身的特征,response:自动构造标签,从而实现模型的训练,history=“”};
[0048] 样本2:{prompt:自监督学习是一种无需人工标注数据的学习方式,它通过利用数据本身的特征,自动构造标签,从而实现模型的训练,response:这种方法可以大大减少人工标注数据的成本,提高模型的泛化能力,history=“”}。
[0049] 并且基于预设样本生成规则对初始训练数据集中的序列进行处理生成目标样本的过程中,若目标语料数据为QA对,则将QA对中的聊天历史作为序列的history值;并在训练输入时将history值拼接到序列的prompt之前以生成目标样本。参考格式文本如下:
[0050] [Round {对话轮数}]\n问:{历史prompt}\n答:{历史response}\n
[0051] [Round {对话轮数}]\n问:{当前prompt}\n答:
[0052] 上述样本为训练时的输入样本,最后的“答:”是引导模型输出答案结果的前缀或引导。
[0053] 步骤S12、将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练。
[0054] 本实施例中可以将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练。可以理解的是,区别于传统的P‑tuning,v2版本在大模型的每个自注意力层的头部都拼接上默认128位的“参数前缀”,而非传统的只在输入层拼接上“提示前缀”;另外,其拥有独立的embedding编码器跟随适配器一起训练,综上可以使得微调后的模型泛化性更强。
[0055] 可以理解的是,上述适配器模块即Adaptor,指在微调训练中,在底座大语言模型的某些结构中添加的适配器(如在transformer层添加),适配器为参数量较小的一类深度学习模块,其结构设计是为了在不影响底座大模型和提高训练成本(时间和显存)的前提下,让整个系统更加擅长微调时专业领域的知识。
[0056] 步骤S13、在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块。
[0057] 本实施例中在适配器模块训练完成后,需要基于第一训练数据集构建第二训练数据集,并在预训练语言大模型的底座大模型中嵌入预设门控模块。具体基于第一训练数据集构建第二训练数据集时,首先获取预设垂直领域外的第二初始语料数据,并利用未嵌入所述适配器模块的底座大模型基于第二初始语料数据生成第三训练数据集,然后基于第一训练数据集和第三训练数据集根据预设比例构建第二训练数据集。
[0058] 需要指出的是,当完成一阶段适配器模块的训练后,本实施例由于两个模块的训练任务类型和目标保持一致、集成化程度高,因此,可以直接利用训练适配器的语料数据和训练框架来对门控模块进行训练。即用于训练适配器模块的训练集仍可以被重复利用,作为二阶段门控模块训练的部分数据集;同时,可以收集垂直领域外的其他高质量语料和问题,利用纯净的底座大模型(未嵌入适配器模块),进行文本的扩写和问题的回答,作为另外一部分二阶段训练集,其中,上述一阶段和二阶段的训练集中的训练样本默认采用1:1的比例进行收集,以平衡门控模块学习样本中引导其激活与否的样本数量,保证模型的泛化性。
[0059] 并且可以理解的是,在构建第二训练数据集的过程中,也需要进行同步骤S11中的数据清洗的过程。同时,由于本实施例中门控机制是作为大模型的内嵌模块进行训练的,从而保证门控下游任务与微调任务的一致性。因此,上述第二训练数据集构建时的训练样本构建的格式和方法也跟一阶段中构建第一训练数据集相同,这样一来,可以从数据、任务、模型结构上最大程度地保证整套系统的一致性和稳定性,避免在大语言模型添加了适配器进行微调训练后,模型对微调的知识具备专业能力的同时,却由于适配器参数的加入和微调语料、任务的局限性,影响了大模型预训练阶段具备的语义理解、语言组织、通用知识等,通过先将适配器模块插入底座大模型进行微调训练后,再插入门控模块进行激活判断的训练,可以直接利用第一阶段用来训练适配器的语料,对门控模块进行同样的自监督训练,既保持了下游任务和训练语料的一致性,也大大节省了训练门控模块而投入的样本打标成本。
[0060] 步骤S14、基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。
[0061] 本实施例中基于第二训练数据集可以对预设门控模块进行训练,并在基于训练后的预设门控模块判断预训练语言大模型收敛后停止训练。这样一来,结合上述训练过程,实现了二段式的大模型微调流程,一是保证了两个模块(适配器、门控)的参数训练互不影响,将它们对大模型最终输出的影响和训练流程解耦开来,方便后续对它们单独进行训练优化;二是保证了大模型微调之后,避免发生灾难性遗忘,可以通过门控模块动态地识别是否激活适配器参数,既拥有大模型原生的通用能力,也拥有了垂直领域的专业能力。
[0062] 本实施例中进行数据收集,获取垂直领域内符合预设任务类型的第一初始语料数据,并对进行数据清洗得到目标语料数据,然后根据目标语料数据以json数据格式创建第一训练数据集,然后将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练。在所述适配器模块训练完成后,基于第一训练数据集构建第二训练数据集,并在预训练语言大模型的底座大模型中嵌入预设门控模块,然后基于第二训练数据集可以对预设门控模块进行训练,并在基于训练后的预设门控模块判断预训练语言大模型收敛后停止训练。通过上述技术方案,实现二段式的大模型微调流程,保证了两个模块的参数训练互不影响,将它们对大模型最终输出的影响和训练流程解耦开来,并且避免发生灾难性遗忘,既拥有大模型原生的通用能力,也拥有了垂直领域的专业能力。并且完成适配器模块的训练后,用于训练的训练集仍被重复利用,作为二阶段门控模块训练的部分数据集,同时,第二训练数据集构建时的训练样本构建的格式和方法也跟一阶段中构建第一训练数据集相同,这样一来,可以构建门控训练样本自动复用及生成机制,并且还利用原生的大语言模型自动化生成等量的非指定领域内语料样本,使两类样本保持1:1的数量比,保证门控模块的泛化性和稳定性。
[0063] 基于上一实施例可知,本申请可以在进行模型微调时前置一个门控模块,先训练adaptor模块,再训练门控模块,保证两个模块训练互不影响,接下来,本实施例中将对上述模块的训练过程进行详细地阐述。参见图2所示,本发明实施例公开了一种具体的大语言模型训练方法,包括:
[0064] 步骤S21、将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并冻结底座大模型的相关参数,以基于第一训练数据集对所述适配器模块中的所述预设P‑Tuning v2模块的embedding编码器参数进行训练。
[0065] 本实施例中将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块后,需要冻结底座大模型的相关参数,以便如图3所示,基于第一训练数据集对适配器模块中的预设P‑Tuning v2模块的embedding编码器参数进行训练。需要指出的是,图3中灰色部分模型参数为冻结参数,不参与训练时的参数更新。并且如图3所示,可以理解的是,Transformer模块是一种基于自注意力机制的神经网络模型,用于处理序列数据,通过编码器和解码器组成,并利用自注意力机制来建立序列中不同位置之间的关联,本实施例通过这个模块作为门控模型的主要部分,通过理解语义信息,动态判断是否激活微调训练完的适配器模块。
[0066] 通过冻结预训练的底座大模型所有相关参数,可以只开放训练P‑Tuning v2相关的“参数前缀”和“embedding编码器”参数。并且训练结束后,以“rouge‑1”、“rouge‑2”、“rouge‑l”、“bleu‑4”作为综合评价指标,评估模型是否收敛。例如,Bleu‑4原理如下所示:
[0067] ;
[0068] 其中c为预测序列长度,r为标签序列长度,pn,即precision n‑gram,表示滑窗大小为n的情况下,预测序列和标签序列文字重合的次数占所有滑窗次数的占比。例如,参见图4中所示的p2,p2即为滑窗大小为2的情况下,预测序列和标签序列文字重合的次数占所有滑窗次数的占比,图4中的线条用于指示预测序列和标签序列之间的文字重合度,绿色线条用于表示此次滑窗下文字重合,红色线条则表示此次滑窗下文字不重合。
[0069] Rouge原理则同上文中滑窗precision的原理一样,rouge‑2即窗口为2的precision值;但rouge‑l则表示最长重合序列的长度,且序列只要求顺序保持一致,位置可以不连续。
[0070] 这样一来,可以通过上述两类指标用来综合体现预测序列和标签序列的相似度,以判断模型训练是否充分拟合。并且通过可控微调的门控机制,利用Transformer作为前置判断模块,动态地识别每一次输入的请求是否需要激活适配器模块,从而决定是否利用垂直领域知识,保证模型的通用能力而非专业能力。
[0071] 步骤S22、在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的所述底座大模型的embedding层与attention层之间嵌入预设门控模块。
[0072] 可以理解的是,传统的做法直接在大模型外部的前置流程中,加入一个判断是否启用适配器模块的二分类模型。但是,将该模型放在大模型外部,而不是模型结构内部,在适配器模块训练时,其下游任务就无法和微调的训练任务类型保持一致,导致效果不稳定、泛化性不强,以及门控机制与微调训练任务不一致问题。因此本实施例在适配器模块训练完成后,可以基于第一训练数据集构建第二训练数据集,并在预训练语言大模型的底座大模型的embedding层与attention层之间嵌入预设门控模块。
[0073] 通过在底座大模型的embedding层与attention层之间,嵌入门控模块,门控模块的词向量编码由大模型原生的embedding层完成,无需独立训练一个embedding模块。由于门控机制本质上还是通过语义去判断是否激活适配器参数的,这样一来,既保证了门控模块可以充分地利用大模型大量预训练语料中得到的语义信息,也节省了计算资源。
[0074] 步骤S23、冻结所述底座大模型和所述适配器模块的相关参数,以基于所述第二训练数据集对所述预设门控模块的自身参数进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。
[0075] 本实施例中,可以冻结底座大模型和适配器模块的相关参数,以基于第二训练数据集对预设门控模块的自身参数进行训练,并在基于训练后的预设门控模块判断预训练语言大模型收敛后停止训练。具体如图5所示,冻结“适配器模块参数”、“底座大语言模型参数”,需要指出的是,包括门控依赖的embedding层也需要冻结,仅训练门控模块自身参数,以上述步骤中一阶段的适配器训练步骤中相同的方法和指标进行训练和评估,直到模型收敛。
[0076] 本实施例中首先将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块后,需要冻结底座大模型的相关参数,以便基于第一训练数据集对适配器模块中的预设P‑Tuning v2模块的embedding编码器参数进行训练。在适配器模块训练完成后,基于第一训练数据集构建第二训练数据集,并在预训练语言大模型的底座大模型的embedding层与attention层之间嵌入预设门控模块。然后冻结底座大模型和适配器模块的相关参数,基于第二训练数据集对门控模块的自身参数进行训练,并在基于训练后的预设门控模块判断预训练语言大模型收敛后停止训练。本实施例通过改造预训练的底座模型,在进入生成环节前,前置一个门控模块,将整个训练流程就变成了二段式,先训练adaptor模块,再训练门控模块,实现模型动态控制激活adaptor参数的目的。并且隐式地将判断激活适配器的流程内嵌在大模型自身结构中,一是保证了两个模块的训练任务类型一致,提高了模型最终的泛化性和准确性;二是避免了训练任务类型不一致导致的重新编写外置模型训练框架和重新进行样本打标的时间;三是嵌入式可以直接复用大模型本身的embedding模块,即利用了大语料的语义参数优势,又降低了训练难度,且减少了显存资源占用。
[0077] 参见图6所示,本申请实施例还公开了一种大语言模型训练装置,包括:
[0078] 数据集创建模块11,用于获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对所述第一初始语料数据进行数据清洗得到目标语料数据,根据所述目标语料数据创建第一训练数据集;
[0079] 适配器训练模块12,用于将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,并基于所述第一训练数据集对嵌入所述预设P‑Tuning v2模块后的适配器模块进行训练;
[0080] 门控嵌入模块13,用于在所述适配器模块训练完成后,基于所述第一训练数据集构建第二训练数据集,并在所述预训练语言大模型的底座大模型中嵌入预设门控模块;
[0081] 门控训练模块14,用于基于所述第二训练数据集对所述预设门控模块进行训练,并在基于训练后的所述预设门控模块判断所述预训练语言大模型收敛后停止训练。
[0082] 本实施例首先获取预设垂直领域内符合预设任务类型的第一初始语料数据,并对第一初始语料数据进行数据清洗得到目标语料数据,根据目标语料数据创建第一训练数据集;通过将预设P‑Tuning v2模块嵌入预训练语言大模型的适配器模块,基于第一训练数据集对嵌入预设P‑Tuning v2模块后的适配器模块进行训练,在适配器模块训练完成后,基于第一训练数据集构建第二训练数据集,并在预训练语言大模型的底座大模型中嵌入预设门控模块;然后基于第二训练数据集对预设门控模块进行训练,并在基于训练后的预设门控模块判断预训练语言大模型收敛后停止训练。这样一来,通过改造预训练的底座模型,在进入生成环节前,前置一个门控模块,整个训练流程就变成了二段式,即先训练adaptor模块,再训练门控模块,保证了两个模块的参数训练互不影响,将它们对大模型最终输出的影响和训练流程解耦开来,方便对它们单独进行训练优化,并且避免发生灾难性遗忘,使输出结果更稳定、实现泛化的目的。
[0083] 在一些具体实施例中,所述数据集创建模块11,具体包括:
[0084] 样本生成子模块,用于根据所述目标语料数据以json数据格式创建初始训练数据集,并基于预设样本生成规则对所述初始训练数据集中的序列进行处理后生成目标样本,以基于所述目标样本构建所述第一训练数据集。
[0085] 在一些具体实施例中,所述样本生成子模块,具体包括:
[0086] 样本生成单元,用于若所述目标语料数据为QA对,则将所述QA对中的聊天历史作为所述序列的history值,并将所述history值拼接到所述序列的prompt之前,以生成所述目标样本。
[0087] 在一些具体实施例中,所述适配器训练模块12,还包括:
[0088] 适配器训练单元,用于冻结所述底座大模型的相关参数,以基于所述第一训练数据集对所述适配器模块中的所述预设P‑Tuning v2模块的embedding编码器参数进行训练。
[0089] 在一些具体实施例中,所述门控嵌入模块13,具体包括:
[0090] 第一数据集构建单元,用于获取预设垂直领域外的第二初始语料数据,并利用未嵌入所述适配器模块的底座大模型基于所述第二初始语料数据生成第三训练数据集;
[0091] 第二数据集构建单元,用于基于所述第一训练数据集和所述第三训练数据集根据预设比例构建所述第二训练数据集。
[0092] 在一些具体实施例中,所述门控训练模块14,还包括:
[0093] 门控训练单元,用于冻结所述底座大模型和所述适配器模块的相关参数,以基于所述第二训练数据集对所述预设门控模块的自身参数进行训练。
[0094] 在一些具体实施例中,所述门控嵌入模块13,具体包括:
[0095] 门控嵌入单元,用于在所述预训练语言大模型的所述底座大模型的embedding层与attention层之间嵌入所述预设门控模块。
[0096] 进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
[0097] 图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的大语言模型训练方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
[0098] 本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0099] 另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
[0100] 其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的大语言模型训练方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
[0101] 进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的大语言模型训练方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0102] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0103] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0104] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0105] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0106] 以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。