System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种将适配器注入预训练模型的参数高效化方法和装置制造方法及图纸_技高网

一种将适配器注入预训练模型的参数高效化方法和装置制造方法及图纸

技术编号:40456989 阅读:10 留言:0更新日期:2024-02-22 23:13
本发明专利技术涉及一种将适配器注入预训练模型的参数高效化方法和装置,通过将一个可以用于适配各种下游任务的适配器模块注入预训练模型,所述适配器模块设置在靠近输出端,由于在训练过程中,除适配器层外的所有参数会被冻结,而适配器模块的参数靠近输出端,这样使得反向传播的距离大大减小,不仅使得计算梯度的时间大大减小,而且用于存储梯度信息所消耗的显存也会大大减小。从而使得本发明专利技术方法能够以极低的成本去适配下游任务,解决以往参数高效化方法虽然可以极大地减少参数,但其训练的时间和硬件成本并没有大幅度减小的问题。

【技术实现步骤摘要】

本专利技术涉及自然语言处理领域,尤其涉及一种将适配器注入预训练模型的参数高效化方法和装置


技术介绍

1、在自然语言处理领域,解决各种任务主要依赖于预训练模型。在同种类型的预训练模型中,预训练模型参数规模越大,其解决任务能力便会越强,所以研究人员在训练模型的时候总是尽可能在一定成本以内选择参数规模最大的预训练模型。然而随着参数量越来越大,原有训练大型预训练模型方法的成本对于一般企业或者个人是负担不起的。大型预训练模型的能力是小型的模型所不能相比的,于是找到一种低成本地使用大型预训练模型的方法是必要的。

2、低成本使用大型预训练模型的主要思路是将模型进行各个维度的压缩,针对不同维度压缩又细分为以下几种方法:剪枝、知识蒸馏、量化、低秩分解和参数高效化。

3、剪枝方法是删除模型内部不必要或者冗余的组件来减小模型的大小,其根据剪枝目标不同又分为结构化剪枝和非结构化剪枝。前者为对网络架构进行剪枝,后者则是对网络中的参数进行剪枝;蒸馏是将大模型作为老师去教一个后续使用的小模型,旨在将大模型的性能和泛化能力迁移到一个小模型上面;量化则是将原有浮点数类型的参数用更低精度的数据类型进行代替。根据量化时间不同又分为量化感知训练(qat)、量化感知微调(qaf)以及训练后量化(ptq);低秩分解则是原有的权重矩阵分解为两个更低维度矩阵的乘积,其往往与其他集中低成本使用预训练模型的方法搭配使用。参数高效化是目前主流的低成本微调预训练模型的方法。其主要思路是将原有预训练模型所有参数的梯度关闭,在下游任务训练时打开一些参数用于更新,其他与原有模型微调方式保持不变。其中按照指定参数类型不同,可以将参数高效化方法分为三种类型:添加一部分参数、指定一部分参数、将部分参数重新定义。具体如下:

4、1、传统参数高效化方法中,新添加一部分参数方法主要是将原有模型的所有参数的梯度关闭,然后在隐藏向量中或者原有架构之间新增加参数:比如在输入端的词向量前拼接一部分可用于训练的参数、在预训练模型的注意力机制模块后面增加一个自适应模块用于训练等。

5、2、传统参数高效化中,指定一部分参数方法则是指定部分预训练模型的参数用于训练,未指定的参数则将其梯度关闭。比如:bitfit将预训练模型所有网络的权重冻结住,在训练时候只更新所有网络的偏差;也可以只微调预训练模型中最后两层的参数。

6、3、传统参数高效化中,将部分参数重新定义方法则是将原有一个矩阵参数的更新变为两个低维度矩阵的更新。比如:lora将预训练模型注意力机制中的q、k矩阵的更新变为两个更低维度矩阵的乘积的更新。

7、上述三种传统方法全部忽略了反向传播距离对于训练成本的影响,将研究重点放在如何使用更少的参数上。该方法通过限制选择参数的范围以减少反向传播距离,从而相较于以上方法极大地减小了训练成本。该方法通过实验验证,添加部分反向传播距离很短的参数不会对训练速度造成影响,反而会有助于模型更快地收敛和更好的性能。


技术实现思路

1、针对现有技术之不足,本专利技术提出一种将适配器注入预训练模型的参数高效化方法,所述参数高效化方法通过将一个用于适配各种下游任务的适配器模块注入预训练模型,所述适配器模块设置在靠近输出端,以减小反向传播的距离,解决了现有技术由于反向传播距离过长导致网络参数量即使缩减很小,但其训练的时间和硬件成本并没有大幅度减小的问题,所述参数高效化方法具体包括:

2、步骤1:准备训练任务所需的训练数据集,训练任务包括不同类型的分类任务,训练数据集通过自行采集获取或者使用公共数据集;

3、步骤2:将训练数据集中的原始句子s与带掩码的提示模板p结合组成适用于提示学习的输入数据input,并根据下游任务不同设置不同的答案空间映射v,并且将下游任务训练集和测试集的答案替换为所述答案空间映射v中的真实标签l,便将传统的分类任务变为预测某个单词的概率大小的任务;

4、步骤3:设置大型语言预训练模型的模型参数,初始化大型语言预训练模型参数,大型语言模型参数至少包括学习率、随机失活和训练轮数以及适配器插入模型的层数;

5、步骤4:首先将预训练模型的模型参数的梯度取消,自定义一个适配器模块并打开该模块的梯度,同时对适配器模块的输入和输出维度进行限制,具体设置为预训练模型的隐藏层维度;

6、步骤5:将步骤2所得的输入数据input、位置信息pos以及句子信息type送入词嵌入层获得词嵌入向量hin;

7、步骤6:将由步骤5获取的所述词嵌入向量hin送入步骤3初始化好后的预训练模型中,所述预训练模型为包括24层的transformer模型,将输入数据input通过预训练模型前16层的transformer模型得到的隐藏向量h,在原来隐藏向量h的基础上加入自定义设置的所述适配器模块得到新的隐藏向量hnew,将新的隐藏向量hnew代替原有的隐藏向量h继续输入剩余的8层transformer模型,得到最后一层隐藏向量hlast;

8、步骤7:将步骤5得到的最后一层隐藏向量hlast以及根据步骤2中的所述提示模板p中的[mask]的位置计算出hmask,将两者结合得到最终隐藏向量h;

9、步骤8:将最终隐藏向量h送入掩码语言模型头中,得到最后的预测结果lp;

10、步骤9:通过交叉熵损失计算所述预测结果lp和步骤2中的真实标签l的差值;

11、步骤10:不断迭代步骤5到步骤9,当所述交叉熵损失值收敛时停止训练,保存训练好的适配器模块;

12、步骤11:训练好的适配器模块即为当前预训练模型在该训练数据集子任务下的适配器,后续使用预训练模型用于该任务时,只需要将训练好的适配器载入预训练模型中即可。

13、一种将适配器注入预训练模型的参数高效化装置,所述参数高效化装置改变以往适配器向下投影的瓶颈层架构,设置在靠近输出的位置,减少了反向梯度的距离,所述参数高效化装置包括:

14、预训练模型和注入预训练模型的适配器,所述适配器设置在所述预训练模型第n层和第n+1层之间,包括向上投影模块、高斯误差线性单元激活模块、向下投影模块和层归一化模块,所述上投影模块用于将隐藏向量向高维度做线性变换,所述高斯误差线性单元激活模块用于在高维度做更新,所述向下投影模块用于将隐藏向量从高维度恢复为原维度,所述层归一化模块用于将参数进行归一化。

15、与现有技术相比,本专利技术的有益效果在于:

16、通过用一个适配器层去对预训练模型靠近输出的隐藏向量做下游任务的适配。由于在训练过程中,除适配器层外的所有参数会被冻结,而适配器层的参数靠近输出端。这样使得反向传播的距离大大减小,不仅使得计算梯度的时间大大减小,而且用于存储梯度信息所消耗的显存也会大大减小。从而使得该方法以极低地成本去适配下游任务。同时解决了以往参数高效化方法虽然可以极大地减少参数,但训练成本缩减达不到预期的问题。

本文档来自技高网...

【技术保护点】

1.一种将适配器注入预训练模型的参数高效化方法,其特征在于,所述参数高效化方法通过将一个用于适配下游任务的适配器模块注入预训练模型,所述适配器模块设置在靠近输出端,以减小反向传播的距离,解决了现有技术由于反向传播距离过长导致网络参数量即使缩减很小,但其训练的时间和硬件成本并没有大幅度减小的问题,所述参数高效化方法具体包括:

2.一种将适配器注入预训练模型的参数高效化装置,其特征在于,所述参数高效化装置改变以往适配器向下投影的瓶颈层架构,设置在靠近输出的位置,减少了反向梯度的距离,所述参数高效化装置包括:

【技术特征摘要】

1.一种将适配器注入预训练模型的参数高效化方法,其特征在于,所述参数高效化方法通过将一个用于适配下游任务的适配器模块注入预训练模型,所述适配器模块设置在靠近输出端,以减小反向传播的距离,解决了现有技术由于反向传播距离过长导致网络参数量即使缩减很小,但其训练的时...

【专利技术属性】
技术研发人员:栗荣成冯翱高正杰吴锡雷超李林襁
申请(专利权)人:成都信息工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1