首页 / 专利库 / 面料 / 整经 / 用于量化神经网络的参数的方法和装置

用于量化神经网络的参数的方法和装置

阅读:551发布:2023-03-04

专利汇可以提供用于量化神经网络的参数的方法和装置专利检索,专利查询,专利分析的服务。并且提供了一种由神经网络量化装置执行的量化神经网络的参数的方法,该方法包括:获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数 算术逻辑单元 (ALU)来执行运算;以及基于该运算的结果,将浮点格式的参数量化为定点格式的参数。,下面是用于量化神经网络的参数的方法和装置专利的具体信息内容。

1.一种由神经网络量化装置执行的量化神经网络的参数的方法,所述方法包括:
获得在学习或推断所述神经网络时使用的浮点格式的参数;
应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元“ALU”来执行运算;以及基于所述运算的结果,将浮点格式的参数量化为定点格式的参数。
2.根据权利要求1所述的方法,其中,执行所述运算包括:
从所述浮点格式的参数中提取符号、第一指数值和第一尾数值;
通过使用所述第一指数值、根据所述浮点格式的类型确定的偏差常数、和所述小数长度来计算被应用了所述小数长度的第二指数值;以及
基于所述第二指数值,通过对所述第一尾数值执行比特操纵运算和整数运算来计算第二尾数值。
3.根据权利要求2所述的方法,其中,计算被应用了所述小数长度的第二指数值包括:
执行从所述第一指数值中减去所述偏差常数的整数运算;以及
通过执行将所述小数长度与减去所述偏差常数的整数运算的结果相加的整数运算,来计算所述第二指数值。
4.根据权利要求2所述的方法,其中,计算所述第二尾数值包括:
通过将比特值1添加到所述第一尾数值之前的位置来更新所述第一尾数值;
将所述第一尾数值的比特数与所述第二尾数值进行比较;以及
基于所述比较的结果将经更新的第一尾数值向右移位。
5.根据权利要求4所述的方法,其中,计算所述第二尾数值还包括:
当确定所述第二指数值小于所述第一尾数值的比特数时,将经更新的第一尾数值向右移位以下值:该值是通过从根据所述浮点格式的类型确定的预定数目中减去所述第二指数值所获得的,以便确定是否舍入所述定点;
从经移位的第一尾数值中提取最低有效比特“LSB”值,所述最低有效比特“LSB”值是确定是否舍入所述定点的因子;以及
通过以下方式来计算所述第二尾数值:通过将经移位的第一尾数值再次向右移位1并添加所提取的LSB值来确定是否舍入所述定点。
6.根据权利要求5所述的方法,其中,所述量化包括:
将计算出的第二尾数值的比特数调整为等于所述定点格式的比特数;以及通过将所述符号应用于经调整的第二尾数值,将所述浮点格式的参数量化为所述定点格式。
7.根据权利要求4所述的方法,其中,计算所述第二尾数值还包括:
当确定所述第二指数值等于或大于所述第一尾数值的比特数时,将所述第二指数值与通过从所述定点的比特宽度中减去2所获得的值进行比较;以及
当所述第二指数值大于通过从所述定点的比特宽度中减去2所获得的值时,改变所述定点的格式然后重新执行所述运算,以及
当所述第二指数值小于或等于通过从所述定点的比特宽度中减去2所获得的值时,将经更新的第一尾数值向左移位所述第二指数值与所述第一尾数值的比特数之间的差,并将所述符号应用于经向左移位的第一尾数值,以将所述浮点格式的参数量化为所述定点格式。
8.根据权利要求5所述的方法,其中
当所述浮点格式为单精度浮点格式时,所述偏差常数为十进制数127,所述第一尾数值的比特数为十进制数23,以及所述预定数目为十进制数22,以及
当所述浮点格式为双精度浮点格式时,所述偏差常数为十进制数1023,所述第一尾数值的比特数为十进制数52,以及所述预定数目为十进制数51。
9.根据权利要求1所述的方法,还包括:
基于构成所述神经网络的层中的接收所述浮点格式的参数的层的处理条件,将所述定点格式的经量化的参数转换为所述浮点格式;
向所述层提供所述浮点格式的参数;以及
执行所述运算以便将在所述层中处理的所述浮点格式的参数量化回到所述定点格式的参数。
10.一种用于量化神经网络的参数的神经网络量化装置,所述神经网络量化装置包括:
存储器,被配置为存储至少一个程序;以及
处理器,被配置为通过执行所述至少一个程序来量化所述神经网络的参数,其中,所述处理器被配置为:
获得在学习或推断所述神经网络时使用的浮点格式的参数;
应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元“ALU”来执行运算,以及基于所述运算的结果,将所述浮点格式的参数量化为所述定点格式的参数。
11.根据权利要求10所述的神经网络量化装置,其中,所述处理器还被配置为:
从所述浮点格式的参数中提取符号、第一指数值和第一尾数值;
通过使用所述第一指数值、根据所述浮点格式的类型确定的偏差常数、和所述小数长度,来计算被应用了所述小数长度的第二指数值;以及
基于所述第二指数值,通过对所述第一尾数值执行比特操纵运算和整数运算来计算第二尾数值。
12.根据权利要求11所述的神经网络量化装置,其中,所述处理器还被配置为:
执行从所述第一指数值中减去所述偏差常数的整数运算;以及
通过执行将所述小数长度与减去所述偏差常数的整数运算的结果相加的整数运算,来计算所述第二指数值。
13.根据权利要求11所述的神经网络量化装置,其中,所述处理器还被配置为:
通过将比特值1加到所述第一尾数值之前的位置来更新所述第一尾数值;
将所述第一尾数值的比特数与所述第二尾数值进行比较;以及
基于所述比较的结果将经更新的第一尾数值向右移位。
14.根据权利要求13所述的神经网络量化装置,其中,所述处理器还被配置为:
当确定所述第二指数值小于所述第一尾数值的比特数时,将经更新的第一尾数值向右移位以下值:该值是通过从根据浮点格式的类型确定的预定数目中减去所述第二指数值所获得的,以便确定是否舍入所述定点;
从经移位的第一尾数值中提取最低有效比特“LSB”值,所述最低有效比特“LSB”值为确定是否舍入所述定点的因子;以及
通过以下方式来计算所述第二尾数值:通过将经移位的第一尾数值再次向右移位1并添加所提取的LSB值来确定是否舍入所述定点。
15.根据权利要求14所述的神经网络量化装置,其中,所述处理器还被配置为:
将计算出的第二尾数值的比特数调整为等于所述定点格式的比特数;以及通过将所述符号应用于经调整的第二尾数值,将所述浮点格式的参数量化为所述定点格式。
16.根据权利要求13所述的神经网络量化装置,其中,所述处理器还被配置为:
当确定所述第二指数值等于或大于所述第一尾数值的比特数时,将所述第二指数值与通过从所述定点的比特宽度中减去2所获得的值进行比较;以及
当所述第二指数值大于通过从所述定点的比特宽度中减去2所获得的值时,改变所述定点的格式然后重新执行所述运算,以及
当所述第二指数值小于或等于通过从所述定点的比特宽度中减去2所获得的值时,将经更新的第一尾数值向左移位所述第二指数值与所述第一尾数值的比特数之间的差,并将所述符号应用于经向左移位的第一尾数值,以将所述浮点格式的参数量化为所述定点格式。
17.根据权利要求14所述的神经网络量化装置,其中
当所述浮点格式为单精度浮点格式时,所述偏差常数为十进制数127,所述第一尾数值的比特数为十进制数23,以及所述预定数目为十进制数22,以及
当所述浮点格式为双精度浮点格式时,所述偏差常数为十进制数1023,所述第一尾数值的比特数为十进制数52,以及所述预定数目为十进制数51。
18.根据权利要求10所述的神经网络量化装置,其中,所述处理器还被配置为:
基于从构成所述神经网络的层中的接收所述浮点格式的参数的层的处理条件,将所述定点格式的经量化的参数转换为所述浮点格式;
向所述层提供浮点格式的参数;以及
执行所述运算以便将在所述层中处理的所述浮点格式的参数量化回到所述定点格式的参数。
19.一种其上记录有计算机程序的非暂时性计算机可读记录介质,所述计算机程序在由计算机执行时执行根据权利要求1所述的方法。

说明书全文

用于量化神经网络的参数的方法和装置

[0001] 相关申请的交叉引用
[0002] 本申请要求于2017年10月19日在韩国知识产权局提交的韩国专利申请No.10-2017-0135868的权益,该申请的公开内容通过引用全部并入本文中。

技术领域

[0003] 本公开涉及一种用于量化神经网络的参数的方法和装置。

背景技术

[0004] 神经网络是指对生物脑进行建模的计算架构。随着神经网络技术的最新发展,各种类型的电子系统通过使用神经网络来分析输入数据并提取有效信息。
[0005] 最近,已经积极地进行了用于有效利用具有低功率的深度神经网络(DNN)的硬件加速器的研究。用于处理神经网络的装置需要对复杂输入数据的大量运算。
[0006] 具体地,为了通过使用神经网络实时分析大量输入数据并提取期望信息,在以低功率和低性能实现的设备中需要有效处理与神经网络有关的运算的技术。发明内容
[0007] 提供了用于量化神经网络的参数的方法和装置。
[0008] 提供了一种其上记录有计算机程序的非暂时性计算机可读记录介质,该计算机程序在由计算机执行时执行各方法。
[0009] 其它方面部分地将在以下描述中阐述,且部分地将通过以下描述而变得清楚明白,或者可以通过对实施例的实践来获知。
[0010] 根据实施例的一个方面,由神经网络量化装置执行的量化神经网络的参数的方法包括:获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元(ALU)来执行运算;以及基于所述运算的结果,将浮点格式的参数量化为定点格式的参数。
[0011] 根据另一实施例的方面,一种用于量化神经网络的参数的神经网络量化装置包括:存储器,被配置为存储至少一个程序;以及处理器,被配置为通过执行至少一个程序来量化神经网络的参数。处理器被配置为获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元(ALU)来执行运算,以及基于运算的结果将浮点格式的参数量化为定点格式的参数。
[0012] 根据另一实施例的方面,一种非暂时性计算机可读记录介质上记录有计算机程序,该计算机程序在由计算机执行时执行上述方法。附图说明
[0013] 通过以下结合附图对实施例的描述,这些和/或其他方面将变得明确并且更容易理解,在附图中:
[0014] 图1示出了根据实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例;
[0015] 图2示出了根据实施例的在神经网络中执行的运算;
[0016] 图3是示出了根据实施例的神经网络推断装置的硬件结构的框图
[0017] 图4示出了根据实施例的浮点和定点;
[0018] 图5是根据实施例的由神经网络量化装置执行的量化神经网络的参数的方法的流程图
[0019] 图6是用于说明根据实施例的在将浮点量化为定点期间执行比特操纵运算和整数运算的示例的示意图;
[0020] 图7是用于说明根据实施例的在将浮点量化为定点的同时执行比特数的舍入和调整的示例的示意图;以及
[0021] 图8至图10是根据实施例的将浮点实数量化为定点整数的过程的流程图。

具体实施方式

[0022] 因此,在整个公开中使用的表达“根据实施例”不一定指示相同的实施例。
[0023] 可以在功能组件和各种处理步骤的意义下描述前述实施例。这些功能块的一部分或全部可以由被配置为执行指定功能的任何数目的硬件和/或软件组件来实现。例如,根据本公开的功能块可以由一个或多个微处理器或由用于预定功能的电路组件来实现。此外,例如,根据本公开的功能块可以用任何编程或脚本语言来实现。功能块可以被实现为在一个或多个处理器上执行的算法。此外,本文所述的实施例可以采用用于电子配置、信号处理和/或控制、数据处理等的任何数目的传统技术。词语“机构”、“元件”、“装置”和“配置”被广泛地使用而不限于机械或物理实施例。
[0024] 此外,所呈现的各种附图中示出的组件之间的连接线或连接器意在表示组件之间的示例性功能关系和/或物理或逻辑连接。组件之间的连接可以由实际设备中的许多备选或附加功能关系、物理连接或逻辑连接来表示。
[0025] 现在将参照附图更完全地对本公开进行描述,在附图中示出了本公开的示例实施例。
[0026] 图1示出了根据实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例。
[0027] 参考图1,神经网络学习装置10可以对应于具有各种处理功能的计算设备,处理功能是例如生成神经网络、训练或学习神经网络、将浮点格式神经网络量化为定点格式神经网络、或重新训练神经网络之类的功能。例如,神经网络学习装置10可被实现为各种类型的设备,诸如个人计算机(PC)、服务器设备、移动设备等。
[0028] 神经网络学习装置10可以通过重复训练(学习)给定的初始神经网络来生成经训练的神经网络11。在这种状态下,就确保神经网络的处理准确度而言,初始神经网络可以具有浮点格式参数,例如,32比特浮点精度的参数。参数可以包括向神经网络输入/从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、权重、偏差等。随着重复神经网络的训练,可以调整神经网络的浮点参数以相对于给定输入来运算更准确的输出。
[0029] 神经网络学习装置10可以向硬件加速器(例如,神经网络推断装置20)发送经训练的神经网络11。神经网络推断装置20可被包括在移动设备、嵌入式设备等中。神经网络推断装置20是用于驱动经量化的神经网络21的专用硬件。由于神经网络推断装置20以相对低的功率或低性能来实现,因此神经网络推断装置20可以被实现为更适合于定点运算而不是浮点运算。神经网络推断装置20可以对应于(但不限于)张量处理单元(TPU)、神经引擎等,它们是用于驱动神经网络的专用模块。
[0030] 用于驱动经量化的神经网络21的神经网络推断装置20可以在与神经网络学习装置10相独立的单独设备中实现。然而,本公开不限于此,并且神经网络推断装置20可以与神经网络学习装置10在相同的设备中实现。
[0031] 然而,与定点计算相比,浮点计算需要相对大量的运算和相对频繁的存储器访问。具体地,处理神经网络所需的大多数运算已知为乘法和累加(MAC)运算。因此,在具有相对低处理性能的智能电话、平板电脑、可穿戴设备等中包括的神经网络推断装置20中,对具有浮点格式参数的神经网络的处理可能不顺畅。结果,为了在允许的准确度损失内驱动神经网络同时充分减少上述设备中的运算次数,可以量化在神经网络中处理的浮点格式参数。
参数量化可以表示具有高精度的浮点格式参数到具有低精度的定点格式参数的转换。
[0032] 神经网络量化装置执行将经训练的神经网络11的参数转换为特定比特数的定点格式的量化。神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。考虑到要部署经量化的神经网络21的神经网络推断装置20的设备的处理性能,神经网络量化装置可以执行将经训练的神经网络11的参数转换为特定比特数的定点格式的量化,并且神经网络量化装置可以向要部署经量化的神经网络21的神经网络推断装置20发送经量化的神经网络21。
[0033] 要部署经量化的神经网络21的神经网络推断装置20可被包括在:例如自动驾驶车辆、机器人、智能电话、平板设备、增强现实(AR)设备、物联网(IoT)设备等中,其通过使用神经网络来执行语音识别图像识别等,但是本公开不限于此。
[0034] 图2示出了根据实施例的在神经网络2中执行的运算。
[0035] 参考图2,神经网络2可以具有输入层隐藏层输出层的结构,可以基于接收到的输入数据来执行运算,例如,I1和I2,并且可以基于上述运算的结果来生成输出数据,例如,o1和o2。
[0036] 如上所述,神经网络2可以是包括两个或更多个隐藏层在内的深度神经网络(DNN)或n层神经网络。例如,如图2所示,神经网络2可以是包括输入层层1、两个隐藏层层2和层3以及输出层层4在内的DNN。当神经网络2由DNN架构实现时,由于神经网络2包括用于处理有效信息的相对更多层,因此神经网络2可以比具有单一层的神经网络处理更复杂的数据集。尽管神经网络2被示出为包括四层,但这仅仅是示例性的,并且神经网络2可以包括更多或更少的层、或更多或更少的通道。换句话说,神经网络2可以包括具有与图2所示结构不同的各种结构的层。
[0037] 神经网络2中包括的每个层可以包括多个通道。通道可以对应于多个人工节点,其被称为神经元、处理元件(PE)、单元或与其类似的术语。例如,如图2所示,层1可以包括两个通道(节点),并且层2和层3中的每一个层可以包括三个通道。然而,这仅仅是示例性的,并且神经网络2中包括的每个层可以包括各种数目的通道(节点)。
[0038] 神经网络2的各个层中包括的通道可以彼此连接以处理数据。例如,一个通道可以从其他通道接收数据并处理数据,并且可以向其他通道输出运算结果。
[0039] 每个通道的输入和输出可以分别被称为输入激活和输出激活。换句话说,激活可以是与一个通道的输出对应的参数,并且同时是下一层中包括的通道的输入。每个通道可以基于从前一层中包括的通道接收的激活、权重和偏差来确定其自己的激活。权重是用于计算每个通道中的输出激活的参数,并且可以是向通道之间的连接关系分配的值。
[0040] 每个通道可以由接收输入并输出输出激活的计算单元或处理元件来处理,并且可以映射每个通道的输入和输出,当σ表示激活函数, 表示从第(i-1)层中包括的第k通道到第i层中包括的第j通道的权重, 表示第i层中包括的第j通道的偏差,以及 表示第i层的第j通道的激活时,激活 可以通过使用下面的公式1来计算。
[0041] 【公式1】
[0042]
[0043] 如图2所示,第二层层2的第一通道CH 1的激活可以由 表示。此外,根据式1,可以具有值 然而,上述公式1仅是用于描述用于处理神经网络2中的数据的激活、权重和偏差的示例,并且本公开不限于此。激活可以是通过允许从前一层接收的激活的加权和通过激活函数(例如S型函数(sigmoidfunction)或整流线性单元(ReLU)函数)所获得的值。
[0044] 通常,浮点格式参数和定点格式参数可以用作层的输入。浮点格式参数和定点格式参数也可以用作权重和偏差的值。另一方面,因为构成神经网络的一些层需要高精度值作为输入,所以这些层可以接收浮点格式参数作为输入。
[0045] 如上所述,在神经网络2中,在彼此内联的多个通道之间交换大量数据集,并且许多数据集在通过各层的同时经历大量运算。因此,需要一种技术,该技术可以减少处理复杂输入数据所需的运算量并同时降低准确度损失。
[0046] 图3是示出了根据实施例的神经网络推断装置20的硬件结构的框图。
[0047] 参考图3,神经网络推断装置20可以接收浮点格式参数并将所接收的浮点格式参数量化为定点格式,而不是从神经网络学习装置10接收经量化的神经网络21。
[0048] 神经网络推断装置20可以通过使用经量化的定点格式参数,使用由神经网络学习装置10生成的神经网络来执行推断。神经网络推断装置20可以基于特定层的处理条件将经量化的定点格式参数转换为浮点格式参数。
[0049] 处理器210执行用于控制神经网络推断装置20的所有功能。例如,处理器210通过执行神经网络推断装置20中的存储器220中存储的程序来控制神经网络推断装置20的所有功能。处理器210可以由在神经网络推断装置20中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)等来实现。然而,本公开并不限于此。
[0050] 存储器220是用于存储神经网络推断装置20中处理的各个数据的硬件。例如,存储器220可以存储神经网络推断装置20中的经处理或要处理的数据。此外,存储器220可以存储要由神经网络推断装置20驱动的应用、驱动程序(driver)等。存储器220可以是(但不限于)动态随机存取存储器(DRAM)。存储器220可以包括从易失性存储器和非易失性存储器中选择的至少一个。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)、电RAM(FRAM)等。易失性存储器可以包括DRAM、静态RAM(SRAM)、同步DRAM(SDRAM)、PRAM、MRAM、RRAM、铁电RAM(FeRAM)等。在该实施例中,存储器220可以包括以下至少一项:硬盘驱动器(HDD)、固态驱动器(SSD)、高密度闪存(CF)、安全数字(SD)卡、微安全数字(Micro-SD)卡、迷你安全数字(Mini-SD)卡、极限数字(xD)卡和记忆棒。
[0051] 神经网络推断装置20可以被包括在诸如智能电话、平板电脑、可穿戴设备等的移动设备、嵌入式设备等中,其具有相对低的处理性能。因为与定点相比,浮点需要相对大量的运算和相对频繁的存储器访问,所以在智能电话、可穿戴设备等中包括的神经网络推断装置20中,具有浮点格式参数的神经网络的处理可能不顺畅。为了解决该问题,神经网络推断装置20的处理器210可以将在神经网络中处理的浮点格式参数量化为定点格式参数。
[0052] 在不使用特殊硬件结构或库的情况下,处理器210可以通过使用整数算术逻辑单元(ALU)执行比特操纵运算和整数运算来将浮点格式参数量化为定点格式参数。根据实施例,处理器210可以将32比特浮点量化为16比特或更少比特的定点。处理器210可以被包括在神经网络量化装置中,该神经网络量化装置将浮点格式参数量化为定点格式参数。神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。
[0053] 处理器210可以获得用于学习或推断神经网络的浮点格式参数,并且可以从所获得的浮点格式参数中提取符号、第一指数值和第一尾数值。
[0054] 处理器210可以通过使用第一指数值和定点格式的小数长度来计算第二指数值,并且通过基于计算出的第二指数值对第一尾数值执行比特操纵来计算第二尾数值。处理器210可以通过使用计算出的第二尾数值的最低有效比特(LSB)和提取的符号来将浮点格式参数量化为定点格式。
[0055] 下面参考图4详细描述通过使用处理器210将浮点格式参数量化为定点格式参数的过程。
[0056] 神经网络中包括的层具有各种处理条件。根据实施例,构成神经网络的一些层可以接收高精度浮点格式参数作为输入。此时,处理器210可以将经量化的定点格式参数转换回浮点格式参数,然后可以提供浮点格式参数作为一些层的输入。此后,处理器210可以通过使用上述方法将在一些层中处理的浮点格式参数量化回到定点格式,以便向下一层发送参数。
[0057] 存储器220可以存储由处理器210处理或将要处理的神经网络相关数据集,例如,未训练的初始神经网络的数据、在训练过程中生成的神经网络的数据、完成了所有训练的神经网络的数据、经量化的神经网络的数据等。存储器220还可以存储与神经网络的训练算法、量化算法等有关的各种程序,它们将由处理器210执行。存储器220还可以存储在处理器210通过使用整数ALU执行比特操纵和整数运算时计算出的中间值。
[0058] 图4示出了根据实施例的浮点和定点。
[0059] 参考图4的浮点示例410,浮点值可以表示为“a×2b”,其中“a”对应于尾数并且“b”对应于指数。根据实施例,当浮点格式是单精度浮点格式时,浮点值可以由32比特表示,包括一个符号比特、8个指数比特和23个尾数比特。
[0060] 除了单精度浮点格式之外,浮点格式的示例还包括64比特双精度浮点格式、43比特或更多比特的扩展单精度浮点格式以及79比特或更多比特的扩展双精度浮点格式(通常为80比特)。
[0061] 接下来,参考定点示例420,定点可以由“Qm.n”表示,其中m是等于或大于1的自然数,并且n是等于或大于0的整数。在表达式中,“m”表示比特宽度,并且“n”表示指示小数点后的数目的比特数(或小数长度)。定点的比特宽度m是通过对一个符号比特、“m-1-n”个整数比特和n个小数比特求和所获得的值。由于指示定点比特之中的小数部分的比特是n个比特,所以小数长度是n。
[0062] 例如,“Q8.4”是包括一个符号比特、3个整数比特和4个小数比特在内的总共8比特定点值,“Q32.30”是1个符号比特、1个整数比特和30个小数比特在内的总共32比特定点值,并且“Q32.16”是包括1个符号比特、15个整数比特和16个小数比特在内的总共32比特定点值。
[0063] 当使用浮点格式时,可以表示非常小的值或非常大的值。然而,需要定点单元(FPU)或FPU仿真库来执行算术运算。当使用定点格式时,可表达值的范围比使用浮点格式时更受限制,但是神经网络量化装置可以通过仅使用整数ALU来执行算术运算。
[0064] 量化是指将高精度浮点实数类型值转换为低精度定点整数类型值。
[0065] 图5是根据实施例的由神经网络量化装置执行的量化神经网络的参数的方法的流程图。
[0066] 神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。
[0067] 参考图5,在运算510中,神经网络量化装置可以获得在学习或推断神经网络时使用的浮点格式参数。
[0068] 神经网络量化装置可以从诸如PC或服务器之类的外部设备获得浮点格式参数。根据实施例,神经网络的参数可以包括向神经网络输入/从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、权重、偏差等。
[0069] 根据实施例,神经网络量化装置可以根据电气和电子工程师协会(IEEE)标准754来获得各种格式的浮点值。例如,除了单精度之外,神经网络量化装置还可以根据64比特双精度、43比特或更多比特的扩展单精度以及79比特或更多比特(通常地,80比特)的扩展双精度来获得浮点值。
[0070] 在运算520中,神经网络量化装置可以应用定点格式的小数长度,并且为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,神经网络量化装置可以通过使用整数ALU来执行运算。
[0071] 在无需使用特殊硬件结构或库的情况下,神经网络量化装置可以通过仅使用整数ALU来执行比特操纵运算和整数运算。
[0072] 根据实施例,神经网络量化装置可以通过执行将小数长度添加到浮点格式的指数部分的整数加法运算,来计算与浮点值乘以“2的(小数长度)次幂”的乘积相等的结果值。通过执行整数加法运算和算术移位运算,神经网络量化装置可以根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点。通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以在将高精度转换为低精度时最小化量化结果的准确度损失。
[0073] 在运算530中,神经网络量化装置可以基于运算的结果将浮点格式参数量化为定点格式参数。
[0074] 神经网络量化装置可以将在运算520中获得的运算结果值的比特数改变(调整)为等于定点格式。神经网络量化装置最后可以通过应用浮点的符号比特来将浮点量化为定点。
[0075] 不是从神经网络学习装置10接收经量化的神经网络21,而是神经网络量化装置可以接收浮点格式参数并将接收到的浮点格式参数量化为定点格式以生成神经网络,或者训练(或学习)神经网络。
[0076] 图6是用于说明根据实施例的在将浮点量化为定点期间执行比特操纵运算和整数运算的示例的示意图。
[0077] 参考图6,示出了将32比特格式浮点量化为“Q16.4”格式定点的过程。32比特格式浮点的符号具有一比特,其第一指数值具有8比特,并且其第一尾数值具有23比特。例如,与实数值“51.737673200562085”对应的32比特格式浮点值可以被分成符号“0”、第一指数值“10000100”(8比特)和第一尾数值“10011101111001101100001”(23比特)。“Q16.4”格式定点的符号具有一比特,其整数具有11比特,并且其小数具有4比特。
[0078] 在图6中,浮点的符号对应于比特索引s,第一指数值的8比特对应于比特索引e1至e8,并且第一尾数值的23比特对应于比特索引m1至m23。定点的符号对应于比特索引s,整数的11比特对应于比特索引i1到i11,并且小数的4比特对应于比特索引f1到f4。
[0079] 根据IEEE标准,在浮点格式中,通过将偏差常数加到实际指数值来确定第一指数值。因此,为了将第一指数值返回到实际指数值,神经网络量化装置可以从第一指数值中减去偏差常数。神经网络量化装置可以将经量化的定点的小数长度算术地加到通过从第一指数值中减去偏差常数所获得的结果值上,以便反映经量化的定点的小数长度。
[0080] 根据实施例,在运算610中,神经网络量化装置可以通过将小数长度“4”加到通过从第一指数值“132”中减去偏差常数“127”所获得的结果值“5”上,来计算出“9”作为第二指数值。第二指数值为“9”意味着包括第一尾数值的最高有效比特(MSB)在内的9个高比特m1到m9的值被插入到定点的包括LSB在内的9个低比特i7到i11和f1到f4中。根据是否执行舍入,神经网络量化装置可以将以下结果插入到定点的9个低比特i7到i11和f1到f4中:将一个比特的值加到9个高比特m1到m9的结果。
[0081] 根据IEEE标准,浮点格式的第一尾数值通过省略1来表示,该1是浮点的前位值(front place value)。神经网络量化装置可以通过将比特值1添加到第一尾数值前面的位置来再次表示所省略的值1。
[0082] 参考运算620,第一尾数值“100111......0001”(23比特)具有实际值“1.100111......0001”。神经网络量化装置可以通过将比特值1加到第一尾数值前面的位置来将第一尾数值更新为“110011101111001101100001”(24比特)。作为运算610的结果,将值插入到定点的9个低比特i7到i11和f1到f4中,且因此左侧的经更新的第一尾数值的第一比特(即,MSB)被插入到位于距定点的LSB的第十个的比特i6中。
[0083] 根据运算610和运算620,可以确定用浮点的第一尾数值填充距定点的LSB的多少个比特(即,多少个低比特)。
[0084] 根据另一实施例,当第二指数值等于或大于第一尾数值的比特数时,神经网络量化装置可以将第二指数值与通过从定点的比特宽度中减去2所获得的值进行比较。
[0085] 当确定第二指数值大于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以改变预设的定点格式。神经网络量化装置可以在改变定点的格式后重新执行运算。
[0086] 另一方面,当确定第二指数值小于或等于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以将经更新的第一尾数值向左移位第二指数值和第一尾数值的比特数之间的差。例如,当第二指数值是25并且定点的比特宽度是26时,神经网络量化装置可以将经更新的第一尾数值向左移位2,该2是通过从第二指数值25中减去第一尾数值的比特数23而获得的。神经网络量化装置可以通过将符号应用于经向左移位的第一尾数值来将浮点格式参数量化为定点格式。
[0087] 图7是用于说明根据实施例的在将浮点量化为定点的同时执行比特数的舍入和调整的示例的示意图。
[0088] 通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以最小化量化结果(经量化的定点值)的准确度损失。神经网络量化装置可以基于图6的运算610的结果来确定是否舍入定点。参考图6的运算610,因为作为运算610的结果,第二指数值是“9”,所以可以确定位于距第一尾数值的MSB的第十个的比特m10的值为量化后要被丢弃的比特值之中的最高有效比特。神经网络量化装置可以将以下结果值插入到定点的9个低比特i7到i11和f1到f4中:通过将比特m10的值加到第一尾数值的9个高比特m1到m9所获得的结果值。
[0089] 根据另一实施例,将比特m10的值加到第一尾数值的9个高比特m1到m9的结果值的比特数可以是10。在这种情况下,神经网络量化装置可以将10个比特的结果值插入到定点的10个低比特i6到i11和f1到f4中。
[0090] 在下文中,反映执行或不执行舍入的定点的10个低比特i6到i11和f1到f4的值被称为第二尾数值。
[0091] 神经网络量化装置可以用0来填充第二尾数值前面的比特,其数目对应于第二尾数值的比特数与定点格式的比特数之间的差,使得第二尾数值的比特数等于定点格式的比特数。在上面的示例中,第二尾数值具有10比特i6到i11和f1到f4,而定点格式是“Q16.4”,且因此具有16比特的比特宽度,因而存在6比特的差。因此,神经网络量化装置可以通过用0来填充第二尾数值之前的6比特(“0000001100111100”(16比特))来将比特数调整为等于定点格式的比特数。
[0092] 神经网络量化装置可以通过将符号应用于已经调整比特数的第二尾数值来最终将浮点值量化为定点值。在上面的示例中,作为应用浮点值的符号s“0”的结果,经量化的定点值变为“0000001100111100”(16比特)。
[0093] 图8~图10是根据实施例的将浮点实数量化为定点整数的过程的流程图。
[0094] 图8和图9示出了将与实数值“51.737673200582085’对应的32比特格式浮点值量化为“Q16.4”格式定点整数的情况。
[0095] 参考图8,在运算810中,神经网络量化装置可以从浮点格式参数中提取符号、第一指数值和第一尾数值。
[0096] 浮点分为符号、指数和尾数,且指数的比特数和尾数的比特数可以根据浮点的格式(单精度(32比特)、双精度(64比特)等)而变化。32比特格式浮点值具有一个符号比特、8个指数比特和23个尾数比特,并且64比特格式浮点值具有一个符号比特、11个指数比特和52个尾数比特。
[0097] 例如,与实数值“51.737673200582085”对应的32比特格式浮点值是“0(符号)10000100(指数)10011101111001101100001(尾数)”。神经网络量化装置可以提取“0”作为符号值,“10000100”(8比特)作为第一指数值,并且“10011101111001101100001”(23比特)作为第一尾数值。
[0098] 在运算820中,神经网络量化装置可以通过使用定点格式的第一指数值、偏差常数和小数长度来计算第二指数值。
[0099] 根据IEEE标准,在浮点格式中,通过将偏差常数加到实际指数值来确定第一指数值。因此,为了将第一指数值返回到实际指数值,神经网络量化装置需要从第一指数值中减去偏差常数。根据该标准,偏差常数为2(k-1)-1(其中k是指数部分的比特数),并且k依赖于浮点的格式。
[0100] 为了反映经量化的定点的小数长度,神经网络量化装置可以将小数长度算术地加到实际指数值上。神经网络量化装置可以通过将小数长度算术地加到通过从第一指数值中减去偏差分量所获得的结果值来计算与将整个浮点值乘以“2的(小数长度)次幂”的乘积相等的值。
[0101] 在上面的示例中,所提取的第一指数值是“10000100(二进制)”,并且对应于“132(十进制)”。因为“Qm.n”格式的定点整数值(其中m和n是自然数)表示为“Q16.frac”(其中frac指示定点格式的小数长度),所以“Q16.4”中的小数长度为4。浮点的偏差常数为2(k-1)-1(k是指数部分的比特数),并且在32比特格式中是2(8-1)-1=127。
[0102] 如上所述,可以通过从第一指数值中减去浮点的偏差常数并加上定点格式的小数长度来计算第二指数值。在上面的示例中,第二指数值为9(132(第一指数值)-127(偏差常数)+4(小数长度)=9)。
[0103] 在运算830中,神经网络量化装置可以通过将比特值1加到第一尾数值前面的位置来更新第一尾数值。
[0104] 根据IEEE标准,浮点格式的第一尾数值通过省略1来表示,该1是浮点的前位值。神经网络量化装置可以通过将比特值1添加到第一尾数值前面的位置来再次表示所省略的比特1。在上面的示例中,通过添加比特值1所获得的经更新的第一尾数值是“110011101111001101100001”(24比特)。
[0105] 在运算840中,神经网络量化装置可以将第一尾数值的比特数与第二指数值进行比较。
[0106] 通过确定第一尾数值的比特数和第二指数值之间的差是否等于或大于0,神经网络量化装置可以将第一尾数值的比特数与第二指数值进行比较。例如,在单精度的情况下,第一尾数值的比特数是23,并且神经网络量化装置可以将在运算820中计算出的第二指数值“9”与第一尾数值的比特数“23”进行比较。
[0107] 为了确定要以定点格式反映的第一尾数值的比特值,神经网络量化装置可以将第二指数值与第一尾数值的比特数进行比较。神经网络量化装置可以经由移位运算以定点格式反映第一尾数值的所确定的比特值。
[0108] 当在运算840中确定第二指数值小于第一尾数值的比特数时,过程进行到图9的运算910。另一方面,当在运算840中确定第二指数值大于或等于第一尾数值的比特数时,过程可以进行到图10的运算1010。
[0109] 根据实施例,当第二指数值小于第一尾数值的比特数时,并且如在上面的实施例中,第二指数值是“9”并且第一尾数值的比特数是“23”,这意味着在定点中仅反映第一尾数值的9个高比特值,而在定点中未反映其余的14比特值。根据另一实施例,当第二指数值等于或大于第一尾数值的比特数时,这可以意味着在定点中反映第二指数值的所有比特。然而,当第二指数值大于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以改变定点的格式,然后可以重新执行从运算820开始的运算。
[0110] 另一方面,当第二指数值小于第一尾数值的比特数时,神经网络量化装置可以将在定点中未反映的比特值存储在存储器中,以便稍后在将定点转换回浮点的过程期间使用未反映的比特值。
[0111] 参考图9,在运算910中,当在运算840中确定第二指数值小于第一尾数值的比特数时,神经网络量化装置可以将经更新的第一尾数值向右移位以下值:通过从根据浮点格式的预定数目中减去第二指数值所获得的值。
[0112] 通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以进一步最小化准确度损失。为此,在运算910中,神经网络量化装置可以将经更新的第一尾数值向右移位仅通过从预定数目中减去第二指数值所获得的值(与第一尾数值的比特数-1对应的值),而非将经更新的第一尾数值向右移位以下值:通过从第一尾数值的比特数中减去第二指数值所获得的值。因此,神经网络量化装置可以通过使用仅向右移位预定数目的第一尾数值的LSB来确定执行或不执行舍入。
[0113] 在上面的示例中,经更新的第一尾数值“110011101111001101100001”(24比特)的比特数是24,但是预定数目(与第一尾数值的比特数-1对应的值)为22而第二指数值为9。当经更新的第一尾数值向右移位“22-9=13”时,经移位的第一尾数值是“11001110111”(11比特)。
[0114] 在运算920中,神经网络量化装置可以提取经移位的第一尾数值的LSB。
[0115] 在运算910中,神经网络量化装置可以将第一尾数值仅向右移位与“第一尾数值的比特数-1”对应的值。在这种情况下,经移位的第一尾数值的LSB对应于量化后要被丢弃的比特值之中的最高有效比特。神经网络量化装置可以提取经移位的第一尾数值的LSB,且从而使用所提取的LSB来确定是否舍入经量化的定点。根据实施例,经提取的LSB可以为“1”或“0”。当所提取的LSB为“1”时,这对应于将小数计数为一。当所提取的LSB为“0”时,这对应于忽略小数。
[0116] 在上面的示例中,经移位的第一尾数值是“11001110111”(11比特),并且神经网络量化装置可以提取经移位的第一尾数值的LSB,即,最右边的比特“1”。
[0117] 在运算930中,神经网络量化装置可以将经移位的第一尾数值再次向右移位1,并且可以通过添加所提取的LSB的值来计算第二尾数值。
[0118] 通过将经移位的第一尾数值再次向右移位1,神经网络量化装置可以最终将第一尾数值向右移位以下值:通过从第一尾数值的比特数中减去第二指数值所获得的值(在单精度的情况下为23,而在双精度的情况下为52)。神经网络量化装置可以通过以下方式来计算第二尾数值:通过添加所提取的LSB来确定是否执行舍入。
[0119] 在上面的示例中,当经移位的第一尾数值“11001110111”(11比特)再次向右移位时,获得“1100111011”(10比特),并且通过添加在运算920中提取的LSB“1”来计算第二尾数值“1100111100”(10比特)。
[0120] 在运算940中,神经网络量化装置可以将计算出的第二尾数值的比特数调整为等于定点格式的比特数。
[0121] 根据实施例,神经网络量化装置可以通过用0来填充第二尾数值之前的比特,其数目对应于两个比特数之间的差,来将第二尾数值的比特数调整为等于定点格式的比特数。
[0122] 在上面的示例中,在运算930中计算出的第二尾数值的比特为10比特(1100111100),并且定点格式“Q16.4”的比特为16位(12+4)。神经网络量化装置通过用0填充计算出的第二尾数值之前的6比特而获得16比特(0000001100111100)来调整第二尾数值的比特数。
[0123] 在运算950中,神经网络量化装置可以通过将符号(参见图8的运算810)应用于经调整的第二尾数值来将浮点格式参数量化为定点格式。
[0124] 在上面的示例中,已经被调整了比特数的经调整的第二尾数值是“0000001100111100”(16比特)。参考图8的运算810,因为符号为“0”,所以经最终量化的定点格式参数为“0000001100111100”(16比特)。即使符号为“1”,经最终量化的定点格式参数也为“1000001100111100”(16比特)。
[0125] 神经网络量化装置可以通过仅使用整数ALU执行比特操纵运算和整数运算来将浮点格式参数量化为定点格式参数,并且可以通过使用经量化的定点格式参数来生成神经网络或训练(或学习)或推断神经网络。
[0126] 参考图10,当在图8的运算840中确定第二指数值等于或大于第一尾数值的比特数时,神经网络量化装置可以在运算1010中将第二指数值与通过从定点的比特宽度中减去2所获得的值进行比较。
[0127] 当在运算1010中确定第二指数值大于通过从定点的比特宽度中减去2所获得的值时,过程进行到运算1020。根据IEEE标准,从定点的比特宽度中减去2可以意味着反映从尾数值中省略的比特和符号比特。
[0128] 在运算1020中,神经网络量化装置可以改变预设的定点格式。第二指数值大于通过从定点的比特宽度中减去2所获得的值可以意味着不适合将浮点量化为预设的定点格式,并且神经网络量化装置可以改变定点的格式,然后可以重新执行从运算820开始的运算。
[0129] 因为可以确定可在神经网络中使用的定点的长度,所以硬件加速器可以通过保持定点的长度而仅改变点的位置来改变定点的格式。例如,硬件加速器可以改变定点中的点位置,例如将“Q16.4”格式改变为“Q16.3”或“Q16.5”,然后重新执行从运算820开始的运算。
[0130] 另一方面,当在运算1010中确定第二指数值小于或等于通过从定点的比特宽度中减去2所获得的值时,过程进行到运算1030。
[0131] 在运算1030中,神经网络量化装置可以将经更新的第一尾数值向左移位第二指数值与第一尾数值的比特数之间的差。例如,当第二指数值是25并且定点的比特宽度是26时,神经网络量化装置可以将经更新的第一尾数值向左移位2,该2是通过从第二指数值25中减去第一尾数值的比特数23而获得的。
[0132] 在运算1040中,神经网络量化装置可以通过将符号应用于经向左移位的第一尾数值来将浮点格式参数量化为定点格式。例如,在运算1030中移位之后,将两个值0添加到包括经更新的第一尾数值的LSB在内的两个低比特并且应用符号,且因此神经网络量化装置可以将浮点格式参数量化为定点格式。
[0133] 图8~图10的运算可以同时或顺序执行,并且可以以与图8~图10中所示的顺序不同的顺序执行。
[0134] 本实施例还可以体现为包括可由计算机执行的指令代码(例如,由计算机执行的程序模块)在内的存储介质。计算机可读介质可以是可由计算机访问的任何可用介质,并且包括所有易失性/非易失性和可移动/不可移动介质。此外,计算机可读介质可以包括所有计算机存储和通信介质。计算机存储介质包括通过用于存储信息(例如计算机可读指令代码、数据结构、程序模块或其他数据)的某种方法或技术实现的所有易失性/非易失性介质和可移除/不可移除介质。通信介质通常包括计算机可读指令代码、数据结构、程序模块或诸如载波或其他传输机制之类的经调制的数据信号的其他数据,并且包括任何信息传输介质。
[0135] 本文使用的术语“~单元”可以是诸如处理器或电路之类的硬件组件,和/或由诸如处理器之类的硬件组件执行的软件组件
[0136] 尽管出于说明性目的公开了本发明的实施例,但是本领域普通技术人员将理解,在不脱离本发明的精神和范围的情况下,可以进行各种变化和修改。因此,应该将上述实施例理解为不是限制性的,而是在所有方面都是说明性的。例如,可以分开使用以集成形式描述的各个元件,并且可以在组合的状态下使用分割的元件。
[0137] 尽管已参考附图描述了一个或多个示例实施例,但本领域普通技术人员将理解,在不脱离权利要求所限定的精神和范围的情况下,可以进行形式和细节上的各种改变。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈