本发明涉及代码生成,尤其涉及一种基于自适应知识蒸馏的代码生成模型训练方法。
背景技术:
1、代码生成任务在软件工程领域中具有重要意义,旨在通过自动生成代码来提高开发效率和代码质量。随着大型语言模型(llms)的发展,如gpt-4、opt和llama,自然语言处理(nlp)任务取得了显著进展。然而,模型尺寸的增加也带来了高昂的计算成本和显著的推理延迟,限制了其在实际应用中的广泛部署。
2、传统上,深度学习模型通常在云计算平台上运行,通过网络将结果传递给智能设备。这种方式在某些情况下是可行的,但在需要低延迟或高数据隐私的应用场景中并不是最佳选择。此外,云与设备之间不可预测的网络连接也可能带来重大挑战。因此,在本地设备上运行深度学习系统成为了一个重要需求。知识蒸馏作为一种有效的模型压缩方法,通过让较小的学生模型模仿大型教师模型的行为,能够在尽可能保持性能的同时显著缩小模型大小,适应内存和功率有限的资源受限设备,实现高效的本地部署。
技术实现思路
1、针对现有技术中深度学习模型在代码生成任务上面临的挑战,如高昂的计算成本、显著的推理延迟以及在资源受限设备上部署的困难。本发明解决的技术问题是如何实现更高效、更准确且更适应资源受限环境的代码生成模型。
2、为解决上述问题,本发明提出了一种基于自适应知识蒸馏的代码生成模型训练方法,旨在通过结合正向kl散度和反向kl散度,提高学生模型在代码生成任务中的性能,同时实现模型的高效压缩和在资源受限设备上的部署。
3、一种基于自适应知识蒸馏的大模型轻量化方法,包括如下步骤:
4、s101:获取训练数据集,包含指令和输入文本,并将其格式化为模板格式。
5、s102:将上述模板同时输入学生模型和教师模型生成预测结果。
6、s103:对学生模型输出结果进行软化处理,使用温度参数t进行softmax处理,得到软化后的概率分布qθ。
7、s104:对教师模型输出结果进行软化处理,使用相同的温度参数t进行softmax处理,得到软化后的概率分布p。
8、s105:对学生模型及教师模型的概率分布进行归一化,得到归一化后的教师模型逻辑值和学生模型逻辑值
9、s106:根据教师模型和学生模型的软化概率分布,结合反向kl散度及正向kl散度,计算自适应知识蒸馏损失
10、s107:将计算得到的自适应损失函数反向传递给学生模型,使用反向传播算法计算损失函数相对于学生模型参数的梯度。
11、s108:使用优化算法adam更新学生模型的参数。
12、s109:在更新学生模型参数后,进行一次前向传递,以计算学生模型在当前批量数据上的预测输出,并计算新的损失值,以评估模型在训练过程中的收敛性和稳定性。
13、s110:重复执行上述步骤s105至s108,直至学生模型在验证集上的性能达到预期的效果或训练达到预设的最大迭代次数。训练结束后,最后输出的数据是经自适应知识蒸馏训练后的学生模型的最终参数以及训练数据。最终参数包括模型的权重和偏置值训练,数据包括训练日志信息、训练损失、验证损失和准确率,用于评估模型性能和训练过程的稳定性。
14、s111:将输入数据按s101方法格式化为模板格式,然后将格式化后的输入数据输入到训练好的学生模型中,生成预测结果。
15、进一步的,所述s101模板内容如下:
16、prompt 1:{instruction}(input)\nwrite your response here.
17、prompt 2:{instruction}(input)\n
18、prompt 3:below is an instruction that describes a task.write aresponse that appropriately completes the request.\n{instruction}\n{input}\n###response:
19、进一步的,所述s103学生模型软化后的概率分布计算公式如下:
20、
21、其中,为学生模型在位置t中第i个词的logits,通过软化学生模型的概率分布,可以得到学生模型的logits,定义为qθ(yt|y<t,x)。其中,x表示上下文,yt表示学生模型在位置t预测的词的概率,yt∈{υ1,υ2,…,υv},v是模型词汇表的大小,υv表示学生模型在位置t预测的第v个词的概率,温度参数t控制软化的程度,j表示所有可能的词。为学生模型在位置t对所有可能词的logit值的指数和。较高的t值会使得概率分布更加平滑,有助于知识的传递。
22、进一步的,所述s104教师模型软化后的概率分布计算公式如下:
23、
24、其中,为教师模型在位置t中第i个词的logits,通过软化教师模型的概率分布,可以得到学生模型的logits值p(y′t|y′<t,x),其中,x表示上下文,y′t表示教师模型在位置t预测的词的概率,y′t∈{υ′1,υ′2,…,υ′v},v是模型词汇表的大小,υ′v表示教室模型在位置t预测的第v个词的概率,温度参数t控制软化的程度,j表示所有可能的词。为教师模型在位置t对所有可能词的logit值的指数和,较高的t值会使得概率分布更加平滑,有助于知识的传递。
25、进一步的,所述s105逻辑值和学生模型逻辑值的计算公式如下:
26、
27、其中,v(xt)为xt在词汇表中的位置,表示教师模型中xt的logit值,使用表示对进行归一化后的logit值,表示学生模型中xt的logit值,表示对进行归一化后的logit值,xt表示上下文x中位置t的词。
28、进一步的,所述s106反向kl散度(lrkd)和正向kl散度(lfkd)计算公式如下:
29、
30、其中,表示p和qθ的反向kl散度,表示p和qθ。∑表示对序列中每个时间步t的概率分布进行求和,通过计算在给定上下文x和先前时间步的y<t条件下,p(y|y<t,x)与qθ(y|y<t,x)之间的差异,并对所有时间步t进行累加得到的。则通过计算在给定上下文x和先前时间步的y<t条件下,学生模型分布qθ(y|y<t,x)与教师模型分布p(y|y<t,x)之间的差异,并对所有时间步y进行累加得到的。
31、进一步的,所述s106自适应损失函数的计算方法如下:
32、
33、其中,掩码mt是标记归一化的logit值的差异,超参数μ是阈值,α为样本数据中标记归一化的logit值的差异值大于阈值的比例,lm[i]表示第i条数据,是否采用损失函数。当lm[i]为1,则表示对样本i使用损失函数,反之则不采用。是对所有数据点在所有时间步上的误差进行加权求和,然后将这个总和除以所有数据点序列长度的总和,得到的一个按序列长度加权的平均误差。
34、与现有技术相比,本发明至少具有如下有益效果:
35、1.本发明通过自适应地结合正向kl散度和反向kl散度,提高了学生模型在代码生成任务中的表现,尤其是在处理复杂分布时,能够更有效地学习教师模型的行为。
36、2.通过自适应知识蒸馏策略,本发明实现了模型的高效压缩和部署,降低了计算成本和推理延迟,使得模型更适合在资源受限的设备上运行。
37、3.实验结果表明,本发明的方法在humaneval和mbpp测试集上取得了显著的性能提升,证明了其在实际应用中的有效性和优越性。
1.一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:包括如下步骤:
2.如权利要求1所述的一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:所述s103学生模型软化后的概率分布计算公式如下:
3.如权利要求1所述的一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:所述s104教师模型软化后的概率分布计算公式如下:
4.如权利要求1所述的一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:所述s105中,教师模型逻辑值和学生模型逻辑值的计算公式如下:
5.如权利要求1所述的一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:所述s106反向kl散度lrkd和正向kl散度lfkd计算公式如下:
6.如权利要求1所述的一种基于自适应知识蒸馏的代码生成模型训练方法,其特征在于:所述s106自适应损失函数对批量大小为i的数据中的第i条数据的计算方法如下: