分布式部署模型的量化方法、装置、设备和介质与流程

未命名 09-13 阅读:66 评论:0


1.本公开涉及人工智能领域,具体涉及深度学习、分布式训练和模型量化等技术领域,尤其涉及一种分布式部署模型的量化方法、装置、设备和介质。


背景技术:

2.随着计算机技术和网络技术的发展,神经网络模型的应用越来越广泛,与此同时,也对神经网络模型的精度提出越来越高的要求。为了满足精度要求,神经网络模型通常具有大规模的参数量,对存储空间和计算资源的需求均较大,这给神经网络模型的部署和应用带来了巨大挑战。
3.为了应对该巨大挑战,多种压缩模型的方法应运而生。但模型的压缩不可避免的会带来模型精度的损失。


技术实现要素:

4.本公开旨在提供一种分布式部署模型的量化方法、装置、设备和介质,以提高量化得到的模型的精度。
5.根据本公开的第一个方面,提供了一种分布式部署模型的量化方法,包括:对于部署的模型所包括的多个网络层,确定根据第一量化精度量化多个网络层中每个网络层的损失值,作为每个网络层的量化损失值;将多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使所述目标节点根据接收的量化损失值确定多个网络层中的目标网络层;以及根据第一量化精度量化目标网络层的网络参数。
6.根据本公开的第二个方面,提供了一种分布式部署模型的量化装置,包括:第一损失确定模块,用于对于部署的模型所包括的多个网络层,确定根据第一量化精度量化多个网络层中每个网络层的损失值,作为每个网络层的量化损失值;第一损失发送模块,用于将多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使所述目标节点根据接收的量化损失值确定多个网络层中的目标网络层;参数量化模块,用于根据第一量化精度量化目标网络层的网络参数。
7.根据本公开的第三个方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的分布式部署模型的量化方法。
8.根据本公开的第四个方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的分布式部署模型的量化方法。
9.根据本公开的第五个方面,提供了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令存储于可读存储介质和电子设备其中至少之一上,所述计算机程序/指令在被处理器执行时实现本公开提供的分布式部署模型的量化方法。
10.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特
征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
11.附图用于更好地理解本方案,不构成对本公开的限定。其中:
12.图1是根据本公开实施例的分布式部署模型的量化方法、装置的应用场景示意图;
13.图2是根据本公开实施例的分布式部署模型的量化方法的流程示意图;
14.图3是根据本公开实施例的确定根据第一量化精度量化每个网络层的损失值的原理示意图;
15.图4是根据本公开实施例的分布式部署模型的量化方法的实现原理图;
16.图5是根据本公开实施例的确定自注意力层的输入激活值的缩放因子的原理示意图;
17.图6是根据本公开实施例的分布式部署模型的量化方法的应用示意图;
18.图7是根据本公开实施例的分布式部署模型的量化装置的结构框图;以及
19.图8是用来实施本公开实施例的分布式部署模型的量化方法的电子设备的框图。
具体实施方式
20.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
21.随着深度学习技术的发展,神经网络模型的参数量越来越大,例如生成式预训练transformer模型(generative pre-trained transformer)的最大参数量可以达到上亿级别。如此大规模的模型的部署是一个巨大的挑战,一般需要使用多卡a100的gpu服务器才可以进行该如此大规模模型的分布式部署和应用。
22.为了加快该些大规模模型的落地部署,多种压缩模型的方法应运而生。多种压缩模型的方法中,应用最广泛的模型量化方法可以分为量化感知训练(quantization aware training,简称为qat)方法和训练后量化(post training quantization,简称为ptq)方法。其中,qat方法需要对全精度模型进行微调训练,耗时和周期较长。ptq方法又称为离线量化方法,该方法运行模型前向推理,需要收集待量化层的截断值范围,并根据此截断值来将模型中的相应运算转换成低比特运算,同时模型的网络参数也会转换成低比特参数。采用ptq方法可以快速的产出量化模型,且由于模型无需训练,因此只需要少量的样本作为校准数据参与量化过程。但ptq方法会带来模型精度的损失。
23.为了解决上述问题,本公开提供了一种分布式部署模型的量化方法、装置、设备和介质。以下先结合图1对本公开提供的方法和装置的应用场景进行描述。
24.图1是根据本公开实施例的分布式部署模型的量化方法、装置的应用场景示意图。
25.如图1所示,该实施例的应用场景100可以包括分布式系统110,分布式系统110具有多个计算节点111~113,该多个计算节点111~113分布式地部署有包括多个网络层的神经网络模型120。具体地,可以将神经网络模型120的每个网络层切分为多个网络块,并将多个网络块一一对应的部署在多个计算节点111~113上,由多个计算节点111~113对各自部
署的网络块进行训练,得到训练后的神经网络模型。
26.在一实施例中,该应用场景100中,还可以包括主节点130,该主节点130可以为分布式系统110中设置的多个计算节点中的任一计算节点,也可以为独立于分布式系统110的节点。该实施例可以经由主节点130与多个计算节点111~113之间的通信交互,确定量化配置信息,并由多个计算节点111~113根据量化配置信息对各自部署的网络块进行量化处理,以实现对训练后的神经网络模型的量化。该实施例可以通过导出量化处理后的网络块,得到预测模型140。
27.该预测模型140的网络参数相较于神经网络模型120而言,对计算源和存储空间的需求明显减小。例如,该预测模型140可以部署在计算能力有限的电子设备150中,以由电子设备150采用部署的预测模型140对线上产生的数据进行处理。
28.例如,神经网络模型120可以为文本处理模型、图像处理模型或语音处理模型等。具体地,该神经网络模型120可以为生成类语言模型、图像生成模型或语音生成模型等生成类模型,本公开对此不做限定。
29.需要说明的是,本公开提供的分布式部署模型的量化方法可以由分布式系统110中的任一计算节点执行。相应地,本公开提供的分布式部署模型的量化装置可以设置在分布式系统110中的任一计算节点中。
30.应该理解,图1中分布式系统110包括的计算节点的数目和类型仅仅是示意性的。根据实现需要,分布式系统110可以具有任意数目和类型的计算节点。
31.以下将结合图2~图6对本公开提供的分布式部署模型的量化方法进行详细描述。
32.图2是根据本公开实施例的分布式部署模型的量化方法的流程示意图。
33.如图2所示,该实施例的分布式部署模型的量化方法200可以包括操作s210~操作s230。该方法200例如可以由前述多个计算节点中的每个计算节点执行。
34.在操作s210,对于部署的模型所包括的多个网络层,确定根据第一量化精度量化多个网络层中每个网络层的损失值,作为每个网络层的量化损失值。
35.根据本公开的实施例,第一量化精度例如可以为int8对应的量化精度,也可以为int4等格式对应的量化精度。
36.该实施例可以根据第一量化精度,确定量化后网络层中网络参数的取值上限q
max
和取值下限q
min
。例如,对于int8对应的量化精度,确定的取值上限q
max
可以为127,取值下限q
min
可以为-128。同时,可以确定每个网络层中网络参数的取值上限t
max
和取值下限t
min
。随后,可以根据取值上限q
max
、取值下限q
min
、每个网络层中网络参数的取值上限t
max
和取值下限t
min
,确定每个网络层的网络参数的缩放因子s。随后,根据该缩放因子对该每个网络层进行预量化,即将每个网络层的网络参数转换为int8等格式的参数,得到与每个网络层对应的预量化后网络层。可以理解的是,可以采用对称量化方法或非对称量化方法来进行预量化。
37.例如,缩放因子s可以采用以下公式(1)来计算。
[0038][0039]
例如,若采用非对称量化方法,则可以采用以下公式(2)~(4)来对每个网络层的网络参数进行预量化。
[0040][0041][0042][0043]
其中,q表示量化后的定点数,t表示网络参数,z表示的是每个网络层的网络参数的偏移量,即浮点数形式的网络参数映射到定点数之后,浮点数0对应的定点值。s为缩放因子,即浮点数与定点数之间的比例关系。round( )函数表示的是四舍五入运算,clamp( )函数的作用是将值限制在上限值与下限值之间。可以理解的是,在采用对称量化方法进行运算时,上述的z值的取值为0。
[0044]
随后,该实施例可以采用该预量化后网络层替代计算节点部署的模型中的每个网络层,得到替换后模型。可以采用计算节点部署的模型和替换后模型对同一个预定校准数据进行处理,得到两个处理结果。该实施例可以根据两个处理结果的差异,来确定根据第一量化精度量化该每个网络层的损失值。例如,两个处理结果的差异可以与损失值正相关。例如,对于文本生成类模型,处理结果可以为生成的预测文本;对于图像生成类模型,处理结果可以为生成的预测图像。
[0045]
例如,预定校准数据可以具有实际处理结果的标签,该实施例可以将两个处理结果中的每个处理结果与实际处理结果进行比较,得到两个比较结果。例如,可以采用交叉熵损失函数等来计算每个处理结果与实际处理结果的比较结果。随后,采用两个比较结果的差值来表示每个网络层的损失值。
[0046]
在操作s220,将多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使目标节点根据接收的量化损失值确定多个网络层中的目标网络层。
[0047]
可以理解的是,目标节点例如可以为多个计算节点投票选择的主节点,或者,可以为多个计算节点中的任意一个节点。设定神经网络模型包括m个网络层,则每个计算节点可以通过操作s210得到m个网络层的m个量化损失值,并将该m个量化损失值发送给目标节点。为了便于区分不同网络层的量化损失值,发送给目标节点的每个量化损失值可以携带有每个网络层的标识信息。
[0048]
如此,若多个计算节点的个数为p个,则目标节点可以接收到p*m个量化损失值。该p*m个量化损失值中,包括每个网络层的p个量化损失值。目标节点例如可以从每个网络层的p个量化损失值的平均值或最大值等作为该每个网络层的目标量化损失值。随后,目标节点例如可以从多个网络层中选择目标量化损失值较大的预定比例的网络层,作为目标网络层。或者,目标节点可以将每个网络层的目标量化损失值与预定损失值进行比较。从多个网络层中选择目标量化损失值小于预定损失值的网络层,作为目标网络层。其中,预定比例和预定损失值可以根据实际需求进行设定,本公开对此不做限定。
[0049]
在目标节点确定了目标网络层后,将目标网络层作为需要量化的网络层,并向多个计算节点发送指示目标网络层的指示信息,以使得多个计算节点执行操作s230。
[0050]
在操作s230,根据第一量化精度量化目标网络层的网络参数。
[0051]
可以理解的是,量化目标网络层的网络参数的过程与上文描述的预量化网络层的原理类似。例如,若目标网络层的网络参数的取值为float32格式的取值,第一量化精度为int8格式对应的精度,则可以通过将目标网络层的网络参数由float32转换为int8,实现对目标网络层的网络参数的量化。
[0052]
本公开实施例的方法,通过对神经网络模型中每个网络层进行单独量化分析,并根据量化分析的结果来选择目标量化层进行量化,可以在很大程度上保证精度无损的量化模型。再者,通过由各计算节点对各自部署的模型中的每个网络层进行单独量化分析,由目标节点来汇总量化损失并确定目标网络层,可以提高量化分析效率。
[0053]
根据本公开的实施例,对于除目标网络层外的其他网络层,例如可以跳过对该些其他网络层的量化,即不对该些其他网络层进行量化,以此提高量化后模型的精度。或者可以根据精度较高的第二量化精度来量化该其他网络层,以在保证量化后模型具有较小的规模的同时,尽可能地减小量化后模型相较于量化前模型的精度损失。例如,若第一量化精度为int8对应的量化精度,则第二量化精度可以为int16等对应的量化精度。
[0054]
例如,针对该其他网络层,可以根据第二量化精度和其他网络层包括的网络参数的取值,来确定针对其他网络层的网络参数的第二缩放因子。随后,根据该第二缩放因子量化该其他网络层的网络参数。其中,第二缩放因子的确定原理与上文描述的缩放因子s的确定原理类似,该其他网络层的网络参数进行量化的原理与上文描述的操作s230中对目标网络层的网络参数进行量化的原理类似,在此不再赘述。
[0055]
图3是根据本公开实施例的确定根据第一量化精度量化每个网络层的损失值的原理示意图。
[0056]
根据本公开的实施例,在确定量化每个网络层的损失值时,例如可以采用对称量化的方法对每个网络层的网络参数进行预量化,并根据每个网络层包括的网络参数的取值的绝对值中的最大值来确定缩放因子。以此保留网络层中所有的网络参数,避免因截断离群点,导致量化后模型的精度受损的情形。这是由于在实现本公开构思的过程中,发明人发现在神经网络模型中,矩阵乘运算会涉及到大量的离群点,这些离群点对于结果的预测非常重要,若截断离群点,会极大地降低量化后模型的精度。
[0057]
如图3所示,在该实施例300中,对于神经网络模型包括的某个网络层310,每个计算节点可以确定其部署的该某个网络层310中网络参数的取值的绝对值320。随后,确定该确定的绝对值320中的最大值321,并根据该最大值321和第一量化精度330,确定针对该某个网络层310的网络参数的第一缩放因子340。例如,可以采用前文描述的方法,根据第一量化精度330,确定量化后网络层中网络参数的取值上限q
max
和取值下限q
min
,并将确定的最大值321设定为abs_max(t),则可以采用以下公式(5)来确定第一缩放因子s1,或者可以采用以下公式(6)来确定第一缩放因子s1。例如,若第一量化精度为int8对应的量化精度,则b的取值为8。
[0058][0059][0060]
在确定了第一缩放因子340后,例如可以采用该第一缩放因子340量化该某个网络
层的网络参数,并确定量化损失值。例如可以采用以下公式(7)来量化某个网络层的网络参数。
[0061][0062]
例如,该实施例可以采用第一缩放因子340预量化该某个网络层的网络参数,得到预量化后网络层350。随后,采用预量化后网络层350替换部署的模型360中的某个网络层310,得到替换后模型。随后,采用部署的模型360和替换后模型并行地对预定校准数据370进行处理,得到两个处理结果。随后,根据该两个处理结果的差异确定量化该某个网络层310的损失值。
[0063]
例如,在得到预量化网络层350后,该实施例还可以采用部署的模型360对预定校准数据370进行处理,得到针对该某个网络层的输入激活值380。具体地,可以将预定校准数据输入部署的模型360中,将该部署的模型360中该某个网络层的前一网络层输出的激活值作为输入该某个网络层的输入激活值380。随后,采用该某个网络层310对该输入激活值380进行处理,得到第一输出激活值391,并采用预量化后网络层350对该输入激活值380进行处理,得到第二输出激活值392。损失值可以根据该第一输出激活值391与第二输出激活值392之间的距离来确定。
[0064]
具体地,可以将输入激活值380并行地输入某个网络层310与预量化后网络层350,将该某个网络层310的输出作为第一输出激活值391,将预量化后网络层350的输出作为第二输出激活值392。在采用预量化后网络层350对该输入激活值380进行处理时,例如可以先根据第一量化精度对该输入激活值380进行量化,并将量化后的激活值输入预量化后网络层350,以便于预量化后网络层350根据预量化后网络层350中的网络参数对输入的激活值进行运算。可以理解的是,对输入激活值380进行量化的原理与对网络层中网络参数进行量化的原理类似,在此不再赘述。
[0065]
例如,可以将第一输出激活值391与第二输出激活值392之间的距离作为该每个网络层的量化损失值3100。例如,两个输出激活值之间的距离可以为欧式距离、余弦距离、汉明距离、曼哈顿距离、杰卡德(jaccard)距离等。
[0066]
在一实施例中,还可以先确定第一输出激活值391与第二输出激活值392之间的多种类型的距离,随后根据该多种类型的距离来确定量化该某个网络层310的损失值,得到量化损失值3100。例如,可以先确定两个输出激活值之间的欧式距离和推土距离(earth mover’s distance)。随后将该两个距离的和或者该两个距离的平均值,作为量化该某个网络层310的损失值。其中,推土距离的物理含义是:将一个随机分布的直方图,变化成另一个随机分布的直方图,直方图变动的最小距离和。
[0067]
该实施例通过根据量化前网络层输出的激活值与量化后网络层输出的激活值之间的距离来确定量化损失值,可以使得确定的量化损失值可以更好地体现量化前网络层与量化后网络层的处理能力的差异。从而可以提高确定的量化损失值的精度,利于提高筛选出的目标网络层的精度。再者,通过综合多种类型的距离来确定量化损失值,可以进一步提高确定的量化损失值的精度。
[0068]
本公开实施例通过根据网络参数的取值的最大绝对值来确定缩放因子,并根据前述确定的量化损失值来确定根据第一量化精度量化的目标网络层,可以弥补在网络参数的
取值中有较大比例的离群点时导致的缩放比例设置合理性较差、因量化带来的较大的精度损失,并因此可以提高量化后模型的精度。
[0069]
在一实施例中,预定校准数据的个数可以为r个,则每个计算节点可以针对每个网络层,通过对每个预定校准数据进行处理得到一个损失值,总计可以得到r个损失值。该实施例可以将r个损失值的和作为该每个计算节点确定的该每个网络层的量化损失值。相应地,若预定损失值的取值为l,则目标计算在确定该每个网络层是否为目标网络层时,可以将确定的每个网络层的目标量化损失值与l*r相比较,若目标量化损失值小于l*r,则确定该每个网络层为目标网络层。其中,r为大于1的自然数。通过设置多个预定校准数据,可以提高确定的目标网络层的精度。这是由于网络层针对不同的样本数据(即预定校准数据)的处理精度略有不同,通过综合考虑多个预定校准数据来确定量化损失值,可以使得确定的量化损失值可以更好地表达量化前后网络层的精度的差异。其中,l例如可以为0.06等任意值,r可以为5、10等任意值,该l与r的取值可以根据实际需求进行设定,本公开对此不做限定。
[0070]
图4是根据本公开实施例的分布式部署模型的量化方法的实现原理图。
[0071]
如图4所示,该实施例400中,分布式部署模型的量化方法由分布式系统部署的多个计算节点410及目标节点420来实现,其中,目标节点420可以为多个计算节点410中的任意一个节点。
[0072]
在该实施例400中,每个计算节点410可以先执行操作s411~操作s412。
[0073]
在操作s411,根据第一量化精度预量化部署的模型中的每个网络层,得到每个网络层的量化损失值。该操作s411与上文描述的操作s210的实现原理类似,在此不再赘述。
[0074]
在操作s412,向目标节点420发送多个网络层的量化损失值。
[0075]
在目标节点420接收到多个计算节点发送的多个网络层的量化损失值后,可以执行操作s421~操作s422。
[0076]
在操作s421,根据接收的每个网络层的多个量化损失值,确定该每个网络层是否为目标网络层,以从神经网络模型包括的多个网络层中筛选出目标网络层。在操作s422,向多个计算节点410发送指示该目标网络层的指示信息。其中,目标节点例如可以先确定每个网络层的多个量化损失值中的最大值,随后确定该最大值是否小于预定损失值。若是,则确定该每个网络层为目标量化层。
[0077]
多个计算节点410可以响应于接收到指示目标网络层的指示信息,执行操作s413和操作s414。可以理解的是,该操作s413与操作s414可以并行执行,也可以依据任意的先后顺序执行,本公开对此不做限定。
[0078]
在操作s413,根据第一量化精度量化目标网络层的网络参数。
[0079]
在操作s414,根据第二量化精度量化多个网络层中除目标网络层外其他网络层的网络参数。
[0080]
例如,在该实施例中,第一量化精度可以为int8对应的量化精度,第二量化精度可以为int16对应的量化精度。在根据量化精度量化或预量化网络层的网络参数时,例如可以采用实施例300中所示的原理来确定缩放因子,随后,根据缩放因子对网络层的网络参数进行浮点数与定点数之间的转换,从而实现网络参数的量化或预量化。
[0081]
根据本公开的实施例,在量化分布式部署的模型时,除了量化网络层的网络参数
外,例如还可以确定激活值的缩放因子,并将该缩放因子与量化后的网络层的网络参数一并导出,得到可以投入线上使用的量化后模型。其中,激活值可以为网络层的输入激活值或者输出激活值。
[0082]
在一实施例中,需要确定缩放因子的激活值为输入激活值,以统一各网络层的网络参数与输入数据的格式,便于各网络层根据网络参数对输入数据进行运算。例如,确定输入激活值的缩放因子的原理可以与上文描述的确定网络层中网络参数的缩放因子的原理类似。
[0083]
例如,计算节点可以采用部署的模型来对前述的预定校准数据进行处理,来得到每个网络层的输入激活值。随后,根据目标量化精度和该每个网络层的输入激活值,来确定该每个网络层的输入激活值的缩放因子。其中,目标量化精度为在确定针对该每个网络层的网络参数的缩放因子时所依据的量化精度。例如,若采用第一量化精度对该每个网络层进行量化,则在确定该每个网络层的输入激活值的缩放因子时,目标量化精度即为第一量化精度。
[0084]
例如,还可以采用部署的模型对n个预定校准数据分别进行处理,得到每个网络层的n组输入激活值。随后,根据每组输入激活值和目标量化精度,确定一个缩放因子,总计得到n个缩放因子。最后,该实施例可以综合考虑得到的n个缩放因子,来确定每个网络层的输入激活值的第三缩放因子。例如,该实施例可以将n个缩放因子的平均值,作为第三缩放因子。其中,n为大于1的自然数。通过依据n个预定校准数据来确定第三缩放因子,可以弥补仅依据单个预定校准数据确定第三缩放因子所存在的第三缩放因子精度不高,影响量化精度的缺陷,并因此可以提高确定的第三缩放因子的精度。这是由于对于不同数据而言,每个网络层的输入激活值的取值会有不同。但需要说明的是,n的取值也不宜过大,因过多的预定校准数据,会使得输入每个网络层的输入激活值中异常离群点出现的几率变高,反而会影响模型的量化精度。例如,n可以设定为10等根据实际需求选择的值,本公开对此不做限定。
[0085]
图5是根据本公开实施例的确定自注意力层的输入激活值的缩放因子的原理示意图。
[0086]
根据本公开的实施例,对于需要执行矩阵乘运算的自注意力层,还可以限制多个计算节点确定的针对该自注意力层的输入激活值的缩放因子为统一缩放因子,以提高量化得到的模型的精度。这是由于在实现本公开构思的过程中,发明人发现,对于不同计算节点,由于采用不同的训练样本,输入自注意力层的输入激活值的分布规律不一致,且自注意力层的输入激活值的取值通常较为离散,离群点离群程度大且离群点的占比高,不宜量化。通过使得多个计算节点采用的统一缩放因子,可以考虑到自注意力层的输入激活值的更多分布情形,利于提高采用的缩放因子的精度,从而可以降低量化模型的损失。
[0087]
在一实施例中,多个计算节点可以将确定的针对该自注意力层的输入激活值的第三缩放因子发送给目标节点,由目标节点对接收到的多个第三缩放因子进行汇总,从而根据该多个第三缩放因子确定针对自注意力层的输入激活值的统一缩放因子,并将该统一缩放因子发送给多个计算节点。则多个计算节点可以采用该统一缩放因子替代原始确定的针对该自注意力层的输入激活值的第三缩放因子。
[0088]
例如,目标节点可以将多个第三缩放因子的平均值作为统一缩放因子。或者,也可以对该多个第三缩放因子进行聚类,将确定的聚类中心作为统一缩放因子。
[0089]
如图5所示,在一实施例500中,多个计算节点中的每个计算节点510可以通过操作s511将针对自注意力层的输入激活值的第三缩放因子发送给目标节点。
[0090]
目标节点在接收到多个计算节点发送的第三缩放因子后,例如可以先执行操作s521,确定接收到的多个第三缩放因子的取值区间。例如,接收到的多个第三缩放因子包括自大至小排列的缩放因子a、b、c、d,则可以确定取值区间为[d,a]。随后,目标节点可以执行操作s522,根据预定取值间隔从取值区间中取多个值,作为多个备选缩放因子。例如,预定取值间隔可以为0.01,可以自最小值d开始,每间隔预定取值间隔取一个值,最终得到的多个备选缩放因子包括取值区间的下限值,可以根据实际需求也可以包括取值区间的上限值。随后,目标节点可以将该多个备选缩放因子通过操作s523发送给多个计算节点。
[0091]
每个计算节点在接收到多个备选缩放因子之后,例如可以执行操作s512,确定根据其中的每个备选缩放因子量化自注意力层的输入激活值的损失值,作为针对该每个备选缩放因子的量化损失值。例如,可以采用与上述确定每个网络层的量化损失值的原理类似的原理,来确定针对该每个备选缩放因子的量化损失值。
[0092]
例如,每个计算节点可以采用部署的模型对预定校准数据进行处理,得到该自注意力层的输入激活值。同时,可以采用前述的目标量化精度预量化自注意力层的网络参数,得到预量化后自注意力层。在得到输入激活值后,可以采用每个备选缩放因子来预量化得到的自注意力层的输入激活值,得到预量化后激活值。在得到输入激活值之后,可以采用量化前的自注意力层对该输入激活值进行处理,得到第三输出激活值。在得到预量化后自注意力层和预量化后激活值之后,可以采用预量化后自注意力层对预量化后激活值进行处理,得到第四输出激活值。最后,每个计算节点可以根据第三输出激活值与第四输出激活值之间的差异,来确定根据该每个备选缩放因子量化自注意力层的输入激活值的损失值。需要说明的是,上述对网络参数的预量化原理与上文描述的类似,对输入激活值量化的原理也与上文描述的类似,在此不再赘述。
[0093]
例如,可以先计算第三输出激活值与第四输出激活值中对应元素的差值的平方值,将多个平方值的和作为针对每个备选缩放因子的量化损失值。或者,也可以采用两个输出激活值之间的任意距离(例如欧式距离、推土距离等)作为针对每个备选缩放因子的量化损失值。
[0094]
每个计算节点510可以在得到针对每个备选缩放因子的量化损失值之后,可以执行操作s513,将该针对每个备选缩放因子的量化损失值发送给目标节点520。
[0095]
目标节点520在接收到多个计算节点发送的针对每个备选缩放因子的量化损失值后,例如可以根据接收到的针对每个备选缩放因子的多个量化损失值,执行操作s524,确定针对每个备选缩放因子的目标量化损失值。例如,可以将多个量化损失值的和作为目标量化损失值。或者,可以将多个量化损失值的平均值作为目标量化损失值,本公开对此不做限定。
[0096]
在得到针对多个备选缩放因子的多个目标量化损失值之后,目标节点520例如可以执行操作s525,将多个备选缩放因子中目标量化损失值最小的备选缩放因子作为目标缩放因子,并执行操作s526,向多个计算节点发送该目标缩放因子。多个计算节点在接收到目标缩放因子后,可以执行操作s514,将目标缩放因子作为针对自注意力层的输入激活值的缩放因子。
[0097]
可以理解的是,在得到针对每个网络层的输入激活值的缩放因子,且对网络层的网络参数进行了量化之后,可以根据实际需求导出神经网络模型。例如,若以onnx文件的格式导出神经网络模型时,例如针对不带权重的输入激活值,可以在需要量化的网络层前插入模拟量化层和反量化层,且模拟量化层和反量化层中都存储有针对输入激活值的缩放因子。针对带权重的输入激活值,可以在需要量化的网络层前插入反量化层,且反量化层中存储有针对输入激活值的缩放因子。其中,带权重的输入激活值是指需要从本地加载权重,并将权重与输入激活值一并作为输入的激活值。在将神经网络模型投入线上使用时,则可以将前述加入的反量化层去除。
[0098]
图6是根据本公开实施例的分布式部署模型的量化方法的应用示意图。
[0099]
如图6所示,在将本公开提供的分布式部署模型的量化方法应用于基于transformer架构的神经网络模型时,该实施例600例如可以确定transformer架构中用于生成查询特征query的嵌入层q 602、生成键特征key的嵌入层k 603和生成值特征value的嵌入层v 604、对自注意力运算结果进行矩阵乘的projection层608、第一前馈神经网络层ffn1 610和第二前馈神经网络层ffn2612为目标网络层。该些目标网络层为需要计算矩阵乘法的层,通过根据第一量化精度进行量化,可以有效减少模型的规模。可以根据第二量化精度对transformer架构中的其余层(例如归一化层layernorm1 601、计算注意力矩阵的层bmm1 605,softmax激活层606、对值特征加权的层bmm2607、归一化层layernorm2609、激活层gelu 611)进行量化,也可以保持该些层的网络权重为浮点数格式,本公开对此不做限定。
[0100]
通过该实施例量化得到的模型例如可以部署在单机a100芯片上,相较于量化前的模型,计算速率至少可以加速1.2倍。
[0101]
需要说明的是,为了便于运算,需要在量化精度不同的两个层之间插入量化层或者反量化节点,以对输入每个网络层的激活值根据实际需求进行量化处理或反量化处理,此处不再详述。神经网络模型中网络参数的原始格式例如可以为float32格式或者float16格式等浮点数格式,本公开对此不做限定。
[0102]
采用本公开提供的分布式部署模型的量化方法,由于可以根据量化损失值确定目标网络层,还可以灵活确定输入自注意力层的输入激活值的缩放因子,因此可以实现无人工参与的模型量化的自动优化,可以在很大程度上保证量化后模型相较于量化前模型而言,精度基本无损。
[0103]
基于本公开提供的分布式部署模型的量化方法,本公开还提供了一种分布式部署模型的量化装置。以下将结合图7对该装置进行详细描述。
[0104]
图7是根据本公开实施例的分布式部署模型的量化装置的结构框图。
[0105]
如图7所示,该实施例的分布式部署模型的量化装置700可以包括第一损失确定模块710、第一损失发送模块720和参数量化模块730。
[0106]
第一损失确定模块710用于对于部署的模型所包括的多个网络层,确定根据第一量化精度量化多个网络层中每个网络层的损失值,作为每个网络层的量化损失值。在一实施例中,第一损失确定模块710可以用于执行上文描述的操作s210,在此不再赘述。
[0107]
第一损失发送模块720用于将多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使目标节点根据接收的量化损失值确定多个网络层中的目
标网络层。在一实施例中,第一损失发送模块720可以用于执行上文描述的操作s220,在此不再赘述。
[0108]
参数量化模块730用于根据第一量化精度量化目标网络层的网络参数。在一实施例中,参数量化模块730可以用于执行上文描述的操作s230,在此不再赘述。
[0109]
根据本公开的实施例,目标节点为多个计算节点中指定的任一节点,上述装置700还可以包括:目标损失确定模块,用于响应于接收到多个计算节点发送的多个网络层的量化损失值,确定每个网络层的多个量化损失值中的最大值,作为每个网络层的目标量化损失值;目标层确定模块,用于确定多个网络层中目标量化损失值小于预定损失值的网络层,得到目标网络层。
[0110]
根据本公开的实施例,上述第一损失确定模块710可以包括绝对值确定子模块,用于确定每个网络层包括的网络参数的取值的绝对值;缩放因子确定子模块,用于根据第一量化精度和绝对值中的最大值,确定针对每个网络层的网络参数的第一缩放因子;以及第一损失确定子模块,用于确定根据第一缩放因子量化每个网络层的网络参数的损失值,作为每个网络层的量化损失值。
[0111]
根据本公开的实施例,第一损失确定子模块可以包括:预量化单元,用于根据第一缩放因子预量化每个网络层的网络参数,得到预量化后网络层;激活值获得单元,用于采用部署的模型对预定校准数据进行处理,得到输入每个网络层的输入激活值;第一激活处理单元,用于采用每个网络层对输入激活值进行处理,得到第一输出激活值;第二激活处理单元,用于采用预量化后网络层对输入激活值进行处理,得到第二输出激活值;以及损失值确定单元,用于根据第一输出激活值与第二输出激活值之间的距离,确定每个网络层的量化损失值。
[0112]
根据本公开的实施例,上述装置700还可以包括第一因子确定模块,用于针对多个网络层中除目标网络层外的其他网络层,根据第二量化精度和其他网络层包括的网络参数的取值,确定针对其他网络层的网络参数的第二缩放因子。上述参数量化模块730还可以用于根据第二缩放因子量化其他网络层的网络参数,其中,第一量化精度低于第二量化精度。
[0113]
根据本公开的实施例,上述装置700还可以包括:激活值确定模块,用于采用部署的模型对n个预定校准数据分别进行处理,得到每个网络层的n组输入激活值;第二因子确定模块,用于根据目标量化精度和n组输入激活值中的每组输入激活值,确定针对每组输入激活值的缩放因子;第三因子确定模块,用于根据针对n组输入激活值的n个缩放因子,确定针对每个网络层的输入激活值的第三缩放因子,其中,目标量化精度为确定针对每个网络层的网络参数的缩放因子时所依据的量化精度;n为大于1的自然数。
[0114]
根据本公开的实施例,多个网络层包括自注意力层。上述装置700还可以包括:第一因子发送模块,用于将针对自注意力层的输入激活值的第三缩放因子发送给目标节点,以使目标节点根据接收的第三缩放因子确定针对自注意力层的输入激活值的多个备选缩放因子;第二损失确定模块,用于响应于接收到多个备选缩放因子,确定根据每个备选缩放因子量化自注意力层的输入激活值的损失值,作为针对每个备选缩放因子的量化损失值;第二损失发送模块,用于将针对每个备选缩放因子的量化损失值发送给目标节点,以使目标节点确定多个备选缩放因子中的目标缩放因子;以及第四因子确定模块,用于将目标缩放因子作为针对自注意力层的输入激活值的缩放因子。
[0115]
根据本公开的实施例,目标节点为多个计算节点中指定的任一节点。上述装置700还可以包括:取值区间确定模块,用于响应于接收到多个计算节点发送的多个第三缩放因子,确定多个第三缩放因子的取值区间;取值模块,用于根据预定取值间隔从取值区间中取多个值,作为多个备选缩放因子;第二因子发送模块,用于将多个备选缩放因子发送给多个计算节点;第三损失确定模块,用于响应于接收到多个计算节点发送的针对每个备选缩放因子的量化损失值,根据针对每个备选缩放因子的多个量化损失值,确定针对每个备选缩放因子的目标量化损失值;以及目标因子确定模块,用于确定多个备选缩放因子中目标量化损失值最小的备选缩放因子为目标缩放因子。
[0116]
根据本公开的实施例,上述第二损失确定模块可以包括:激活值获得子模块,用于采用部署的模型对预定校准数据进行处理,得到自注意力层的输入激活值;第一预量化子模块,用于根据目标量化精度预量化自注意力层的网络参数,得到预量化后自注意力层;第二预量化子模块,用于采用每个备选缩放因子预量化自注意力层的输入激活值,得到预量化后激活值;第一激活处理子模块,用于采用自注意力层处理自注意力层的输入激活值,得到第三输出激活值;第二激活处理子模块,用于采用预量化后自注意力层处理预量化后激活值,得到第四输出激活值;以及第二损失确定子模块,用于根据第三输出激活值和第四输出激活值,确定根据每个备选缩放因子量化自注意力层的输入激活值的损失值。
[0117]
根据本公开的实施例,上述损失值确定单元可以包括:距离确定子单元,用于确定第一输出激活值与第二输出激活值之间的欧式距离及第一输出激活值与第二输出激活值之间的推土距离;以及损失确定子单元,用于根据欧式距离与推土距离,确定每个网络层的量化损失值。
[0118]
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
[0119]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0120]
图8示出了可以用来实施本公开实施例的分布式部署模型的量化方法的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0121]
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
[0122]
设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通
信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0123]
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如分布式部署模型的量化方法。例如,在一些实施例中,分布式部署模型的量化方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的分布式部署模型的量化方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行分布式部署模型的量化方法。
[0124]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0125]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0126]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0127]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用
任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0128]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0129]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(

virtual private server

,或简称

vps

)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0130]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0131]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:
1.一种分布式部署模型的量化方法,包括:对于部署的模型所包括的多个网络层,确定根据第一量化精度量化所述多个网络层中每个网络层的损失值,作为所述每个网络层的量化损失值;将所述多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使所述目标节点根据接收的量化损失值确定所述多个网络层中的目标网络层;以及根据所述第一量化精度量化所述目标网络层的网络参数。2.根据权利要求1所述的方法,其中,所述目标节点为所述多个计算节点中指定的任一节点;所述方法还包括:响应于接收到所述多个计算节点发送的所述多个网络层的量化损失值,确定所述每个网络层的多个量化损失值中的最大值,作为所述每个网络层的目标量化损失值;以及确定所述多个网络层中所述目标量化损失值小于预定损失值的网络层,得到所述目标网络层。3.根据权利要求1所述的方法,其中,确定根据第一量化精度量化所述多个网络层中每个网络层的损失值,作为所述每个网络层的量化损失值包括:确定所述每个网络层包括的网络参数的取值的绝对值;根据所述第一量化精度和所述绝对值中的最大值,确定针对所述每个网络层的网络参数的第一缩放因子;以及确定根据所述第一缩放因子量化所述每个网络层的网络参数的损失值,作为所述每个网络层的量化损失值。4.根据权利要求3所述的方法,其中,所述确定根据所述第一缩放因子量化所述每个网络层的网络参数的损失值,作为所述每个网络层的量化损失值包括:根据所述第一缩放因子预量化所述每个网络层的网络参数,得到预量化后网络层;采用部署的模型对预定校准数据进行处理,得到输入所述每个网络层的输入激活值;采用所述每个网络层对所述输入激活值进行处理,得到第一输出激活值;采用所述预量化后网络层对所述输入激活值进行处理,得到第二输出激活值;以及根据所述第一输出激活值与所述第二输出激活值之间的距离,确定所述每个网络层的量化损失值。5.根据权利要求1所述的方法,还包括:针对所述多个网络层中除所述目标网络层外的其他网络层,根据第二量化精度和所述其他网络层包括的网络参数的取值,确定针对所述其他网络层的网络参数的第二缩放因子;以及根据所述第二缩放因子量化所述其他网络层的网络参数,其中,所述第一量化精度低于所述第二量化精度。6.根据权利要求1所述的方法,还包括:采用部署的模型对n个预定校准数据分别进行处理,得到所述每个网络层的n组输入激活值;根据目标量化精度和所述n组输入激活值中的每组输入激活值,确定针对所述每组输入激活值的缩放因子;以及根据针对所述n组输入激活值的n个缩放因子,确定针对所述每个网络层的输入激活值
的第三缩放因子,其中,所述目标量化精度为确定针对所述每个网络层的网络参数的缩放因子时所依据的量化精度;n为大于1的自然数。7.根据权利要求6所述的方法,其中,所述多个网络层包括自注意力层;所述方法还包括:将针对所述自注意力层的输入激活值的第三缩放因子发送给所述目标节点,以使所述目标节点根据接收的第三缩放因子确定针对所述自注意力层的输入激活值的多个备选缩放因子;响应于接收到所述多个备选缩放因子,确定根据每个备选缩放因子量化所述自注意力层的输入激活值的损失值,作为针对所述每个备选缩放因子的量化损失值;将针对所述每个备选缩放因子的量化损失值发送给所述目标节点,以使所述目标节点确定所述多个备选缩放因子中的目标缩放因子;以及将所述目标缩放因子作为针对所述自注意力层的输入激活值的缩放因子。8.根据权利要求7所述的方法,其中,所述目标节点为所述多个计算节点中指定的任一节点;所述方法还包括:响应于接收到所述多个计算节点发送的多个第三缩放因子,确定所述多个第三缩放因子的取值区间;根据预定取值间隔从所述取值区间中取多个值,作为多个备选缩放因子;将所述多个备选缩放因子发送给所述多个计算节点;响应于接收到所述多个计算节点发送的针对所述每个备选缩放因子的量化损失值,根据针对所述每个备选缩放因子的多个量化损失值,确定针对所述每个备选缩放因子的目标量化损失值;以及确定所述多个备选缩放因子中目标量化损失值最小的备选缩放因子为所述目标缩放因子。9.根据权利要求7所述的方法,其中,确定根据每个备选缩放因子量化所述自注意力层的输入激活值的损失值包括:采用部署的模型对预定校准数据进行处理,得到所述自注意力层的输入激活值;根据所述目标量化精度预量化所述自注意力层的网络参数,得到预量化后自注意力层;采用所述每个备选缩放因子预量化所述自注意力层的输入激活值,得到预量化后激活值;采用所述自注意力层处理所述自注意力层的输入激活值,得到第三输出激活值;采用所述预量化后自注意力层处理所述预量化后激活值,得到第四输出激活值;以及根据所述第三输出激活值和所述第四输出激活值,确定根据每个备选缩放因子量化所述自注意力层的输入激活值的损失值。10.根据权利要求4所述的方法,其中,所述根据所述第一输出激活值与所述第二输出激活值之间的距离,确定所述每个网络层的量化损失值包括:确定所述第一输出激活值与所述第二输出激活值之间的欧式距离及所述第一输出激活值与所述第二输出激活值之间的推土距离;以及
根据所述欧式距离与所述推土距离,确定所述每个网络层的量化损失值。11.一种分布式部署模型的量化装置,包括:第一损失确定模块,用于对于部署的模型所包括的多个网络层,确定根据第一量化精度量化所述多个网络层中每个网络层的损失值,作为所述每个网络层的量化损失值;第一损失发送模块,用于将所述多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使所述目标节点根据接收的量化损失值确定所述多个网络层中的目标网络层;以及参数量化模块,用于根据所述第一量化精度量化所述目标网络层的网络参数。12.根据权利要求11所述的装置,其中,所述目标节点为所述多个计算节点中指定的任一节点;所述装置还包括:目标损失确定模块,用于响应于接收到所述多个计算节点发送的所述多个网络层的量化损失值,确定所述每个网络层的多个量化损失值中的最大值,作为所述每个网络层的目标量化损失值;目标层确定模块,用于确定所述多个网络层中所述目标量化损失值小于预定损失值的网络层,得到所述目标网络层。13.根据权利要求11所述的装置,其中,所述第一损失确定模块包括:绝对值确定子模块,用于确定所述每个网络层包括的网络参数的取值的绝对值;缩放因子确定子模块,用于根据所述第一量化精度和所述绝对值中的最大值,确定针对所述每个网络层的网络参数的第一缩放因子;以及第一损失确定子模块,用于确定根据所述第一缩放因子量化所述每个网络层的网络参数的损失值,作为所述每个网络层的量化损失值。14.根据权利要求13所述的装置,其中,所述第一损失确定子模块包括:预量化单元,用于根据所述第一缩放因子预量化所述每个网络层的网络参数,得到预量化后网络层;激活值获得单元,用于采用部署的模型对预定校准数据进行处理,得到输入所述每个网络层的输入激活值;第一激活处理单元,用于采用所述每个网络层对所述输入激活值进行处理,得到第一输出激活值;第二激活处理单元,用于采用所述预量化后网络层对所述输入激活值进行处理,得到第二输出激活值;以及损失值确定单元,用于根据所述第一输出激活值与所述第二输出激活值之间的距离,确定所述每个网络层的量化损失值。15.根据权利要求11所述的装置,还包括:第一因子确定模块,用于针对所述多个网络层中除所述目标网络层外的其他网络层,根据第二量化精度和所述其他网络层包括的网络参数的取值,确定针对所述其他网络层的网络参数的第二缩放因子;以及所述参数量化模块还用于:根据所述第二缩放因子量化所述其他网络层的网络参数,其中,所述第一量化精度低于所述第二量化精度。16.根据权利要求11所述的装置,还包括:
激活值确定模块,用于采用部署的模型对n个预定校准数据分别进行处理,得到所述每个网络层的n组输入激活值;第二因子确定模块,用于根据目标量化精度和所述n组输入激活值中的每组输入激活值,确定针对所述每组输入激活值的缩放因子;第三因子确定模块,用于根据针对所述n组输入激活值的n个缩放因子,确定针对所述每个网络层的输入激活值的第三缩放因子,其中,所述目标量化精度为确定针对所述每个网络层的网络参数的缩放因子时所依据的量化精度;n为大于1的自然数。17.根据权利要求16所述的装置,其中,所述多个网络层包括自注意力层;所述装置还包括:第一因子发送模块,用于将针对所述自注意力层的输入激活值的第三缩放因子发送给所述目标节点,以使所述目标节点根据接收的第三缩放因子确定针对所述自注意力层的输入激活值的多个备选缩放因子;第二损失确定模块,用于响应于接收到所述多个备选缩放因子,确定根据每个备选缩放因子量化所述自注意力层的输入激活值的损失值,作为针对所述每个备选缩放因子的量化损失值;第二损失发送模块,用于将针对所述每个备选缩放因子的量化损失值发送给所述目标节点,以使所述目标节点确定所述多个备选缩放因子中的目标缩放因子;以及第四因子确定模块,用于将所述目标缩放因子作为针对所述自注意力层的输入激活值的缩放因子。18.根据权利要求17所述的装置,其中,所述目标节点为所述多个计算节点中指定的任一节点;所述装置还包括:取值区间确定模块,用于响应于接收到所述多个计算节点发送的多个第三缩放因子,确定所述多个第三缩放因子的取值区间;取值模块,用于根据预定取值间隔从所述取值区间中取多个值,作为多个备选缩放因子;第二因子发送模块,用于将所述多个备选缩放因子发送给所述多个计算节点;第三损失确定模块,用于响应于接收到所述多个计算节点发送的针对所述每个备选缩放因子的量化损失值,根据针对所述每个备选缩放因子的多个量化损失值,确定针对所述每个备选缩放因子的目标量化损失值;以及目标因子确定模块,用于确定所述多个备选缩放因子中目标量化损失值最小的备选缩放因子为所述目标缩放因子。19.根据权利要求17所述的装置,其中,所述第二损失确定模块包括:激活值获得子模块,用于采用部署的模型对预定校准数据进行处理,得到所述自注意力层的输入激活值;第一预量化子模块,用于根据所述目标量化精度预量化所述自注意力层的网络参数,得到预量化后自注意力层;第二预量化子模块,用于采用所述每个备选缩放因子预量化所述自注意力层的输入激活值,得到预量化后激活值;
第一激活处理子模块,用于采用所述自注意力层处理所述自注意力层的输入激活值,得到第三输出激活值;第二激活处理子模块,用于采用所述预量化后自注意力层处理所述预量化后激活值,得到第四输出激活值;以及第二损失确定子模块,用于根据所述第三输出激活值和所述第四输出激活值,确定根据每个备选缩放因子量化所述自注意力层的输入激活值的损失值。20.根据权利要求14所述的装置,其中,所述损失值确定单元包括:距离确定子单元,用于确定所述第一输出激活值与所述第二输出激活值之间的欧式距离及所述第一输出激活值与所述第二输出激活值之间的推土距离;以及损失确定子单元,用于根据所述欧式距离与所述推土距离,确定所述每个网络层的量化损失值。21.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1~10中任一项所述的方法。22.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1~10中任一项所述的方法。23.一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令存储于可读存储介质和电子设备其中至少之一上,所述计算机程序/指令在被处理器执行时实现根据权利要求1~10中任一项所述方法的步骤。

技术总结
本公开提供了一种分布式部署模型的量化方法、装置、设备和介质,涉及人工智能领域,具体涉及深度学习、分布式训练和模型量化等技术领域。分布式部署模型的量化方法的具体实现方案为:对于部署的模型所包括的多个网络层,确定根据第一量化精度量化多个网络层中每个网络层的损失值,作为每个网络层的量化损失值;将多个网络层的量化损失值发送给分布式部署模型的多个计算节点中的目标节点,以使所述目标节点根据接收的量化损失值确定多个网络层中的目标网络层;以及根据第一量化精度量化目标网络层的网络参数。标网络层的网络参数。标网络层的网络参数。


技术研发人员:于广华 王豪爽 党青青 沙燕霖 于佃海 马艳军
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.05.05
技术公布日:2023/9/12
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐