首页 / 实现LN算子量化的方法、装置、设备、存储介质及产品

实现LN算子量化的方法、装置、设备、存储介质及产品实质审查 发明

技术领域

[0001] 本申请涉及计算机技术领域,具体地涉及一种计算受限平台(即不支持某些运算的平台)实现LN(LayerNormalization,层规范化)算子量化的方法、装置、设备、存储介质及产品。

相关背景技术

[0002] LN算子是一种常用的归一化算子,它可以使得神经网络的训练更加稳定和快速,因此,LN算子被广泛应用于各种Transformer网络中,是非常常见的算子。LN算子的浮点计算公式如下:
[0003]
[0004] 其中,Y表示输出张量,X表示输入张量,N表示通道维度上的元素数量,xi表示通道维度上的第i个元素,xj表示通道维度上的第j个元素,β、γ均表示可学习的参数向量。
[0005] 由LN算子的浮点计算公式可知,LN算子计算复杂,不仅涉及到加减法、乘法和求和计算,而且还涉及到开方、除法以及求均值等开销巨大的计算,而计算能力受限平台(例如嵌入式设备、移动端、边缘设备等算力较弱的平台)并不支持开销巨大的开方和除法计算,因此,无法在计算能力受限平台部署LN算子,进而导致无法在计算能力受限平台部署神经网络。
[0006] 本背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。

具体实施方式

[0051] 为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0052] 在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0053] 实施例1
[0054] 如图1所示,本发明实施例提供的一种计算受限平台实现LN算子量化的方法包括:
[0055] 步骤S101:基于目标平台的计算资源和LN算子,构建相关映射表。
[0056] 基于目标平台的计算资源,可知目标平台能够实现的运算和无法实现的运算,再结合LN算子所包含的运算来构建相应的映射表。
[0057] 目标平台,即计算受限平台,计算受限平台是指不支持某些运算(例如平方、除法)的平台。本发明实施例中的计算受限平台是指仅支持定点数计算的平台,仅支持定点数计算的平台能够支持乘法、加法、减法等运算,但是并不支持开方和除法运算,而LN算子不仅涉及到加减法、乘法和求和计算,而且还涉及到开方、除法以及求均值等开销巨大的计算,这就导致无法在目标平台部署LN算子。基于此,本发明构建目标平台无法实现的运算的映射表。示例性的,目标平台无法实现开方和求倒数运算,则构建开方运算映射表和求倒数运算映射表。
[0058] 在本发明的具体实施方式中,开方运算映射表的构建过程包括:
[0059] 步骤S101.11:根据浮点型开方函数的输入数据的动态分布范围得到第一输入缩放因子,根据浮点型开方函数的输出数据的动态分布范围得到第一输出缩放因子。
[0060] 对于神经网络中的浮点数,可以通过统计其动态分布范围来计算出相应的缩放因子,然后将该动态分布范围内的浮点数映射至一个定点数。
[0061] 对于浮点型开方函数,有:
[0062]
[0063] 其中,y1fl表示第一浮点输出数据,x1fl表示第一浮点输入数据。统计第一浮点输出数据和第一浮点输入数据的动态分布范围,根据动态分布范围计算出对应的缩放因子。示例性的,根据第一浮点输入数据x1fl的动态分布范围计算出第一输入缩放因子,具体公式为:
[0064]
[0065] 其中,Δx1表示第一输入缩放因子,x1fl,max表示第一浮点输入数据的动态分布范围中的最大值,x1fl,min表示第一浮点输入数据的动态分布范围中的最小值,||表示取绝对值。浮点数至定点数的映射方式为: 其中[]表示取整,x1fi表示第一定点输入数据,则有x1fl≈Δx1·x1fi。
[0066] 同理,根据第一浮点输出数据y1fl的动态分布范围得到第一输出缩放因子Δy1,且有y1fl≈Δy1·y1fi,其中y1fi表示第一定点输出数据。
[0067] 步骤S101.12:根据浮点型开方函数、第一输入缩放因子和第一输出缩放因子,得到定点型开方函数。
[0068] 根据第一输入缩放因子和第一输出缩放因子,将浮点型开方函数转换成定点型开方函数,有:
[0069]
[0070] 移项可得定点型开方函数为:
[0071]
[0072] 步骤S101.13:将定点数据取值范围内的每个值代入到定点型开方函数(公式(4)),得到对应的定点输出结果,进而得到开方运算映射表。
[0073] 定点数据取值范围为[0,1,2,...,255]或[‑128,127],将其每个值代入公式(4),可以得到对应的定点输出结果,即得到每个定点数的定点开方结果。
[0074] 在本发明的具体实施方式中,求倒数运算映射表的构建过程包括:
[0075] 步骤S101.21:根据浮点型求倒数函数的输入数据的动态分布范围得到第二输入缩放因子,根据浮点型求倒数函数的输出数据的动态分布范围得到第二输出缩放因子。
[0076] 对于浮点型求倒数函数,有:
[0077]
[0078] 其中,y2fl表示第二浮点输出数据,x2fl表示第二浮点输入数据,ε表示极小值,极小‑6值一般取为10 ,可以避免求倒数函数中分母等于0而发生错误。
[0079] 统计第二浮点输出数据和第二浮点输入数据的动态分布范围,根据动态分布范围计算出对应的缩放因子。示例性的,根据第二浮点输入数据x2fl的动态分布范围计算出第二输入缩放因子,具体公式为:
[0080]
[0081] 其中,Δx2表示第二输入缩放因子,x2fl,max表示第二浮点输入数据的动态分布范围中的最大值,x2fl,min表示第二浮点输入数据的动态分布范围中的最小值。浮点数至定点数的映射方式为: x2fi表示第二定点输入数据,则有x2fl≈Δx2·x2fi。
[0082] 同理,根据第二浮点输出数据y2fl的动态分布范围得到第二输出缩放因子Δy2,且有y2fl≈Δy2·y2fi,其中y2fi表示第二定点输出数据。
[0083] 步骤S101.22:根据浮点型求倒数函数、第二输入缩放因子和第二输出缩放因子,得到定点型求倒数函数。
[0084] 根据第二输入缩放因子和第二输出缩放因子,将浮点型求倒数转换成定点型求倒数函数,有:
[0085]
[0086] 移项可得定点型求倒数函数为:
[0087]
[0088] 步骤S101.23:将定点数据取值范围内的每个值代入到定点型求倒数函数(公式(8)),得到对应的定点输出结果,进而得到求倒数运算映射表。
[0089] 定点数据取值范围为[0,1,2,...,255],将其每个值代入公式(8),可以得到对应的定点输出结果,即得到每个定点数的定点求倒数结果。
[0090] 步骤S102:将构建的相关映射表存储至目标平台的存储器。
[0091] 步骤S103:在目标平台加载LN算子的输入张量。
[0092] 步骤S104:根据LN算子的计算公式、相关映射表和输入张量计算目标输出张量。
[0093] LN算子的计算公式为:
[0094]
[0095] 由公式(9)可知,LN算子的浮点计算步骤包括:
[0096] 步骤A1:对于给定的输入张量X,沿其通道方向对输入张量X进行求和,然后除以输入张量X的总通道数,得到输入张量X的均值;
[0097] 步骤A2:将输入张量X减去步骤A1中的均值,得到均值为0的第一张量;
[0098] 步骤A3:基于方差公式,对第一张量进行平方运算,得到第二张量;沿第二张量的通道方向对第二张量进行求和,再除以第二张量的总通道数,得到输入张量X的方差;
[0099] 步骤A4:基于标准差公式,对步骤A3中的方差进行开方,得到输入张量X的标准差;
[0100] 步骤A5:基于归一化公式,将第一张量除以步骤A4中的标准差,得到均值为0,方差为1的第三张量;
[0101] 步骤A6:对第三张量进行仿射变换,即乘以权重β并加上偏置γ,得到目标输出张量。
[0102] 由于目标平台无法进行开方和除法运算,因此步骤A1、A3和A5中的除法无法实现,步骤A4中的开方也无法实现,且步骤A3的平方运算后的数值过大,导致量化误差很大。
[0103] 基于上述问题,本发明的解决方案为:
[0104] 由于输入张量的长度固定,因此步骤A1和步骤A3中的除法可以提前转化为一个常数的乘法,由目标平台的乘法单元实现。具体实现方法为:提前将除以总通道数转化为乘以总通道数的倒数。
[0105] 由于无法在LN算子量化之前得知步骤A4的标准差结果,因此,无法像步骤A1和步骤A3的处理方式一样,直接乘以标准差结果的倒数。本发明利用查映射表的方式将除法转化为乘法。具体实现方式为:根据步骤A4中的标准差查询构建的求倒数运算映射表,即可得到标准差求倒数后的定点结果。
[0106] 同理,步骤A4中的开方也可以利用查映射表的方式实现。具体实现方式为:根据步骤A3中的方差查询构建的开方运算映射表,即可得到方差开方后的定点结果。
[0107] 步骤A3中,对第一张量进行平方运算,即第一张量中的每个元素平方,由于每个元素为定点数(INT8类型),每个元素平方后的结果也会以INT8类型保存,这就导致误差。为了解决定点数直接平方导致的量化误差过大的问题,本发明使用乘累加计算单元来实现张量的平方以及累积求和运算,乘累加计算单元将定点数平方后的结果存储在高精度单元(INT32类型)中进行累加,从而有效减小量化误差。
[0108] 因此,在本发明的具体实施方式中,根据LN算子的计算公式、相关映射表和输入张量计算目标输出张量,包括:
[0109] 步骤S104.1:基于LN算子的计算公式,沿输入张量的通道方向对输入张量进行求和,然后乘以输入张量的总通道数的倒数,得到所述输入张量的均值;
[0110] 步骤S104.2:将输入张量减去步骤S104.1中的均值,得到均值为0的第一张量;
[0111] 步骤S104.3:对第一张量进行平方运算,得到第二张量;沿第二张量的通道方向对第二张量进行求和,再乘以第二张量的总通道数的倒数,得到输入张量的方差;
[0112] 步骤S104.4:根据开方运算映射表和方差,利用查表法得到输入张量的标准差;
[0113] 步骤S104.5:根据求倒数运算映射表和标准差,利用查表法得到与该标准差匹配的输出结果;
[0114] 步骤S104.6:将第一张量乘以与该标准差匹配的输出结果,得到均值为0,方差为1的第三张量;
[0115] 步骤S104.7:对第三张量进行仿射变换,得到目标输出张量。
[0116] 实施例2
[0117] 如图2所示,本发明实施例提供的一种计算受限平台实现LN算子量化的装置包括表构建单元、存储单元、加载单元和计算单元。
[0118] 表构建单元被配置为基于目标平台的计算资源和LN算子,构建相关映射表。本实施例中,相关映射表包括开方运算映射表和求倒数运算映射表,各映射表的具体构建过程如实施例1中所述。
[0119] 存储单元被配置为将构建的相关映射表存储至目标平台的存储器;加载单元被配置为在目标平台加载LN算子的输入张量。
[0120] 计算单元被配置为根据LN算子的计算公式、相关映射表和输入张量计算目标输出张量。根据LN算子的计算公式、相关映射表和输入张量计算目标输出张量的具体过程如实施例1中的步骤S104.1~S104.7。
[0121] 在一些实施例中,所述计算受限平台实现LN算子量化的装置可以结合任一实施例的计算受限平台实现LN算子量化的方法特征,反之亦然,在此不赘述。
[0122] 实施例3
[0123] 在本发明实施例中,提供一种终端设备,包括:存储器、处理器以及存储在存储器上的计算机程序/指令,所述处理器执行所述计算机程序/指令以实现本申请实施例所述的计算受限平台实现LN算子量化的方法。
[0124] 图3示出了一种可以实施本发明实施例的方法或实现本发明实施例的终端设备1000的示意图,在一些实施例中可以包括比图示更多或更少的终端设备。在一些实施例中,可以利用单个或多个终端设备实施。在一些实施例中,可以利用云端或分布式的终端设备实施。
[0125] 如图3所示,终端设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序和/或数据或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序和/或数据而执行各种适当的操作和处理。处理器1001可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器1001可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如,中央处理器(CPU)、图形处理器(GPU)、神经网络处理器(NPU)、数字信号处理器(DSP)等等。在RAM 1003中,还存储有终端设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
[0126] 上述处理器与存储器共同用于执行存储在存储器中的程序,所述程序被计算机执行时能够实现上述各实施例描述的方法、步骤或功能。
[0127] 以下部件连接至I/O接口1005:包括键盘、鼠标、触摸屏等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。图3中仅示意性示出部分组件,并不意味着终端设备1000只包括图3所示组件。
[0128] 上述实施例阐明的系统、装置、模块或单元,可以由计算机或其关联部件实现。计算机例如可以为移动终端、智能电话、个人计算机、膝上型计算机、车载人机交互设备、个人数字助理、媒体播放器、导航设备、游戏控制台、平板电脑、可穿戴设备、智能电视、物联网系统、智能家居、
[0129] 工业计算机、服务器或者其组合。
[0130] 尽管未示出,在本发明实施例中,提供一种计算机可读存储介质,上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本申请实施例所述的计算受限平台实现LN算子量化的方法。
[0131] 在本发明的实施例的存储介质包括永久性和非永久性、可移动和非可移动的可以由任何方法或技术来实现信息存储的物品。存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0132] 在本发明的实施例的方法、程序、系统、装置等,可以在单个或多个连网的计算机中执行或实现,也可以在分布式计算环境中实践。在本说明书实施例中,在这些分布式计算环境中,可以由通过通信网络而被连接的远程处理设备来执行任务。
[0133] 尽管未示出,本发明实施例还提供一种计算机程序产品,包括:计算机程序/指令,该计算机程序/指令被处理器执行时实现本申请实施例所述的计算受限平台实现LN算子量化的方法。
[0134] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本领域技术人员可想到,上述实施例阐明的功能模块/单元或控制器以及相关方法步骤的实现,可以用软件、硬件和软/硬件结合的方式实现。
[0135] 除非明确指出,根据本发明实施例记载的方法、程序的动作或步骤并不必须按照特定的顺序来执行并且仍然可以实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0136] 在本文中,针对本发明的多个实施例进行了描述,但为简明起见,各实施例的描述并不是详尽的,各个实施例之间相同或相似的特征或部分可能会被省略。在本文中,“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”意指适用于根据本发明的至少一个实施例或示例中,
[0137] 而非所有实施例。上述术语并不必然意味着指代相同的实施例或示例。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0138] 已参考上述实施例具体示出并描述了本发明的示例性系统及方法,其仅为实施本系统及方法的最佳模式的示例。本领域的技术人员可以理解的是可以在实施本系统及/或方法时对这里描述的系统及方法的实施例做各种改变而不脱离界定在所附权利要求中的本发明的精神及范围。

当前第1页 第1页 第2页 第3页
相关技术
存储介质相关技术
实现算子相关技术
唐长成发明人的其他相关专利技术