本发明一般地涉及计算机。更具体地,本发明涉及一种用于训练深度神经网络模型的方法、和执行前述方法的电子设备和计算机可读存储介质。
背景技术:
1、本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
2、近年来,深度神经网络(deep neural network,简称dnn)在许多ai应用中取得了显著的成功。然而,训练dnn会消耗大量能量。此外,dnn训练的巨大能源消耗会显著增加碳排放,从而对全球气候产生负面影响。因此,迫切需要降低dnn训练的能耗。
3、在dnn训练中,线性层涉及的乘法累加(multiple accumulate,简称mac)中大量使用耗能的全精度(32bit floating point,fp32)乘法,使得线性层能耗占总能耗的绝大部分(大约超过90%)。具体地,在机器训练过程中,执行前述全精度乘法累加运算的乘累加运算器需要支持高位宽的乘法运算。其中,高位宽乘法运算非常耗能(例如fp32乘法的能耗大约是fp16乘法的4倍),且乘法操作本身的能耗就高于加法等操作。因此,现有利用乘累加运算器进行全精度乘法累加运算来实现dnn的训练存在能耗过高的问题。对此,目前还没有有效的解决方案。
技术实现思路
1、为了至少解决上述背景技术部分所描述的技术问题,本发明提出了一种用于训练深度神经网络模型的方案。利用本发明的方案,能够有效降低训练能耗。
2、鉴于此,本发明在如下的多个方面提供解决方案。
3、本发明的第一方面提供了一种用于训练深度神经网络模型的方法,所述方法包括:获取深度神经网络模型的线性层在前向传播期间和反向传播期间所涉及的全精度训练参数;对所述全精度训练参数进行自适应逐层缩放量化处理,以得到量化后的训练参数;以及在对所述深度神经网络模型的训练过程中,将每一所述线性层中针对所述全精度训练参数的全精度乘法累加处理操作,替换为对所述量化后的训练参数的加法处理操作和符号翻转处理操作,以实现对所述深度神经网络模型的低能耗训练。
4、在一些实施例中,其中所述深度神经网络模型的线性层包括卷积层和全连接层,获取深度神经网络模型的线性层在前向传播期间和反向传播期间所涉及的全精度训练参数包括:获取所述深度神经网络模型的卷积层和全连接层在前向传播期间所涉及的权重参数和激活参数;以及获取所述深度神经网络模型的卷积层和全连接层在反向传播期间所涉及的激活值梯度参数。
5、在一些实施例中,对所述全精度训练参数进行自适应逐层缩放量化处理以得到量化后的训练参数包括:获取所述全精度训练参数对应的逐层缩放因子和初始缩放数据;以及基于所述逐层缩放因子和所述初始缩放数据,确定所述量化后的训练参数。
6、在一些实施例中,确定所述量化后的训练参数包括:利用所述逐层缩放因子对所述全精度训练参数进行缩放处理,得到所述初始缩放数据;对所述初始缩放数据进行二次幂pot量化处理,以得到所述全精度训练参数的实际量化数据,并确定所述实际量化数据为所述量化后的训练参数。
7、在一些实施例中,其中利用以下公式对所述全精度训练参数进行缩放处理,以得到所述初始缩放数据:
8、其中f={f1,f2,…,fn};
9、
10、其中,α为逐层缩放因子,f为任一所述全精度训练参数且其数据范围限制到b位pot数的表示范围f1~fn表示f中的任一数值,fscaled表示所述初始缩放数据。
11、在一些实施例中,其中所述方法还包括:将所述逐层缩放因子四舍五入至最接近的pot数字以得到目标整数;以及在获取所述初始缩放数据过程中,将所述逐层缩放因子与所述全精度训练参数之间的乘法运算替换为所述目标整数与所述全精度训练参数的指数部分之间的加法运算。
12、在一些实施例中,其中根据以下公式对所述初始缩放数据进行二次幂pot量化处理:
13、
14、e=round(log2(|f|));
15、
16、其中,表示实际量化数据,f表示任一所述全精度训练参数中的任一数值,sign()表示符号函数,round()表示按照指定位数对数值进行四舍五入处理的函数,e表示函数round()的返回值,b表示数字的位宽,p表示所述初始缩放数据量化到pot数据p。
17、在一些实施例中,其中所述全精度训练参数包括权重参数,所述方法还包括:对所述权重参数进行权重偏差校正处理,以对校正后的权重参数实施所述自适应逐层缩放量化处理。
18、在一些实施例中,其中所述全精度训练参数包括激活参数,所述方法还包括:对所述激活参数进行裁剪处理,以对裁剪后的激活参数实施所述自适应逐层缩放量化处理。
19、在一些实施例中,其中所述量化后的训练参数包括符号数据块和整数数据块,将全精度乘法累加处理操作替换为加法处理操作和符号翻转处理操作包括:对所述整数数据块执行整数位加法运算;对所述符号数据块执行符号翻转运算;将经整数位加法运算得到数据和经符号翻转运算得到的数据进行结合,并将其中带符号的数据累加至满足预定数据格式的目标数据;以及对所述目标数据进行移位处理,并输出经移位处理后的目标数据,以实现将所述全精度乘法累加处理操作替换为所述加法处理操作和所述符号翻转处理操作。
20、在一些实施例中,其中利用加法器来执行所述整数位加法运算以及利用异或门来执行所述符号翻转运算。
21、本发明的第二方面提供了一种电子设备,包括:处理器;以及存储器,其存储有用于训练深度神经网络模型的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行根据前文第一方面或以及下文多个实施例中所述的方法。
22、本发明的第三方面提供了一种计算机可读存储介质,包括用于训练深度神经网络模型的程序指令,当所述程序指令由处理器执行时,使得实现根据前文第一方面以及下文多个实施例中的方法。
23、利用本发明所提供的方案,通过自适应逐层缩放量化技术对深度神经网络模型的线性层在前向传播期间和反向传播期间所涉及的全精度训练参数进行量化处理,以基于量化后的训练参数来支持在神经网络的训练全流程(包括前向传播和后向传播)中,将全部线性层中的全精度乘法累加处理替换为加法处理和符号翻转处理。可以看出,本发明的方案能够在神经网络训练计算全流程中,将耗能高的高位宽全精度训练参数量化为耗能低的低位宽的训练参数以及用低能耗的加法操作和符号翻转操作来替代高能耗的乘法操作,由此有效降低深度神经网络训练过程中的能耗,同时确保精度损失较小。
1.一种用于训练深度神经网络模型的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,其中所述深度神经网络模型的线性层包括卷积层和全连接层,获取深度神经网络模型的线性层在前向传播期间和反向传播期间所涉及的全精度训练参数包括:
3.根据权利要求2所述的方法,其特征在于,对所述全精度训练参数进行自适应逐层缩放量化处理以得到量化后的训练参数包括:
4.根据权利要求3所述的方法,其特征在于,确定所述量化后的训练参数包括:
5.根据权利要求4所述的方法,其特征在于,其中利用以下公式对所述全精度训练参数进行缩放处理,以得到所述初始缩放数据:
6.根据权利要求5所述的方法,其特征在于,其中所述方法还包括:
7.根据权利要求4所述的方法,其特征在于,其中根据以下公式对所述初始缩放数据进行二次幂pot量化处理:
8.根据权利要求2所述的方法,其特征在于,其中所述全精度训练参数包括权重参数,所述方法还包括:
9.根据权利要求2所述的方法,其特征在于,其中所述全精度训练参数包括激活参数,所述方法还包括:
10.根据权利要求1至9中任一项所述的方法,其特征在于,其中所述量化后的训练参数包括符号数据块和整数数据块,将全精度乘法累加处理操作替换为加法处理操作和符号翻转处理操作包括:
11.根据权利要求10所述的方法,其特征在于,其中,利用加法器来执行所述整数位加法运算以及利用异或门来执行所述符号翻转运算。
12.一种电子设备,其特征在于,包括:
13.一种计算机可读存储介质,其特征在于,包括用于训练深度神经网络模型的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求1-11的任意一项所述的方法。