CN109685198A - 用于量化神经网络的参数的方法和装置 - Google Patents
用于量化神经网络的参数的方法和装置 Download PDFInfo
- Publication number
- CN109685198A CN109685198A CN201811153487.1A CN201811153487A CN109685198A CN 109685198 A CN109685198 A CN 109685198A CN 201811153487 A CN201811153487 A CN 201811153487A CN 109685198 A CN109685198 A CN 109685198A
- Authority
- CN
- China
- Prior art keywords
- value
- neural network
- floating
- bit
- mantissa
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 225
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013139 quantization Methods 0.000 claims abstract description 122
- 238000007667 floating Methods 0.000 claims description 30
- 230000008859 change Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 5
- 238000006073 displacement reaction Methods 0.000 claims 2
- 230000004913 activation Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 239000000284 extract Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 210000005036 nerve Anatomy 0.000 description 4
- 210000004218 nerve net Anatomy 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 101150071434 BAR1 gene Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
提供了一种由神经网络量化装置执行的量化神经网络的参数的方法,该方法包括:获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元(ALU)来执行运算;以及基于该运算的结果,将浮点格式的参数量化为定点格式的参数。
Description
相关申请的交叉引用
本申请要求于2017年10月19日在韩国知识产权局提交的韩国专利申请No.10-2017-0135868的权益,该申请的公开内容通过引用全部并入本文中。
技术领域
本公开涉及一种用于量化神经网络的参数的方法和装置。
背景技术
神经网络是指对生物脑进行建模的计算架构。随着神经网络技术的最新发展,各种类型的电子系统通过使用神经网络来分析输入数据并提取有效信息。
最近,已经积极地进行了用于有效利用具有低功率的深度神经网络(DNN)的硬件加速器的研究。用于处理神经网络的装置需要对复杂输入数据的大量运算。
具体地,为了通过使用神经网络实时分析大量输入数据并提取期望信息,在以低功率和低性能实现的设备中需要有效处理与神经网络有关的运算的技术。
发明内容
提供了用于量化神经网络的参数的方法和装置。
提供了一种其上记录有计算机程序的非暂时性计算机可读记录介质,该计算机程序在由计算机执行时执行各方法。
其它方面部分地将在以下描述中阐述,且部分地将通过以下描述而变得清楚明白,或者可以通过对实施例的实践来获知。
根据实施例的一个方面,由神经网络量化装置执行的量化神经网络的参数的方法包括:获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元(ALU)来执行运算;以及基于所述运算的结果,将浮点格式的参数量化为定点格式的参数。
根据另一实施例的方面,一种用于量化神经网络的参数的神经网络量化装置包括:存储器,被配置为存储至少一个程序;以及处理器,被配置为通过执行至少一个程序来量化神经网络的参数。处理器被配置为获得在学习或推断神经网络时使用的浮点格式的参数;应用定点格式的小数长度,以及为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,通过使用整数算术逻辑单元(ALU)来执行运算,以及基于运算的结果将浮点格式的参数量化为定点格式的参数。
根据另一实施例的方面,一种非暂时性计算机可读记录介质上记录有计算机程序,该计算机程序在由计算机执行时执行上述方法。
附图说明
通过以下结合附图对实施例的描述,这些和/或其他方面将变得明确并且更容易理解,在附图中:
图1示出了根据实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例;
图2示出了根据实施例的在神经网络中执行的运算;
图3是示出了根据实施例的神经网络推断装置的硬件结构的框图;
图4示出了根据实施例的浮点和定点;
图5是根据实施例的由神经网络量化装置执行的量化神经网络的参数的方法的流程图;
图6是用于说明根据实施例的在将浮点量化为定点期间执行比特操纵运算和整数运算的示例的示意图;
图7是用于说明根据实施例的在将浮点量化为定点的同时执行比特数的舍入和调整的示例的示意图;以及
图8至图10是根据实施例的将浮点实数量化为定点整数的过程的流程图。
具体实施方式
因此,在整个公开中使用的表达“根据实施例”不一定指示相同的实施例。
可以在功能块组件和各种处理步骤的意义下描述前述实施例。这些功能块的一部分或全部可以由被配置为执行指定功能的任何数目的硬件和/或软件组件来实现。例如,根据本公开的功能块可以由一个或多个微处理器或由用于预定功能的电路组件来实现。此外,例如,根据本公开的功能块可以用任何编程或脚本语言来实现。功能块可以被实现为在一个或多个处理器上执行的算法。此外,本文所述的实施例可以采用用于电子配置、信号处理和/或控制、数据处理等的任何数目的传统技术。词语“机构”、“元件”、“装置”和“配置”被广泛地使用而不限于机械或物理实施例。
此外,所呈现的各种附图中示出的组件之间的连接线或连接器意在表示组件之间的示例性功能关系和/或物理或逻辑连接。组件之间的连接可以由实际设备中的许多备选或附加功能关系、物理连接或逻辑连接来表示。
现在将参照附图更完全地对本公开进行描述,在附图中示出了本公开的示例实施例。
图1示出了根据实施例的神经网络将浮点格式的参数量化为定点格式的参数的示例。
参考图1,神经网络学习装置10可以对应于具有各种处理功能的计算设备,处理功能是例如生成神经网络、训练或学习神经网络、将浮点格式神经网络量化为定点格式神经网络、或重新训练神经网络之类的功能。例如,神经网络学习装置10可被实现为各种类型的设备,诸如个人计算机(PC)、服务器设备、移动设备等。
神经网络学习装置10可以通过重复训练(学习)给定的初始神经网络来生成经训练的神经网络11。在这种状态下,就确保神经网络的处理准确度而言,初始神经网络可以具有浮点格式参数,例如,32比特浮点精度的参数。参数可以包括向神经网络输入/从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、权重、偏差等。随着重复神经网络的训练,可以调整神经网络的浮点参数以相对于给定输入来运算更准确的输出。
神经网络学习装置10可以向硬件加速器(例如,神经网络推断装置20)发送经训练的神经网络11。神经网络推断装置20可被包括在移动设备、嵌入式设备等中。神经网络推断装置20是用于驱动经量化的神经网络21的专用硬件。由于神经网络推断装置20以相对低的功率或低性能来实现,因此神经网络推断装置20可以被实现为更适合于定点运算而不是浮点运算。神经网络推断装置20可以对应于(但不限于)张量处理单元(TPU)、神经引擎等,它们是用于驱动神经网络的专用模块。
用于驱动经量化的神经网络21的神经网络推断装置20可以在与神经网络学习装置10相独立的单独设备中实现。然而,本公开不限于此,并且神经网络推断装置20可以与神经网络学习装置10在相同的设备中实现。
然而,与定点计算相比,浮点计算需要相对大量的运算和相对频繁的存储器访问。具体地,处理神经网络所需的大多数运算已知为乘法和累加(MAC)运算。因此,在具有相对低处理性能的智能电话、平板电脑、可穿戴设备等中包括的神经网络推断装置20中,对具有浮点格式参数的神经网络的处理可能不顺畅。结果,为了在允许的准确度损失内驱动神经网络同时充分减少上述设备中的运算次数,可以量化在神经网络中处理的浮点格式参数。参数量化可以表示具有高精度的浮点格式参数到具有低精度的定点格式参数的转换。
神经网络量化装置执行将经训练的神经网络11的参数转换为特定比特数的定点格式的量化。神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。考虑到要部署经量化的神经网络21的神经网络推断装置20的设备的处理性能,神经网络量化装置可以执行将经训练的神经网络11的参数转换为特定比特数的定点格式的量化,并且神经网络量化装置可以向要部署经量化的神经网络21的神经网络推断装置20发送经量化的神经网络21。
要部署经量化的神经网络21的神经网络推断装置20可被包括在:例如自动驾驶车辆、机器人、智能电话、平板设备、增强现实(AR)设备、物联网(IoT)设备等中,其通过使用神经网络来执行语音识别、图像识别等,但是本公开不限于此。
图2示出了根据实施例的在神经网络2中执行的运算。
参考图2,神经网络2可以具有输入层、隐藏层和输出层的结构,可以基于接收到的输入数据来执行运算,例如,I1和I2,并且可以基于上述运算的结果来生成输出数据,例如,o1和o2。
如上所述,神经网络2可以是包括两个或更多个隐藏层在内的深度神经网络(DNN)或n层神经网络。例如,如图2所示,神经网络2可以是包括输入层层1、两个隐藏层层2和层3以及输出层层4在内的DNN。当神经网络2由DNN架构实现时,由于神经网络2包括用于处理有效信息的相对更多层,因此神经网络2可以比具有单一层的神经网络处理更复杂的数据集。尽管神经网络2被示出为包括四层,但这仅仅是示例性的,并且神经网络2可以包括更多或更少的层、或更多或更少的通道。换句话说,神经网络2可以包括具有与图2所示结构不同的各种结构的层。
神经网络2中包括的每个层可以包括多个通道。通道可以对应于多个人工节点,其被称为神经元、处理元件(PE)、单元或与其类似的术语。例如,如图2所示,层1可以包括两个通道(节点),并且层2和层3中的每一个层可以包括三个通道。然而,这仅仅是示例性的,并且神经网络2中包括的每个层可以包括各种数目的通道(节点)。
神经网络2的各个层中包括的通道可以彼此连接以处理数据。例如,一个通道可以从其他通道接收数据并处理数据,并且可以向其他通道输出运算结果。
每个通道的输入和输出可以分别被称为输入激活和输出激活。换句话说,激活可以是与一个通道的输出对应的参数,并且同时是下一层中包括的通道的输入。每个通道可以基于从前一层中包括的通道接收的激活、权重和偏差来确定其自己的激活。权重是用于计算每个通道中的输出激活的参数,并且可以是向通道之间的连接关系分配的值。
每个通道可以由接收输入并输出输出激活的计算单元或处理元件来处理,并且可以映射每个通道的输入和输出,当σ表示激活函数,表示从第(i-1)层中包括的第k通道到第i层中包括的第j通道的权重,表示第i层中包括的第j通道的偏差,以及表示第i层的第j通道的激活时,激活可以通过使用下面的公式1来计算。
【公式1】
如图2所示,第二层层2的第一通道CH 1的激活可以由表示。此外,根据式1,可以具有值然而,上述公式1仅是用于描述用于处理神经网络2中的数据的激活、权重和偏差的示例,并且本公开不限于此。激活可以是通过允许从前一层接收的激活的加权和通过激活函数(例如S型函数(sigmoidfunction)或整流线性单元(ReLU)函数)所获得的值。
通常,浮点格式参数和定点格式参数可以用作层的输入。浮点格式参数和定点格式参数也可以用作权重和偏差的值。另一方面,因为构成神经网络的一些层需要高精度值作为输入,所以这些层可以接收浮点格式参数作为输入。
如上所述,在神经网络2中,在彼此内联的多个通道之间交换大量数据集,并且许多数据集在通过各层的同时经历大量运算。因此,需要一种技术,该技术可以减少处理复杂输入数据所需的运算量并同时降低准确度损失。
图3是示出了根据实施例的神经网络推断装置20的硬件结构的框图。
参考图3,神经网络推断装置20可以接收浮点格式参数并将所接收的浮点格式参数量化为定点格式,而不是从神经网络学习装置10接收经量化的神经网络21。
神经网络推断装置20可以通过使用经量化的定点格式参数,使用由神经网络学习装置10生成的神经网络来执行推断。神经网络推断装置20可以基于特定层的处理条件将经量化的定点格式参数转换为浮点格式参数。
处理器210执行用于控制神经网络推断装置20的所有功能。例如,处理器210通过执行神经网络推断装置20中的存储器220中存储的程序来控制神经网络推断装置20的所有功能。处理器210可以由在神经网络推断装置20中提供的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)等来实现。然而,本公开并不限于此。
存储器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)卡和记忆棒。
神经网络推断装置20可以被包括在诸如智能电话、平板电脑、可穿戴设备等的移动设备、嵌入式设备等中,其具有相对低的处理性能。因为与定点相比,浮点需要相对大量的运算和相对频繁的存储器访问,所以在智能电话、可穿戴设备等中包括的神经网络推断装置20中,具有浮点格式参数的神经网络的处理可能不顺畅。为了解决该问题,神经网络推断装置20的处理器210可以将在神经网络中处理的浮点格式参数量化为定点格式参数。
在不使用特殊硬件结构或库的情况下,处理器210可以通过使用整数算术逻辑单元(ALU)执行比特操纵运算和整数运算来将浮点格式参数量化为定点格式参数。根据实施例,处理器210可以将32比特浮点量化为16比特或更少比特的定点。处理器210可以被包括在神经网络量化装置中,该神经网络量化装置将浮点格式参数量化为定点格式参数。神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。
处理器210可以获得用于学习或推断神经网络的浮点格式参数,并且可以从所获得的浮点格式参数中提取符号、第一指数值和第一尾数值。
处理器210可以通过使用第一指数值和定点格式的小数长度来计算第二指数值,并且通过基于计算出的第二指数值对第一尾数值执行比特操纵来计算第二尾数值。处理器210可以通过使用计算出的第二尾数值的最低有效比特(LSB)和提取的符号来将浮点格式参数量化为定点格式。
下面参考图4详细描述通过使用处理器210将浮点格式参数量化为定点格式参数的过程。
神经网络中包括的层具有各种处理条件。根据实施例,构成神经网络的一些层可以接收高精度浮点格式参数作为输入。此时,处理器210可以将经量化的定点格式参数转换回浮点格式参数,然后可以提供浮点格式参数作为一些层的输入。此后,处理器210可以通过使用上述方法将在一些层中处理的浮点格式参数量化回到定点格式,以便向下一层发送参数。
存储器220可以存储由处理器210处理或将要处理的神经网络相关数据集,例如,未训练的初始神经网络的数据、在训练过程中生成的神经网络的数据、完成了所有训练的神经网络的数据、经量化的神经网络的数据等。存储器220还可以存储与神经网络的训练算法、量化算法等有关的各种程序,它们将由处理器210执行。存储器220还可以存储在处理器210通过使用整数ALU执行比特操纵和整数运算时计算出的中间值。
图4示出了根据实施例的浮点和定点。
参考图4的浮点示例410,浮点值可以表示为“a×2b”,其中“a”对应于尾数并且“b”对应于指数。根据实施例,当浮点格式是单精度浮点格式时,浮点值可以由32比特表示,包括一个符号比特、8个指数比特和23个尾数比特。
除了单精度浮点格式之外,浮点格式的示例还包括64比特双精度浮点格式、43比特或更多比特的扩展单精度浮点格式以及79比特或更多比特的扩展双精度浮点格式(通常为80比特)。
接下来,参考定点示例420,定点可以由“Qm.n”表示,其中m是等于或大于1的自然数,并且n是等于或大于0的整数。在表达式中,“m”表示比特宽度,并且“n”表示指示小数点后的数目的比特数(或小数长度)。定点的比特宽度m是通过对一个符号比特、“m-1-n”个整数比特和n个小数比特求和所获得的值。由于指示定点比特之中的小数部分的比特是n个比特,所以小数长度是n。
例如,“Q8.4”是包括一个符号比特、3个整数比特和4个小数比特在内的总共8比特定点值,“Q32.30”是1个符号比特、1个整数比特和30个小数比特在内的总共32比特定点值,并且“Q32.16”是包括1个符号比特、15个整数比特和16个小数比特在内的总共32比特定点值。
当使用浮点格式时,可以表示非常小的值或非常大的值。然而,需要定点单元(FPU)或FPU仿真库来执行算术运算。当使用定点格式时,可表达值的范围比使用浮点格式时更受限制,但是神经网络量化装置可以通过仅使用整数ALU来执行算术运算。
量化是指将高精度浮点实数类型值转换为低精度定点整数类型值。
图5是根据实施例的由神经网络量化装置执行的量化神经网络的参数的方法的流程图。
神经网络量化装置可以通过被包括在神经网络学习装置10和神经网络推断装置20中来运算,或者可以作为独立的第三硬件加速器来运算。
参考图5,在运算510中,神经网络量化装置可以获得在学习或推断神经网络时使用的浮点格式参数。
神经网络量化装置可以从诸如PC或服务器之类的外部设备获得浮点格式参数。根据实施例,神经网络的参数可以包括向神经网络输入/从神经网络输出的各种类型的数据,例如,神经网络的输入/输出激活、权重、偏差等。
根据实施例,神经网络量化装置可以根据电气和电子工程师协会(IEEE)标准754来获得各种格式的浮点值。例如,除了单精度之外,神经网络量化装置还可以根据64比特双精度、43比特或更多比特的扩展单精度以及79比特或更多比特(通常地,80比特)的扩展双精度来获得浮点值。
在运算520中,神经网络量化装置可以应用定点格式的小数长度,并且为了根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点,神经网络量化装置可以通过使用整数ALU来执行运算。
在无需使用特殊硬件结构或库的情况下,神经网络量化装置可以通过仅使用整数ALU来执行比特操纵运算和整数运算。
根据实施例,神经网络量化装置可以通过执行将小数长度添加到浮点格式的指数部分的整数加法运算,来计算与浮点值乘以“2的(小数长度)次幂”的乘积相等的结果值。通过执行整数加法运算和算术移位运算,神经网络量化装置可以根据量化后要被丢弃的比特值之中的最高有效比特来确定是否舍入定点。通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以在将高精度转换为低精度时最小化量化结果的准确度损失。
在运算530中,神经网络量化装置可以基于运算的结果将浮点格式参数量化为定点格式参数。
神经网络量化装置可以将在运算520中获得的运算结果值的比特数改变(调整)为等于定点格式。神经网络量化装置最后可以通过应用浮点的符号比特来将浮点量化为定点。
不是从神经网络学习装置10接收经量化的神经网络21,而是神经网络量化装置可以接收浮点格式参数并将接收到的浮点格式参数量化为定点格式以生成神经网络,或者训练(或学习)神经网络。
图6是用于说明根据实施例的在将浮点量化为定点期间执行比特操纵运算和整数运算的示例的示意图。
参考图6,示出了将32比特格式浮点量化为“Q16.4”格式定点的过程。32比特格式浮点的符号具有一比特,其第一指数值具有8比特,并且其第一尾数值具有23比特。例如,与实数值“51.737673200562085”对应的32比特格式浮点值可以被分成符号“0”、第一指数值“10000100”(8比特)和第一尾数值“10011101111001101100001”(23比特)。“Q16.4”格式定点的符号具有一比特,其整数具有11比特,并且其小数具有4比特。
在图6中,浮点的符号对应于比特索引s,第一指数值的8比特对应于比特索引e1至e8,并且第一尾数值的23比特对应于比特索引m1至m23。定点的符号对应于比特索引s,整数的11比特对应于比特索引i1到i11,并且小数的4比特对应于比特索引f1到f4。
根据IEEE标准,在浮点格式中,通过将偏差常数加到实际指数值来确定第一指数值。因此,为了将第一指数值返回到实际指数值,神经网络量化装置可以从第一指数值中减去偏差常数。神经网络量化装置可以将经量化的定点的小数长度算术地加到通过从第一指数值中减去偏差常数所获得的结果值上,以便反映经量化的定点的小数长度。
根据实施例,在运算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的结果。
根据IEEE标准,浮点格式的第一尾数值通过省略1来表示,该1是浮点的前位值(front place value)。神经网络量化装置可以通过将比特值1添加到第一尾数值前面的位置来再次表示所省略的值1。
参考运算620,第一尾数值“100111......0001”(23比特)具有实际值“1.100111......0001”。神经网络量化装置可以通过将比特值1加到第一尾数值前面的位置来将第一尾数值更新为“110011101111001101100001”(24比特)。作为运算610的结果,将值插入到定点的9个低比特i7到i11和f1到f4中,且因此左侧的经更新的第一尾数值的第一比特(即,MSB)被插入到位于距定点的LSB的第十个的比特i6中。
根据运算610和运算620,可以确定用浮点的第一尾数值填充距定点的LSB的多少个比特(即,多少个低比特)。
根据另一实施例,当第二指数值等于或大于第一尾数值的比特数时,神经网络量化装置可以将第二指数值与通过从定点的比特宽度中减去2所获得的值进行比较。
当确定第二指数值大于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以改变预设的定点格式。神经网络量化装置可以在改变定点的格式后重新执行运算。
另一方面,当确定第二指数值小于或等于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以将经更新的第一尾数值向左移位第二指数值和第一尾数值的比特数之间的差。例如,当第二指数值是25并且定点的比特宽度是26时,神经网络量化装置可以将经更新的第一尾数值向左移位2,该2是通过从第二指数值25中减去第一尾数值的比特数23而获得的。神经网络量化装置可以通过将符号应用于经向左移位的第一尾数值来将浮点格式参数量化为定点格式。
图7是用于说明根据实施例的在将浮点量化为定点的同时执行比特数的舍入和调整的示例的示意图。
通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以最小化量化结果(经量化的定点值)的准确度损失。神经网络量化装置可以基于图6的运算610的结果来确定是否舍入定点。参考图6的运算610,因为作为运算610的结果,第二指数值是“9”,所以可以确定位于距第一尾数值的MSB的第十个的比特m10的值为量化后要被丢弃的比特值之中的最高有效比特。神经网络量化装置可以将以下结果值插入到定点的9个低比特i7到i11和f1到f4中:通过将比特m10的值加到第一尾数值的9个高比特m1到m9所获得的结果值。
根据另一实施例,将比特m10的值加到第一尾数值的9个高比特m1到m9的结果值的比特数可以是10。在这种情况下,神经网络量化装置可以将10个比特的结果值插入到定点的10个低比特i6到i11和f1到f4中。
在下文中,反映执行或不执行舍入的定点的10个低比特i6到i11和f1到f4的值被称为第二尾数值。
神经网络量化装置可以用0来填充第二尾数值前面的比特,其数目对应于第二尾数值的比特数与定点格式的比特数之间的差,使得第二尾数值的比特数等于定点格式的比特数。在上面的示例中,第二尾数值具有10比特i6到i11和f1到f4,而定点格式是“Q16.4”,且因此具有16比特的比特宽度,因而存在6比特的差。因此,神经网络量化装置可以通过用0来填充第二尾数值之前的6比特(“0000001100111100”(16比特))来将比特数调整为等于定点格式的比特数。
神经网络量化装置可以通过将符号应用于已经调整比特数的第二尾数值来最终将浮点值量化为定点值。在上面的示例中,作为应用浮点值的符号s“0”的结果,经量化的定点值变为“0000001100111100”(16比特)。
图8~图10是根据实施例的将浮点实数量化为定点整数的过程的流程图。
图8和图9示出了将与实数值“51.737673200582085’对应的32比特格式浮点值量化为“Q16.4”格式定点整数的情况。
参考图8,在运算810中,神经网络量化装置可以从浮点格式参数中提取符号、第一指数值和第一尾数值。
浮点分为符号、指数和尾数,且指数的比特数和尾数的比特数可以根据浮点的格式(单精度(32比特)、双精度(64比特)等)而变化。32比特格式浮点值具有一个符号比特、8个指数比特和23个尾数比特,并且64比特格式浮点值具有一个符号比特、11个指数比特和52个尾数比特。
例如,与实数值“51.737673200582085”对应的32比特格式浮点值是“0(符号)10000100(指数)10011101111001101100001(尾数)”。神经网络量化装置可以提取“0”作为符号值,“10000100”(8比特)作为第一指数值,并且“10011101111001101100001”(23比特)作为第一尾数值。
在运算820中,神经网络量化装置可以通过使用定点格式的第一指数值、偏差常数和小数长度来计算第二指数值。
根据IEEE标准,在浮点格式中,通过将偏差常数加到实际指数值来确定第一指数值。因此,为了将第一指数值返回到实际指数值,神经网络量化装置需要从第一指数值中减去偏差常数。根据该标准,偏差常数为2(k-1)-1(其中k是指数部分的比特数),并且k依赖于浮点的格式。
为了反映经量化的定点的小数长度,神经网络量化装置可以将小数长度算术地加到实际指数值上。神经网络量化装置可以通过将小数长度算术地加到通过从第一指数值中减去偏差分量所获得的结果值来计算与将整个浮点值乘以“2的(小数长度)次幂”的乘积相等的值。
在上面的示例中,所提取的第一指数值是“10000100(二进制)”,并且对应于“132(十进制)”。因为“Qm.n”格式的定点整数值(其中m和n是自然数)表示为“Q16.frac”(其中frac指示定点格式的小数长度),所以“Q16.4”中的小数长度为4。浮点的偏差常数为2(k-1)-1(k是指数部分的比特数),并且在32比特格式中是2(8-1)-1=127。
如上所述,可以通过从第一指数值中减去浮点的偏差常数并加上定点格式的小数长度来计算第二指数值。在上面的示例中,第二指数值为9(132(第一指数值)-127(偏差常数)+4(小数长度)=9)。
在运算830中,神经网络量化装置可以通过将比特值1加到第一尾数值前面的位置来更新第一尾数值。
根据IEEE标准,浮点格式的第一尾数值通过省略1来表示,该1是浮点的前位值。神经网络量化装置可以通过将比特值1添加到第一尾数值前面的位置来再次表示所省略的比特1。在上面的示例中,通过添加比特值1所获得的经更新的第一尾数值是“110011101111001101100001”(24比特)。
在运算840中,神经网络量化装置可以将第一尾数值的比特数与第二指数值进行比较。
通过确定第一尾数值的比特数和第二指数值之间的差是否等于或大于0,神经网络量化装置可以将第一尾数值的比特数与第二指数值进行比较。例如,在单精度的情况下,第一尾数值的比特数是23,并且神经网络量化装置可以将在运算820中计算出的第二指数值“9”与第一尾数值的比特数“23”进行比较。
为了确定要以定点格式反映的第一尾数值的比特值,神经网络量化装置可以将第二指数值与第一尾数值的比特数进行比较。神经网络量化装置可以经由移位运算以定点格式反映第一尾数值的所确定的比特值。
当在运算840中确定第二指数值小于第一尾数值的比特数时,过程进行到图9的运算910。另一方面,当在运算840中确定第二指数值大于或等于第一尾数值的比特数时,过程可以进行到图10的运算1010。
根据实施例,当第二指数值小于第一尾数值的比特数时,并且如在上面的实施例中,第二指数值是“9”并且第一尾数值的比特数是“23”,这意味着在定点中仅反映第一尾数值的9个高比特值,而在定点中未反映其余的14比特值。根据另一实施例,当第二指数值等于或大于第一尾数值的比特数时,这可以意味着在定点中反映第二指数值的所有比特。然而,当第二指数值大于通过从定点的比特宽度中减去2所获得的值时,神经网络量化装置可以改变定点的格式,然后可以重新执行从运算820开始的运算。
另一方面,当第二指数值小于第一尾数值的比特数时,神经网络量化装置可以将在定点中未反映的比特值存储在存储器中,以便稍后在将定点转换回浮点的过程期间使用未反映的比特值。
参考图9,在运算910中,当在运算840中确定第二指数值小于第一尾数值的比特数时,神经网络量化装置可以将经更新的第一尾数值向右移位以下值:通过从根据浮点格式的预定数目中减去第二指数值所获得的值。
通过根据量化后要被丢弃的比特值之中的最高有效比特来反映是否舍入定点,神经网络量化装置可以进一步最小化准确度损失。为此,在运算910中,神经网络量化装置可以将经更新的第一尾数值向右移位仅通过从预定数目中减去第二指数值所获得的值(与第一尾数值的比特数-1对应的值),而非将经更新的第一尾数值向右移位以下值:通过从第一尾数值的比特数中减去第二指数值所获得的值。因此,神经网络量化装置可以通过使用仅向右移位预定数目的第一尾数值的LSB来确定执行或不执行舍入。
在上面的示例中,经更新的第一尾数值“110011101111001101100001”(24比特)的比特数是24,但是预定数目(与第一尾数值的比特数-1对应的值)为22而第二指数值为9。当经更新的第一尾数值向右移位“22-9=13”时,经移位的第一尾数值是“11001110111”(11比特)。
在运算920中,神经网络量化装置可以提取经移位的第一尾数值的LSB。
在运算910中,神经网络量化装置可以将第一尾数值仅向右移位与“第一尾数值的比特数-1”对应的值。在这种情况下,经移位的第一尾数值的LSB对应于量化后要被丢弃的比特值之中的最高有效比特。神经网络量化装置可以提取经移位的第一尾数值的LSB,且从而使用所提取的LSB来确定是否舍入经量化的定点。根据实施例,经提取的LSB可以为“1”或“0”。当所提取的LSB为“1”时,这对应于将小数计数为一。当所提取的LSB为“0”时,这对应于忽略小数。
在上面的示例中,经移位的第一尾数值是“11001110111”(11比特),并且神经网络量化装置可以提取经移位的第一尾数值的LSB,即,最右边的比特“1”。
在运算930中,神经网络量化装置可以将经移位的第一尾数值再次向右移位1,并且可以通过添加所提取的LSB的值来计算第二尾数值。
通过将经移位的第一尾数值再次向右移位1,神经网络量化装置可以最终将第一尾数值向右移位以下值:通过从第一尾数值的比特数中减去第二指数值所获得的值(在单精度的情况下为23,而在双精度的情况下为52)。神经网络量化装置可以通过以下方式来计算第二尾数值:通过添加所提取的LSB来确定是否执行舍入。
在上面的示例中,当经移位的第一尾数值“11001110111”(11比特)再次向右移位时,获得“1100111011”(10比特),并且通过添加在运算920中提取的LSB“1”来计算第二尾数值“1100111100”(10比特)。
在运算940中,神经网络量化装置可以将计算出的第二尾数值的比特数调整为等于定点格式的比特数。
根据实施例,神经网络量化装置可以通过用0来填充第二尾数值之前的比特,其数目对应于两个比特数之间的差,来将第二尾数值的比特数调整为等于定点格式的比特数。
在上面的示例中,在运算930中计算出的第二尾数值的比特为10比特(1100111100),并且定点格式“Q16.4”的比特为16位(12+4)。神经网络量化装置通过用0填充计算出的第二尾数值之前的6比特而获得16比特(0000001100111100)来调整第二尾数值的比特数。
在运算950中,神经网络量化装置可以通过将符号(参见图8的运算810)应用于经调整的第二尾数值来将浮点格式参数量化为定点格式。
在上面的示例中,已经被调整了比特数的经调整的第二尾数值是“0000001100111100”(16比特)。参考图8的运算810,因为符号为“0”,所以经最终量化的定点格式参数为“0000001100111100”(16比特)。即使符号为“1”,经最终量化的定点格式参数也为“1000001100111100”(16比特)。
神经网络量化装置可以通过仅使用整数ALU执行比特操纵运算和整数运算来将浮点格式参数量化为定点格式参数,并且可以通过使用经量化的定点格式参数来生成神经网络或训练(或学习)或推断神经网络。
参考图10,当在图8的运算840中确定第二指数值等于或大于第一尾数值的比特数时,神经网络量化装置可以在运算1010中将第二指数值与通过从定点的比特宽度中减去2所获得的值进行比较。
当在运算1010中确定第二指数值大于通过从定点的比特宽度中减去2所获得的值时,过程进行到运算1020。根据IEEE标准,从定点的比特宽度中减去2可以意味着反映从尾数值中省略的比特和符号比特。
在运算1020中,神经网络量化装置可以改变预设的定点格式。第二指数值大于通过从定点的比特宽度中减去2所获得的值可以意味着不适合将浮点量化为预设的定点格式,并且神经网络量化装置可以改变定点的格式,然后可以重新执行从运算820开始的运算。
因为可以确定可在神经网络中使用的定点的长度,所以硬件加速器可以通过保持定点的长度而仅改变点的位置来改变定点的格式。例如,硬件加速器可以改变定点中的点位置,例如将“Q16.4”格式改变为“Q16.3”或“Q16.5”,然后重新执行从运算820开始的运算。
另一方面,当在运算1010中确定第二指数值小于或等于通过从定点的比特宽度中减去2所获得的值时,过程进行到运算1030。
在运算1030中,神经网络量化装置可以将经更新的第一尾数值向左移位第二指数值与第一尾数值的比特数之间的差。例如,当第二指数值是25并且定点的比特宽度是26时,神经网络量化装置可以将经更新的第一尾数值向左移位2,该2是通过从第二指数值25中减去第一尾数值的比特数23而获得的。
在运算1040中,神经网络量化装置可以通过将符号应用于经向左移位的第一尾数值来将浮点格式参数量化为定点格式。例如,在运算1030中移位之后,将两个值0添加到包括经更新的第一尾数值的LSB在内的两个低比特并且应用符号,且因此神经网络量化装置可以将浮点格式参数量化为定点格式。
图8~图10的运算可以同时或顺序执行,并且可以以与图8~图10中所示的顺序不同的顺序执行。
本实施例还可以体现为包括可由计算机执行的指令代码(例如,由计算机执行的程序模块)在内的存储介质。计算机可读介质可以是可由计算机访问的任何可用介质,并且包括所有易失性/非易失性和可移动/不可移动介质。此外,计算机可读介质可以包括所有计算机存储和通信介质。计算机存储介质包括通过用于存储信息(例如计算机可读指令代码、数据结构、程序模块或其他数据)的某种方法或技术实现的所有易失性/非易失性介质和可移除/不可移除介质。通信介质通常包括计算机可读指令代码、数据结构、程序模块或诸如载波或其他传输机制之类的经调制的数据信号的其他数据,并且包括任何信息传输介质。
本文使用的术语“~单元”可以是诸如处理器或电路之类的硬件组件,和/或由诸如处理器之类的硬件组件执行的软件组件。
尽管出于说明性目的公开了本发明的实施例,但是本领域普通技术人员将理解,在不脱离本发明的精神和范围的情况下,可以进行各种变化和修改。因此,应该将上述实施例理解为不是限制性的,而是在所有方面都是说明性的。例如,可以分开使用以集成形式描述的各个元件,并且可以在组合的状态下使用分割的元件。
尽管已参考附图描述了一个或多个示例实施例,但本领域普通技术人员将理解,在不脱离权利要求所限定的精神和范围的情况下,可以进行形式和细节上的各种改变。
Claims (19)
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所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0135868 | 2017-10-19 | ||
KR1020170135868A KR102564456B1 (ko) | 2017-10-19 | 2017-10-19 | 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109685198A true CN109685198A (zh) | 2019-04-26 |
CN109685198B CN109685198B (zh) | 2024-04-05 |
Family
ID=63965161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811153487.1A Active CN109685198B (zh) | 2017-10-19 | 2018-09-29 | 用于量化神经网络的参数的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11593625B2 (zh) |
EP (1) | EP3474194B1 (zh) |
JP (1) | JP7296709B2 (zh) |
KR (1) | KR102564456B1 (zh) |
CN (1) | CN109685198B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767984A (zh) * | 2020-06-09 | 2020-10-13 | 云知声智能科技股份有限公司 | 一种基于固定移位的8位整型全量化推理方法及装置 |
CN111860841A (zh) * | 2020-07-28 | 2020-10-30 | Oppo广东移动通信有限公司 | 量化模型的优化方法、装置、终端及存储介质 |
CN112085184A (zh) * | 2019-06-12 | 2020-12-15 | 上海寒武纪信息科技有限公司 | 量化参数调整方法、装置及相关产品 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN112840358A (zh) * | 2019-09-24 | 2021-05-25 | 百度时代网络技术(北京)有限公司 | 用于深度神经网络的基于光标的自适应量化 |
CN112990422A (zh) * | 2019-12-12 | 2021-06-18 | 中科寒武纪科技股份有限公司 | 参数服务器、客户机、权值参数的处理方法及系统 |
CN113011569A (zh) * | 2021-04-07 | 2021-06-22 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN113111998A (zh) * | 2020-01-09 | 2021-07-13 | 富士通株式会社 | 信息处理设备、计算机可读存储介质和神经网络计算方法 |
CN114492778A (zh) * | 2022-02-16 | 2022-05-13 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2568083B (en) * | 2017-11-03 | 2021-06-02 | Imagination Tech Ltd | Histogram-based per-layer data format selection for hardware implementation of deep neutral network |
US10579383B1 (en) * | 2018-05-30 | 2020-03-03 | Facebook, Inc. | Systems and methods for efficient scaling of quantized integers |
US11475352B2 (en) * | 2018-11-07 | 2022-10-18 | Alibaba Group Holding Limited | Quantizing machine learning models with balanced resolution via damped encoding |
US11068784B2 (en) * | 2019-01-26 | 2021-07-20 | Mipsology SAS | Generic quantization of artificial neural networks |
US20200242445A1 (en) * | 2019-01-26 | 2020-07-30 | Mipsology SAS | Generic quantization of artificial neural networks |
US11790212B2 (en) * | 2019-03-18 | 2023-10-17 | Microsoft Technology Licensing, Llc | Quantization-aware neural architecture search |
KR102243119B1 (ko) | 2019-07-17 | 2021-04-21 | 한양대학교 산학협력단 | 가변 정밀도 양자화 장치 및 방법 |
US11604647B2 (en) | 2019-09-03 | 2023-03-14 | International Business Machines Corporation | Mixed precision capable hardware for tuning a machine learning model |
JP2021044783A (ja) | 2019-09-13 | 2021-03-18 | 富士通株式会社 | 情報処理装置,情報処理方法および情報処理プログラム |
JP7294017B2 (ja) * | 2019-09-13 | 2023-06-20 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
WO2021083154A1 (en) * | 2019-10-30 | 2021-05-06 | Huawei Technologies Co., Ltd. | Method and apparatus for quantization of neural networks post training |
KR20210077352A (ko) | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 이를 위한 가속 장치 |
WO2021144879A1 (ja) * | 2020-01-15 | 2021-07-22 | 富士通株式会社 | 演算処理装置、演算処理プログラム及び演算処理方法 |
CN113222098A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据处理方法和相关产品 |
CN111382576B (zh) * | 2020-01-21 | 2023-05-12 | 沈阳雅译网络技术有限公司 | 一种基于离散型变量的神经机器翻译解码加速方法 |
US20210248463A1 (en) * | 2020-02-06 | 2021-08-12 | Socionext Inc. | Neural network derivation method |
CN113554159A (zh) * | 2020-04-23 | 2021-10-26 | 意法半导体(鲁塞)公司 | 用于在集成电路中实现人工神经网络的方法和装置 |
CN113780513B (zh) * | 2020-06-10 | 2024-05-03 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
KR20210156538A (ko) * | 2020-06-18 | 2021-12-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 데이터 처리 장치 |
CN111857723B (zh) * | 2020-06-29 | 2022-06-17 | 浪潮电子信息产业股份有限公司 | 一种参数编译方法、装置和计算机可读存储介质 |
WO2022009433A1 (ja) * | 2020-07-10 | 2022-01-13 | 富士通株式会社 | 情報処理装置,情報処理方法および情報処理プログラム |
CN111930673B (zh) * | 2020-08-10 | 2024-03-05 | 中国科学院计算技术研究所 | 异构智能处理量化装置、量化方法、电子设备及存储介质 |
JPWO2022044465A1 (zh) * | 2020-08-24 | 2022-03-03 | ||
KR20220030106A (ko) | 2020-09-02 | 2022-03-10 | 삼성전자주식회사 | 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치 |
CN112269595A (zh) * | 2020-10-28 | 2021-01-26 | 清华大学 | 图像处理方法、装置、计算机设备及存储介质 |
KR20220062892A (ko) * | 2020-11-09 | 2022-05-17 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
CN113554149B (zh) * | 2021-06-18 | 2022-04-12 | 北京百度网讯科技有限公司 | 神经网络处理单元npu、神经网络的处理方法及其装置 |
KR102653107B1 (ko) * | 2021-08-23 | 2024-04-01 | 삼성전자주식회사 | 연산 방법 및 장치 |
CN113593538B (zh) * | 2021-09-02 | 2024-05-03 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
US20230133360A1 (en) * | 2021-10-28 | 2023-05-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute-In-Memory-Based Floating-Point Processor |
CN114492779A (zh) * | 2022-02-16 | 2022-05-13 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
CN115018076B (zh) * | 2022-08-09 | 2022-11-08 | 聚时科技(深圳)有限公司 | 一种用于智能伺服驱动器的ai芯片推理量化方法 |
CN115496200B (zh) * | 2022-09-05 | 2023-09-22 | 中国科学院半导体研究所 | 神经网络量化模型训练方法、装置及设备 |
CN116720563B (zh) * | 2022-09-19 | 2024-03-29 | 荣耀终端有限公司 | 一种提升定点神经网络模型精度的方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07248841A (ja) * | 1994-03-09 | 1995-09-26 | Mitsubishi Electric Corp | 非線形関数発生装置およびフォーマット変換装置 |
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
JP2012198804A (ja) * | 2011-03-22 | 2012-10-18 | Denso Corp | 設計支援装置、設計支援プログラム |
CN105320495A (zh) * | 2014-07-22 | 2016-02-10 | 英特尔公司 | 用于卷积神经网络的权重移位机制 |
US20160092168A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
WO2017031630A1 (zh) * | 2015-08-21 | 2017-03-02 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6144977A (en) | 1995-07-10 | 2000-11-07 | Motorola, Inc. | Circuit and method of converting a floating point number to a programmable fixed point number |
WO2004098066A1 (ja) | 2003-04-28 | 2004-11-11 | Nippon Telegraph And Telephone Corporation | 浮動小数点形式ディジタル信号可逆符号化方法、及び復号化方法と、その各装置、その各プログラム |
US7593804B2 (en) * | 2007-10-31 | 2009-09-22 | Caterpillar Inc. | Fixed-point virtual sensor control system and method |
KR101115252B1 (ko) | 2009-07-24 | 2012-02-15 | 정선태 | 적응 혼합 가우시안 모델링의 고정 소수점 구현 방법 |
KR101084581B1 (ko) | 2009-11-02 | 2011-11-17 | 전자부품연구원 | 고정 소수점 지수함수 연산 방법, 장치 및 기록매체 |
GB2488322B (en) | 2011-02-22 | 2017-09-20 | Advanced Risc Mach Ltd | Number format pre-conversion instructions |
JP2012208843A (ja) | 2011-03-30 | 2012-10-25 | Keihin Corp | 開発支援装置 |
CN106575379B (zh) | 2014-09-09 | 2019-07-23 | 英特尔公司 | 用于神经网络的改进的定点整型实现方式 |
EP3040852A1 (en) | 2014-12-31 | 2016-07-06 | Nxp B.V. | Scaling for block floating-point data |
US10373050B2 (en) | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
-
2017
- 2017-10-19 KR KR1020170135868A patent/KR102564456B1/ko active IP Right Grant
-
2018
- 2018-09-29 CN CN201811153487.1A patent/CN109685198B/zh active Active
- 2018-10-15 US US16/160,444 patent/US11593625B2/en active Active
- 2018-10-19 JP JP2018197320A patent/JP7296709B2/ja active Active
- 2018-10-19 EP EP18201567.7A patent/EP3474194B1/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07248841A (ja) * | 1994-03-09 | 1995-09-26 | Mitsubishi Electric Corp | 非線形関数発生装置およびフォーマット変換装置 |
US20100076915A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Field-Programmable Gate Array Based Accelerator System |
JP2012198804A (ja) * | 2011-03-22 | 2012-10-18 | Denso Corp | 設計支援装置、設計支援プログラム |
CN105320495A (zh) * | 2014-07-22 | 2016-02-10 | 英特尔公司 | 用于卷积神经网络的权重移位机制 |
US20160092168A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
WO2017031630A1 (zh) * | 2015-08-21 | 2017-03-02 | 中国科学院自动化研究所 | 基于参数量化的深度卷积神经网络的加速与压缩方法 |
CN106796668A (zh) * | 2016-03-16 | 2017-05-31 | 香港应用科技研究院有限公司 | 用于人工神经网络中比特深度减少的方法和系统 |
CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
Non-Patent Citations (1)
Title |
---|
XI CHEN等: "FxpNet: Training a deep convolutional neural network in fixed-point representation", 《2017 INTERNATIONAL JOINT CONFERENCE ON NEURAL NETWORKS (IJCNN)》, pages 2494 - 2501 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112085184A (zh) * | 2019-06-12 | 2020-12-15 | 上海寒武纪信息科技有限公司 | 量化参数调整方法、装置及相关产品 |
CN112085184B (zh) * | 2019-06-12 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 量化参数调整方法、装置及相关产品 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN112840358A (zh) * | 2019-09-24 | 2021-05-25 | 百度时代网络技术(北京)有限公司 | 用于深度神经网络的基于光标的自适应量化 |
CN112840358B (zh) * | 2019-09-24 | 2023-05-23 | 百度时代网络技术(北京)有限公司 | 用于深度神经网络的基于光标的自适应量化 |
CN112990422A (zh) * | 2019-12-12 | 2021-06-18 | 中科寒武纪科技股份有限公司 | 参数服务器、客户机、权值参数的处理方法及系统 |
CN113111998A (zh) * | 2020-01-09 | 2021-07-13 | 富士通株式会社 | 信息处理设备、计算机可读存储介质和神经网络计算方法 |
CN111767984A (zh) * | 2020-06-09 | 2020-10-13 | 云知声智能科技股份有限公司 | 一种基于固定移位的8位整型全量化推理方法及装置 |
CN111860841A (zh) * | 2020-07-28 | 2020-10-30 | Oppo广东移动通信有限公司 | 量化模型的优化方法、装置、终端及存储介质 |
CN111860841B (zh) * | 2020-07-28 | 2023-11-14 | Oppo广东移动通信有限公司 | 量化模型的优化方法、装置、终端及存储介质 |
CN113011569A (zh) * | 2021-04-07 | 2021-06-22 | 开放智能机器(上海)有限公司 | 离线量化参数加注方法、装置、电子设备和存储介质 |
CN114492778A (zh) * | 2022-02-16 | 2022-05-13 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109685198B (zh) | 2024-04-05 |
KR20190043849A (ko) | 2019-04-29 |
JP2019079531A (ja) | 2019-05-23 |
EP3474194A1 (en) | 2019-04-24 |
US11593625B2 (en) | 2023-02-28 |
JP7296709B2 (ja) | 2023-06-23 |
US20190122100A1 (en) | 2019-04-25 |
EP3474194B1 (en) | 2023-09-20 |
KR102564456B1 (ko) | 2023-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685198A (zh) | 用于量化神经网络的参数的方法和装置 | |
CN110689109B (zh) | 神经网络方法和装置 | |
CN107526709A (zh) | 使用低精度格式的张量处理 | |
CN106447037B (zh) | 具有多个可选择输出的神经网络单元 | |
CN106599990B (zh) | 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列 | |
CN108701250B (zh) | 数据定点化方法和装置 | |
CN109754066A (zh) | 用于生成定点型神经网络的方法和装置 | |
JP7325158B2 (ja) | ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現 | |
CN109389219A (zh) | 用于对神经网络的参数进行量化的方法和装置 | |
CN111989697A (zh) | 用于并行和分布式张量计算的神经硬件加速器 | |
CN109726806A (zh) | 信息处理方法及终端设备 | |
US20170061279A1 (en) | Updating an artificial neural network using flexible fixed point representation | |
CN108268283A (zh) | 用于利用约简操作来支持数据并行循环的计算引擎架构 | |
CN108229648A (zh) | 卷积计算方法和装置、电子设备、计算机存储介质 | |
CN106855952A (zh) | 基于神经网络的计算方法及装置 | |
CN112163601A (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN108875924A (zh) | 基于神经网络的数据处理方法、装置、系统及存储介质 | |
CN112508190A (zh) | 结构化稀疏参数的处理方法、装置、设备及存储介质 | |
KR20190089685A (ko) | 데이터를 처리하는 방법 및 장치 | |
CN113657595B (zh) | 基于神经网络实时剪枝的神经网络加速器 | |
US20230058500A1 (en) | Method and machine learning system to perform quantization of neural network | |
WO2019127480A1 (zh) | 用于处理数值数据的方法、设备和计算机可读存储介质 | |
CN115374916A (zh) | 硬件加速器和硬件加速器方法 | |
CN116070689A (zh) | 模型的量化训练方法、装置、电子设备及可读存储介质 | |
CN115016762A (zh) | 用于执行乘积累加运算的运算装置和运算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |