CN112418391B - 用于对深度神经网络的权重进行转换的方法和系统 - Google Patents
用于对深度神经网络的权重进行转换的方法和系统 Download PDFInfo
- Publication number
- CN112418391B CN112418391B CN202010849845.3A CN202010849845A CN112418391B CN 112418391 B CN112418391 B CN 112418391B CN 202010849845 A CN202010849845 A CN 202010849845A CN 112418391 B CN112418391 B CN 112418391B
- Authority
- CN
- China
- Prior art keywords
- weights
- quantization
- digital format
- weight
- quantizing
- 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.)
- Active
Links
Images
Classifications
-
- 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
- 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
-
- 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
- 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/08—Learning methods
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Image Processing (AREA)
- Analogue/Digital Conversion (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及用于对深度神经网络的权重进行转换的方法和系统。第二数字格式的精度低于第一数字格式的精度。该方法包括:针对多个权重中的每一个权重,确定与根据第一量化方法将权重量化为第二数字格式相关联的量化误差;基于多个权重的量化误差来确定多个权重的总量化误差;基于多个权重的总量化误差来标识待根据第二量化方法量化为第二数字格式的多个权重的子集;以及生成表示第二数字格式的多个权重的一组量化权重,多个权重的子集中每一个权重的量化权重基于根据第二量化方法将权重量化为第二数字格式,并且多个权重中其余权重中的每一个权重的量化权重基于根据第一量化方法将权重量化为第二数字格式。
Description
技术领域
本申请涉及用于将浮点深度神经网络(DNN)转换为定点DNN的方法和系统,具体涉及将浮点DNN的权重转换为定点数格式以用于将硬件配置为实现DNN。
背景技术
DNN是人工神经网络的一种形式,包括可用于机器学习应用程序的多个互连层。特别地,DNN可用于信号处理应用程序,包括图像处理和计算机视觉应用程序。图1示出了包括多个层102-1、102-2、102-3的示例性DNN 100。每一层102-1、102-2、102-3接收输入数据,根据层处理该输入数据以产生输出数据。输出数据要么作为输入数据提供给另一层,要么作为DNN的最终输出数据输出。例如,在图1的DNN 100中,第一层102-1接收到DNN 100的原始输入数据104,并且根据第一层102-1处理输入数据以产生输出数据。第一层102-1的输出数据成为第二层102-2的输入数据,该第二层根据第二层102-2处理该输入数据以产生输出数据。第二层102-2的输出数据成为第三层102-3的输入数据,该第三层根据第三层102-3处理该输入数据以产生输出数据。第三层102-3的输出数据被输出作为DNN的输出数据106。
对层的输入数据执行的处理取决于层的类型。例如,DNN的每一层可以是多种不同类型中的一种。示例性DNN层类型包括但不限于卷积层、激活层、归一化层、池化层,以及全连接层。对于本领域的技术人员将显而易见的是,这些是示例性DNN层类型,并且这不是详尽的列表,并且可存在其他DNN层类型。
对于卷积层,通过将输入数据与同该层相关联的权重进行卷积来处理输入数据。具体地,每个卷积层与多个权重w0…wg相关联,所述多个权重还可以被称为滤波器权重或系数。权重被分组以形成或定义一个或多个滤波器,该一个或多个滤波器还可以被称为内核,并且每个滤波器可与偏移量偏差b相关联。
参考图2,该图示出了在DNN中使用的数据格式的示例性概述。如在图2中可以看到的,在DNN中使用的数据可由多个平面形成。输入数据可被排列为P个数据平面,其中每一个平面的尺寸为x×y。DNN可包括一个或多个卷积层,该一个或多个卷积层中的每个卷积层具有与其相关联的多个滤波器,每个滤波器包括多个权重。每个滤波器的尺寸为m×n×P(即,每个滤波器包括一组m×n×P个权重w),并且根据在x方向和y方向上跨步s和步t的卷积运算被应用于输入数据,如图2所示。滤波器的数量和每个滤波器的权重的数量可在卷积层与卷积层之间变化。卷积神经网络(CNN)是一种有效的图像识别和分类方法,它是DNN的一种特殊类型,一般包括多个卷积层。
通常但不一定在卷积层之后的激活层对层的输入数据执行一个或多个激活函数。激活函数取单个数字并且对其执行某些非线性数学运算。在一些示例中,激活层可通过实现ReLU函数(即,f(x)=max(0,x))充当整流线性单元(ReLU),或者可通过实现PReLU函数充当参数化整流线性单元(PReLU)。
归一化层被配置为对输入数据执行归一化函数,诸如局部响应归一化(LRN)函数。通常但不一定插入连续卷积层之间的池化层执行池化函数诸如最大或均值函数,以汇总输入数据的子集。因此,池化层的目的是减小表示的空间大小,以减少网络中参数和计算的数量,并且因此也控制过度拟合。
通常但不一定在多个卷积层和池化层之后的全连接层取三维输入数据值集合,并且输出C维向量。在DNN用于分类的情况下,C是类别的数量,并且向量中的每一个值表示某个类别的概率。C维向量通过一组权重的矩阵相乘而生成,可选地后面是偏置偏移量。因此,全连接层接收一组权重和偏差。
因此,如图3所示,DNN的每个层302接收输入数据值并且生成输出数据值;并且一些层(诸如卷积层和全连接层)还接收权重和/或偏差。
可被配置为实现DNN的硬件逻辑包括可被配置为根据DNN的层处理到DNN的输入数据的硬件逻辑。具体地,可实现DNN的硬件逻辑包括可被配置为根据该层处理到每一层的输入数据并且生成该层的输出数据的硬件逻辑,该输出数据要么成为另一层的输入数据,要么成为DNN的输出。例如,如果DNN包括卷积层,后面是激活层,则可被配置为实现DNN的硬件逻辑包括可被配置为使用与该卷积层相关联的权重和偏差对DNN的输入数据执行卷积以产生卷积层的输出数据的硬件逻辑,以及可被配置为将激活函数应用于激活层的输入数据(即,卷积层的输出数据)以生成DNN的输出数据的硬件逻辑。
如本领域的技术人员所知,对于处理一组值的硬件,每个值以数字格式表示。两种最合适的数字格式是定点数格式和浮点数格式。如本领域的技术人员所知,定点数格式在基数点(例如,小数点或二进制点)之后具有固定数量的数位。相反,浮点数格式没有固定的基数点(即,可以是“浮点型”)。换句话讲,基数点可放置在表示中的任何位置。虽然以浮点数格式表示输入到DNN的层的值和从DNN的层输出的值可允许产生更准确或更精确的输出数据,但在硬件中以浮点数格式处理数字很复杂,与以定点数格式处理值的硬件相比,这往往会增加芯片的面积和硬件的复杂性。因此,可被配置为实现DNN的硬件逻辑可被配置为以定点数格式表示输入到DNN的层的值以及/或者从DNN的层输出的值,以减少硬件逻辑的面积、功耗和存储器带宽。
可以训练DNN(一组互连层)以执行期望的任务(例如,图像处理)。如本领域的技术人员所知,训练DNN意味着标识DNN的权重值(例如,卷积层和全连接层的权重)以执行期望的任务。训练一般包括将训练数据(例如,表示预期输入数据的数据)提供给DNN的模型,并且调整DNN的权重,直到获得训练数据的期望输出为止。通常使用浮点数格式的输入值和权重来“训练”DNN。对于输入值和权重使用浮点数格式的DNN在本文中被称为浮点DNN。然而,在将用于实现DNN的硬件逻辑被配置为对于输入值和权重使用定点数格式的情况下,输入值和训练后的权重被量化为期望的定点数格式,并且硬件逻辑被配置为使用量化的输入值和权重来实现DNN。量化权重的过程在本文中被称为将浮点DNN转换为定点DNN。
量化输入值和权重导致可降低DNN的准确度的量化误差。当使用少量的位(例如,8位或更少)来表示DNN的输入值和权重时尤其如此。当DNN的准确度降低到预先确定的可接受水平以下时,可以重新训练DNN以补偿量化误差。换句话讲,在量化之后,可经由DNN的重新训练来调整一个或多个权重。然而,在一些情况下,重新训练DNN可能是不可行或不可能的。例如,在一些情况下,DNN的训练可以由一个实体执行,并且配置硬件以实现DNN(包括将输入数据值和DNN的权重量化为定点数格式)可由可能无法访问训练数据的第二实体执行。
因此,需要一种将浮点DNN转换为定点DNN的替代方法。特别地,需要一种用于将浮点DNN的权重转换为定点数格式,使得所得的定点DNN具有足够的准确度,而无需重新训练DNN的方法。
下面描述的实施方案仅以示例的方式提供,并且不限制具体实施,这些具体实施解决了用于将浮点DNN转换为定点DNN,特别是将浮点DNN的权重转换为定点数格式以用于配置硬件来实现DNN的方法和系统的任何或全部缺点。
发明内容
提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文描述了用于将深度神经网络(DNN)的滤波器的多个权重从第一数字格式转换为第二较低精度的数字格式以使DNN能够在硬件逻辑中被实现的方法和系统。该方法包括:针对多个权重中的每一个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差;基于多个权重的量化误差来确定所述多个权重的总量化误差;基于多个权重的总量化误差来标识待根据第二量化方法量化为第二数字格式的权重的子集;以及生成表示第二数字格式的多个权重的一组量化权重,多个权重的子集中每一个权重的量化权重基于根据第二量化方法将权重量化为第二数字格式,并且多个权重中其余权重中的每一个权重的量化权重基于根据第一量化方法将该权重量化为第二数字格式。
第一方面提供了一种计算机实现的方法,该方法用于将深度神经网络“DNN”的滤波器的多个权重从第一数字格式转换为第二数字格式,以使DNN能够在硬件逻辑中被实现,第二数字格式的精度低于第一数字格式的精度,该方法包括:针对多个权重中的每一个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差;基于多个权重的量化误差来确定所述多个权重的总量化误差;基于多个权重的总量化误差来标识待根据第二量化方法量化为第二数字格式的多个权重的子集;以及生成表示第二数字格式的多个权重的一组量化权重,多个权重的子集中每一个权重的量化权重基于根据第二量化方法将权重量化为第二数字格式,并且多个权重中其余权重中的每一个权重的量化权重基于根据第一量化方法将该权重量化为第二数字格式。
第二方面提供了一种用于将深度神经网络“DNN”的滤波器从第一数字格式转换为第二数字格式以使DNN能够在硬件逻辑中被实现的方法,滤波器包括多个权重,第二数字格式的精度低于第一数字格式的精度,该方法包括:将滤波器的多个权重细分为权重的多个非重叠的子集;并且针对权重的每个子集执行第一方面的方法。
第三方面提供了一种基于计算的装置,该基于计算的装置将深度神经网络“DNN”的滤波器的多个权重从第一数字格式转换为第二数字格式,以使DNN能够在硬件逻辑中被实现,第二数字格式的精度低于第一数字格式的精度,该基于计算的装置包括:至少一个处理器;以及耦接到该至少一个处理器的存储器,该存储器包括:计算机可读代码,当该计算机可读代码由至少一个处理器执行时,使该至少一个处理器执行以下操作:针对多个权重中的每一个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差;基于多个权重的量化误差来确定多个权重的总量化误差;基于多个权重的总量化误差来标识待根据第二量化方法量化为第二数字格式的第一数字格式的多个权重的子集;并且生成表示第二数字格式的多个权重的一组量化权重,多个权重的子集中的每一个权重的量化权重基于根据第二量化方法将权重量化为第二数字格式,并且多个权重中其余权重中的每一个权重的量化权重基于根据第一量化方法将该权重量化为第二数字格式。
第四方面提供了被配置为实现深度神经网络“DNN”的硬件逻辑,其中DNN的滤波器的权重为根据第一方面或第二方面的方法生成的定点数格式。
可配置为实现DNN(例如,DNN加速器)的硬件逻辑可被体现在集成电路上的硬件中。可提供一种在集成电路制造系统处制造可配置为实现DNN(例如,DNN加速器)的硬件逻辑的方法。可提供集成电路定义数据集,当在集成电路制造系统中进行处理时,该集成电路定义数据集将系统配置为制造可配置为实现DNN(例如,DNN加速器)的硬件逻辑。可提供一种非暂时性计算机可读存储介质,在其上存储有可配置为实现DNN(例如,DNN加速器)的硬件逻辑的计算机可读描述,当该计算机可读描述在集成电路制造系统中被处理时,使集成电路制造系统制造体现可配置为实现DNN(例如,DNN加速器)的硬件逻辑的集成电路。
可提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有可配置为实现DNN(例如,DNN加速器)的硬件逻辑的计算机可读描述;布局处理系统,该布局处理系统被配置为处理计算机可读描述,以便生成体现可配置为实现DNN(例如,DNN加速器)的硬件逻辑的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为制造可配置为根据电路布局描述实现DNN(例如,DNN加速器)的硬件逻辑。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,该指令使计算机系统执行如本文所述的方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是示例性深度神经网络(DNN)的示意图;
图2是DNN中的示例性数据的示意图;
图3是示出输入到DNN的层和从DNN的层输出的数据的示意图;
图4是用于将DNN滤波器的权重从第一数字格式转换为第二较低精度的数字格式的第一示例性方法的流程图;
图5是示出将示例性权重集合量化为定点数格式的示意图;
图6是示出用定点数格式的下一个可表示数替换示例性量化权重的示意图;
图7是用于将DNN滤波器的权重从第一数字格式转换为第二较低精度的数字格式的第二示例性方法的流程图;
图8是将DNN的权重从第一组数字格式转换为第二组数字格式的示例性方法的流程图;
图9是其中测试了图4的方法的测试环境的示意图;
图10是示出当根据标准量化方法将权重量化为定点数格式时,以及当根据图4的方法将权重量化为定点数格式时,第一示例性卷积层的平均每个滤波器的量化误差的曲线图;
图11是示出当根据标准量化方法将权重量化为定点数格式时,以及当根据图4的方法将权重量化为定点数格式时,第一示例性卷积层的最大每个滤波器的量化误差的曲线图;
图12是密度直方图,示出了通过根据图4的方法对权重进行量化而实现的第一示例性卷积层的每个输出量化误差的改进;
图13是示出当根据标准量化方法将权重量化为定点数格式时,以及当根据图4的方法将权重量化为定点数格式时,第二示例性卷积层的平均每个滤波器的量化误差的曲线图;
图14是示出当根据标准量化方法将权重量化为定点数格式时,以及当根据图4的方法将权重量化为定点数格式时,第二示例性卷积层的最大每个滤波器的量化误差的曲线图;
图15是密度直方图,示出了通过根据图4的方法对权重进行量化而实现的第二示例性卷积层的每个输出量化误差的改进;
图16是示例性DNN加速器的框图;
图17是示例性基于计算的装置的框图;
图18是其中可实现DNN加速器的示例性计算机系统的框图;以及
图19是用于生成体现如本文所述的DNN加速器的集成电路的示例性集成电路制造系统的框图。
附图示出各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的群组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是,一个元件可以被设计成多个元件,或者多个元件可以被设计成一个元件。在适当时,贯穿各图使用共同附图标记来指示相似特征。
具体实施方式
借助于示例呈现以下描述,使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。
如上所述,为了减小硅面积及其复杂性,可配置为实现DNN(例如,DNN加速器)的硬件逻辑可被配置为接收和处理定点数格式的输入值和权重。然而,通常(至少在一开始)使用浮点数格式的输入值和权重对DNN进行训练。因此,为了使用此类硬件(例如,DNN加速器)来实现浮点DNN,将浮点DNN转换为定点DNN。这包括将输入值和权重量化为一个或多个定点数格式。然而,量化输入值和权重导致量化误差,这可使固定点DNN的准确度相对于浮点DNN降低。在一些情况下,这可通过在量化之后重新训练DNN来调整权重中的一个或多个权重来解决。然而,如上所述,重新训练并不总是不可行或不可能的。
因此,本文描述了用于将第一组数字格式(例如,浮点数格式)的DNN的权重转换为导致具有良好的准确度的DNN而无需对其进行重新训练的第二组较低精度的数字格式(例如,定点数格式)的方法和系统。该方法包括在每个滤波器(或每个子滤波器)的基础上将第一组数字格式的权重转换为第二组数字格式,以最小化由量化残差引起的漂移效应。具体地,该方法包括:对于滤波器的多个权重,针对多个权重中的每一个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差;基于多个权重的量化误差来确定所述多个权重的总量化误差;基于多个权重的总量化误差来标识待根据第二量化方法量化为第二数字格式的权重的子集;以及生成表示第二数字格式的多个权重的一组量化权重,多个权重的子集中每一个权重的量化权重基于根据第二量化方法将权重量化为第二数字格式,并且多个权重中其余权重中的每一个权重的量化权重基于根据第一量化方法将该权重量化为第二数字格式。可针对DNN的滤波器的全部或仅子集执行该方法。
在一些情况下,第二量化方法被配置为相对于第一量化方法改变特定权重的舍入方向,使得如果根据第一量化方法对权重进行量化可产生带有第一符号(例如,量化误差为正)的量化误差,则根据第二量化方法对相同权重进行量化可产生带有第二不同的符号(例如,量化误差为负)的量化误差。例如,根据第一量化方法向上舍入的权重可根据第二量化方法向下舍入,并且根据第一量化方法向上舍入的权重可根据第二量化方法向下舍入。通过反转一些权重的量化误差的符号,权重集合的总量化误差可被推向零。
本文所述的方法可用于将浮点DNN的权重转换为定点数格式,这样得到准确度与对应的浮点DNN基本上类似的定点DNN,而无需重新训练。在计算资源和计算时间方面,本文所述的方法也可以有效地实现。
现在参考图4,该图示出了用于将第一数字格式的DNN滤波器的权重转换为第二较低精度的数字格式以便使DNN能够在硬件逻辑中被实现的示例性方法400。在一些情况下(例如,当该方法用作浮点DNN到定点DNN转换的一部分时),第一数字格式是浮点数格式,并且第二数字格式是定点数格式。然而,在其他情况下,第一数字格式和第二数字格式都可以是定点数格式。
最常见的浮点数格式是电气和电子工程师协会(IEEE)的浮点算术(IEEE-754)标准。IEEE-754指定浮点数由三个数字表示:符号、指数和尾数(s,exp,mant)。一般来讲,对于固定整数bias,对三个数字(s,exp,mant)进行解释,如等式(1)所示:
(-1)s2exp-bias1.mant (1)
IEEE-754为精度不同的浮点数定义了表1中所示的四种基本格式。特别地,它们分别用16、32、64和128位编码。
表1
在一些情况下,第一数字格式采用IEEE浮点数格式中的一种。例如,第一数字格式可以是F32浮点数格式。然而,在其他示例中,第一数字格式可以是另一种浮点数格式或者可以是定点数格式。
常见的定点数格式是Q格式,它指定预先确定的数量的整数位a和小数位b。整数位可使用二进制补码来表示有符号的值。因此,数字可被表示为Qa.b,它需要总共a+b位(或者,在一些约定中,当a位的值中不包括符号位时,则为a+b+1位)。下面的表2中示出了示例性Q格式。
表2
Q格式 | 描述 | 示例 |
Q4.4 | 4个整数位和4个小数位 | 0110.1110<sub>2</sub> |
Q0.8 | 0个整数位和8个小数位 | .01101110<sub>2</sub> |
然而,Q格式的缺点在于,用于表示数字的一些位可被认为是多余的。在一个示例中,数字范围[-0.125,0.125)将以3位的精度表示。该示例性范围和精度所需的Q格式为Q0.5。然而,如果假定值的范围是预先已知的,则该数字的前两位将永远不会用于确定以Q格式表示的值。例如,表示的前两位对最终数字没有贡献,因为它们分别表示0.5和0.25,因此不在所需范围之内。然而,它们用于指示第三位的位置的值(即,由于相对的位位置而导致的0.125及更高)。因此,上述Q格式是效率低下的定点数格式,用于可配置为实现DNN(例如,DNN加速器)的硬件逻辑内,因为一些位可能无法传达有用的信息。
因此,在一些情况下,代替使用Q格式,可配置为实现DNN的硬件逻辑可被配置为对DNN的输入值和/或权重使用定点数格式,其中值z由固定的整数指数exp和由指数exp和尾数位{exp,n}的数量n定义的n位尾数m格式z=2expm表示。固定整数指数exp可根据需要表示的数字范围预先确定,并且可以由一组值(例如,一组输入值或权重)所共有。在一些情况下,尾数m可以以二进制补码格式表示,并且在其他情况下,可以使用其他有符号或无符号整数格式。
如上所述,DNN的每个滤波器W包括一个或多个权重w。DNN的不同滤波器可具有不同数量的权重。然而,同一层的每个滤波器通常具有相同的尺寸,并且因此具有相同数量的权重。方法400可以由基于计算的装置来实现,诸如下面相对于图17描述的基于计算的装置1700。例如,可能存在其上存储有计算机可读指令的计算机可读存储介质,计算机可读指令在基于计算的装置处执行时使基于计算的装置执行图4的方法400。
方法400开始于框402,其中,针对多个权重中的每一个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差。
如本领域的技术人员所知,量化是将数字从较高精度的格式转换为较低精度的格式的过程。用于将数字从较高精度的格式转换为较低精度的格式的一组规则在本文中被称为量化方法。对较高精度的格式的数字进行量化一般包括使用较低精度的格式的可表示数中的一个可表示数表示较高精度的格式的数字,其中较低精度的格式的可表示数通过特定的舍入模式来选择(诸如但不限于就近舍入(RTN)、向零舍入(RTZ)、向偶数舍入(RTE)、向正无穷舍入(RTP),以及向负无穷舍入(RTN))。权重w的量化形式表示为wq。
等式(2)列出了用于将第一数字格式的权重w量化为第二数字格式的值wq的示例性公式,其中Xmax是第二数字格式的最高可表示数,Xmin是第二数字格式的最低可表示数,并且RND(w)是舍入函数:
等式(2)中列出的公式将第一数字格式的权重量化为第二数字格式的可表示数中的一者,其中基于舍入模式RND(例如,RTN、RTZ、RTE、RTP或RTN)来选择第二数字格式的可表示数。当权重大于第二数字格式的最高可表示值(例如,w≥Xmax)或权重小于第二数字格式的最低可表示值(例如,w≤Xmin)时,量化权重wq可以分别被截取为Xmax或Xmin。已经以这种方式截取的量化值被认为是饱和的。可以以类似方式量化输入值。
如图5所示,定点数格式将能够表示多个等间隔的数字(r0、r1、r2,r3、r4),所述多个等间隔的数字被称为定点数格式的可表示数。通过根据舍入模式选择定点数格式的可表示数中的一个可表示数来表示权重,从而将每个权重量化为定点数格式。当使用就近舍入(RTN)的舍入模式时,根据等式(2)量化权重时,针对特定权重选择的可表示数是最接近权重的可表示数(即,权重与可表示数之间的距离或差最小)。因此,如图5所示,如果权重落在以可表示数为中心的、具有步长跨度的区间内,则将选择特定的可表示数来表示权重。定点数格式的步长是任意两个连续的可表示数之间的距离或差。在定点数格式由尾数位长度n和指数exp定义的情况下,步长等于2exp。例如,在图5中,第一权重w0落在以第二可表示数r1为中心的第二区间bin1中,因此第一权重w0被量化为第二可表示数r1。类似地,第二权重w1和第三权重w2落在以第三可表示数r2为中心的第三区间bin2内,因此,第二权重w1和第三权重w2两者被量化为第三可表示数r2;第四权重w3落在以第四可表示数r3为中心的第四区间bin3内,因此,第四权重w3被量化为第四可表示数r3;并且第五权重w4落在以第五可表示数r4为中心的第五区间bin4内,因此第五权重被量化为第五可表示数r4。
在一些情况下,根据第一量化方法将第一数字格式的权重量化为第二数字格式包括针对特定的舍入模式(例如,就近舍入(RTN))根据等式(2)将第一数字格式的权重量化为第二数字格式。
可以以任何合适的方式选择滤波器的第二数字格式。例如,为了减小尺寸并且提高可配置为实现DNN(例如DNN加速器)的硬件逻辑的效率,硬件逻辑可被配置为以定点数格式表示输入到DNN层或从DNN层输出的值,这些定点数格式所使用的最小位数能够表示每组值的预期或期望的范围。由于不同的值(例如,输入数据值、输出数据值、偏差和权重)的集合的范围可在一个层内以及在层与层之间变化,因此如果可配置为实现DNN(例如,DNN加速器)的硬件逻辑可使用定点数格式表示可在一个层内以及在层与层之间变化的输入数据值、输出数据值、权重和/或偏差,则它能够更有效地实现DNN。例如,可配置为实现DNN(例如,DNN加速器)的硬件逻辑可能能够通过使用指数为2、尾数位长度为6的定点数格式表示第一层的输入数据值,通过使用指数为3、尾数位长度为12的定点数格式表示第一层的权重,以及通过使用指数为4、尾数位长度为6的定点数格式表示第二层的输入数据值来更有效地实现DNN。
在申请人的英国专利申请号1718292.4、1718293.2、1718295.7和1718289.0中描述了用于为输入到层和/或从层输出的数据(包括层的权重)选择定点数格式的示例性方法,并且全文以引用方式并入本文。在一些情况下,诸如当用于实现DNN的硬件逻辑针对同一层的滤波器支持不同的定点格式时,定点格式可在同一层的滤波器之间变化。在其他情况下,DNN的一层的所有滤波器都可以使用相同的定点数格式。
由于第二数字格式与第一数字格式相比精度降低,因此当将第一数字格式的权重被量化为第二数字格式时,通常会出现量化误差。具体地,第一数字格式(例如,浮点数格式)的权重w可被表示为第二数字格式(例如,定点数格式)的权重wq与量化误差we之和,如等式(3)所示。如果重新排列等式(3),则量化误差we可被表示为第一数字格式(例如,浮点数格式)的权重w和第二数字格式的权重wq之间的差,如式(4)所示。因此,当第一数字格式(例如,浮点数格式)的权重w大于第二数字格式(例如,定点数格式)的权重wq时,量化误差we将为正。相反,当第一数字格式(例如,浮点数格式)的权重w小于第二数字格式(例如,定点数格式)的权重wq时,量化误差we将为负。对于本领域的技术人员将显而易见的是,这是定义量化误差的示例性方式,并且可以以另一种方式定义量化误差。例如,在其他示例中,量化误差可被定义为第二数字格式的权重减去第一数字格式的权重。
w=wq+we (3)
we=w-wq (4)
在一些情况下,确定与根据第一量化方法将第一数字格式的权重量化为第二数字格式相关联的量化误差可包括,根据第一量化方法(例如,根据等式(2))将第一数字格式的权重量化为第二数字格式以生成量化权重,然后(例如,根据等式(4))根据量化权重确定量化误差。
然而,在其他情况下,可确定与将第一数字格式的权重量化为第二数字相关联的量化误差,而不将权重量化为第二数字格式。例如,在权重是通过舍入到最接近的整数而量化的正分数的简单情况下,可以分析权重的分数位以确定量化误差。例如,权重7.9将具有0.1的量化误差,因为用小数部分0.9量化任何值将导致0.1的量化误差。类似地,权重3.2的量化误差为0.2,依此类推。
一旦已经为滤波器中的每一个权重确定了量化误差,方法400就前进至框404。
在框404处,确定滤波器的总量化误差。在一些情况下,滤波器的总量化误差filtererror被定义为滤波器W的权重的量化误差we之和,如等式(5)所示,其中是滤波器W的第ith个权重的量化误差,并且R是滤波器中的权重的数量。
如上所述,对于卷积层的每个滤波器W,通过使滤波器W分别以预先确定的步长s和t在方向x和y(图2)上跨输入数据X滑动来生成输出。在每个步骤中,计算滤波器权重w的点积(即,输出值)a和与滤波器重叠或对准的输入数据值x(将它们统称为输入数据的窗口),如公式(6)所示,其中wi是滤波器W的第ith个权重,并且xi是窗口的第ith个输入值,并且R是滤波器W中的权重的数量。
当输入数据值x也从较高精度的数字格式量化为较低精度的数字格式时,还将存在与每个输入数据值相关联的量化误差。具体地,第一数字格式(例如,浮点数格式)的输入数据值x可被表示为第二较低精度的数字格式的输入数据值xq与量化误差xe之和,如公式(7)所示。
x=xq+xe (7)
因此,其中输入数据值和权重均被量化为较低精度的格式(例如,从浮点数格式到定点数格式),等式(6)可被写成可被扩展为等式(9)的等式(8)。从等式(10)可以看出,在这些情况下,输出值ae的误差为由于x=xq+xe, 等于输出ae中的误差可被写成两个项,如等式(11)中所示。
在许多情况下,是等式(11)的主要误差项,并且因此可通过减小来减小输出值a中的误差ae。在输入数据值的平均值不为零,或者输入数据值的绝对期望值大于输入量化误差的绝对期望值的情况下,可通过减小滤波器的总量化误差W filtererror来减小主要误差项卷积层的输入数据通常具有非零平均值,因为通常(但不一定)卷积层之前是激活层,该激活层在ReLU函数被提供给卷积层之前将其应用于卷积层的输入数据。如上所述,ReLU函数输出0和输入中的较大者。因此,ReLU函数的输出将大于或等于零。
一旦确定了滤波器的总量化误差filtererror,方法400就前进至框406。
在框406处,从总量化误差filtererror中标识待根据第二不同的量化方法量化为第二数字格式以使滤波器的总量化误差filtererror最小化的多个权重的子集。术语“子集”在本文中仅用于意指较大组事物的一部分。因此,滤波器的权重的子集仅包括滤波器的权重的一部分。
在一些情况下,第二量化方法被配置为相对于第一量化方法改变特定权重的舍入方向,使得如果根据第一量化方法对权重进行量化会产生带有第一符号的量化误差,则根据第二量化方法对相同权重进行量化会产生带有第二不同的符号的量化误差。例如,根据第一量化方法向上舍入(即,量化为更高的值-xq>x)的权重可根据第二量化方法向下舍入(即,量化为更低的值-xq<x),并且根据第一量化方法向下舍入(即,量化为更低的值-xq<x)的权重可根据第二量化方法向上舍入(即,量化为更高的值-xq>x)。
在滤波器的总量化误差filtererror等于滤波器权重的量化误差之和,如等式(5)所示,并且量化误差可能为负或正时,如果负量化误差的总和等于正量化误差的总和,则总量化误差filtererror将为零。因此,在这些情况下,通过使总负量化误差等于(或基本上等于)总正量化误差,可将滤波器的总量化误差filtererror趋近于零(或基本上为零)。在滤波器的总量化误差filtererror为正的情况下,这意味着减小总正量化误差并且增大总负量化误差。相反,在滤波器的总量化误差filtererror为负的情况下,这意味着增加总正量化误差并且减小总负量化误差。
这可通过有效地翻转或反转多个量化误差的符号来完成。在原始权重(第一数字格式(例如,浮点数格式)的权重w)在第二数字格式(例如,定点数格式)的两个最接近的可表示数之间的中间位置的情况下,通过在相反方向上舍入浮点数格式的权重(例如,代替向下舍入,执行向上舍入),可以翻转或反转量化误差的符号。在第一量化方法为就近舍入的舍入方法的情况下,这与将权重舍入到下一个最接近的可表示数相同。例如,如果第二数字格式是可以表示数字0、2、4、6等的定点数格式,则如果使用就近舍入的舍入模式,则数字2.9将被向下舍入为2,因为2是第二数字格式的最近的或最接近的可表示数。在这种情况下,根据等式(4),量化误差将是0.9(即,2.9-2)。如果数字2.9在相反的方向上舍入(即,向上而不是向下),相当于将2.9舍入为下一个最接近的可表示数,则将其向上舍入为4。在这种情况下,根据等式(4),量化误差将是-1.1(即,2.9-4)。因此,在相反的方向上对接近两个近的可表示数之间的中点的数字进行舍入有效地反转量化误差的符号。当舍入方向被反转时,量化误差的大小可能会不同,但是第一数字格式(例如,浮点数格式)的原始权重w越接近两个最近的可表示数之间的中点,则两个量化误差就越接近。
等于或接近第二数字格式(例如,定点数格式)的两个最近的可表示数之间的中点的滤波器W中的权重将具有约为定点数格式的可表示数(例如,步长)之间的距离的一半的量化误差。例如,在第二数字格式是由尾数位长度和指数exp定义的定点数格式的情况下,可表示数之间的距离将为2exp。因此,等于或接近两个最近的可表示数之间的中点的权重将具有约等于的量化误差。因此,滤波器的总量化误差可分为等式(12)中所述的这些量化误差中的K个量化误差:
总量化误差filtererror归零(或基本上归零)。因此,可通过反转N个量化误差的符号(或者换句话讲,通过在另一个方向上舍入N个权重)来将滤波器的总量化误差filtererror归零(或基本上归零),其中N为K/2,如等式(13)所示。
因此,在一些情况下,在总量化误差为正的情况下,待根据第二量化方法量化为第二数字格式的权重的子集可包括具有正量化误差的N个权重,该正量化误差最接近第二数字格式且不饱和的可表示数之间的距离的一半(即,2exp的一半)。在一些情况下,可通过基于具有正量化误差的权重的量化误差与第二数字格式的可表示数之间的距离的一半(即,2exp的一半)的距离对具有正量化误差的权重进行排序,并且从排序列表中选择前N个权重来标识这N个权重。在第一量化方法为就近舍入的舍入方法的情况下,这N个权重将是具有最大正量化误差的N个权重。
类似地,在总量化误差为负的情况下,待根据第二量化方法量化为第二数字格式的权重的子集可包括具有负量化误差的N个权重,该负量化误差最接近第二数字格式且不饱和的可表示数之间的距离的一半(即,2exp的一半)。在一些情况下,可通过基于具有负量化误差的权重的量化误差的大小与第二数字格式的可表示数之间的距离的一半(即,2exp的一半)的距离对具有负量化误差的权重进行排序,并且从排序列表中选择前N个权重来标识这N个权重。在第一量化方法为就近舍入的舍入方法的情况下,这N个权重将是具有最大负量化误差的N个权重。
然而,在其他情况下,可以以另一种方式选择根据第二量化方法选择的用于量化的滤波器的特定权重。例如,如下面更详细地描述的,在一些情况下,一层的所有或至少多个滤波器可以一起量化,并且当选择根据第二量化方法量化为第二数字格式的每个滤波器的权重时,可以考虑同一层的滤波器之间的相互作用。
一旦已经确定了待根据第二量化方法量化为第二数字格式的多个权重的子集,则方法400前进至框408。
在框408处,生成表示第二数字格式的滤波器的权重的一组量化权重,使得子集中每一个权重的量化权重基于根据第二量化方法将该权重量化为第二数字格式,并且滤波器的其余权重中的每个权重的量化权重基于根据第一量化方法将该权重量化为第二数字格式。可以预期,该组量化权重的总量化误差比在框404中确定的总量化误差更接近零。
在框402中根据第一量化方法将滤波器的权重量化为第二数字格式的情况下,可通过取量化权重并且在预先确定的方向上(即,向上或向下)用第二数字格式(例如,定点数格式)的下一个可表示数替换对应于子集中的权重的每个量化权重以便反转那些权重的量化误差的符号,生成表示第二数字格式的滤波器权重的量化权重的集合。例如,如果如图5和图6所示,在框402中,基于第四权重w3落入第四区间bin3中,将第四权重w3量化为第四可表示数r3。如果第四量化权重在框406中标识的子集中,则第四量化权重可被替换为第二数字格式的下一个可表示数,即,第五可表示数r4。
预先确定的方向基于目标是将负量化误差翻转为正量化误差还是将正量化误差翻转为负量化误差。例如,如果使用等式(4)来确定量化误差是正还是负,则如果第二数字格式(例如,定点数格式)的权重小于第一数字格式(例如,浮点数格式)的权重(即,如果权重被向下舍入),量化误差将为正,并且如果第二数字格式(例如,定点数格式)的权重大于浮点数格式的权重(即,如果权重被向上舍入),则量化误差将为负。
因此,在该示例中,为了使正量化误差变为负量化误差,将量化权重替换为第二数字格式(例如,定点数格式)的下一个最高可表示数。例如,如果第二数字格式为可以表示数字0、2、4、6等的定点数格式,并且使用了就近舍入的舍入模式,则权重2.9将被量化为低至2。这导致0.9(=2.9-2)的正量化误差。如果量化权重2被替换为定点数格式的下一个最高可表示数,在该示例中为4,则导致负量化误差-1.1(=2.9-4)。
相反,为了使负量化误差变为正量化误差,量化权重被替换为定点数格式的下一个最低可表示数。例如,如果第二数字格式为可以表示数字0、2、4、6等的定点数格式,并且使用了就近舍入的舍入模式,则权重1.1将被量化为高达2。这导致-0.9(=1.1-2)的负量化误差。如果量化权重2被替换为定点数格式的下一个最低可表示数,在该示例中为0,则导致正量化误差1.1(=1.1-0)。
在一些情况下,用下一个可表示数替换量化权重可通过在预先确定的方向上选择下一个可表示数并且用该数字来替换量化权重wq以生成调整后的量化权重wa来实现。在其他情况下,用定点数格式的下一个可表示数替换量化权重可通过对第一数字格式的权重wi添加增量δi以将权重移动至下一个最高或下一个最低量化区间,然后根据等式(14)中所示的第一量化方法进行量化(例如,量化为最接近的可表示数)来实现,其中 并且exp是第二数字格式的指数。基于滤波器的总量化误差filtererror的符号和第一量化方法来选择增量δi。在一些情况下,如下所述,在同一层中的多个滤波器一起被量化的情况下,增量δi还可以基于相关滤波器之间的相互作用。在一些情况下,可根据等式(14)来重新量化第一数字格式的所有权重,然而,对于不在框406中标识的子集中的那些权重,增量δi可被设定为零。
例如,在第一量化方法为就近舍入的舍入方法并且使用等式(4)来确定量化误差是正还是负的情况下,第二数字格式(例如,定点数格式)的步长的一半可被添加到第一数字格式(例如,浮点数格式)的权重,以将权重移动至下一个最高量化区间,以使正量化误差变为负量化误差。相反,可从第一数字格式(例如,浮点数格式)的权重中减去一半步长,以将权重移动至下一个最低量化区间,以使负量化误差变为正量化误差。
然而,在框402中未根据第一量化方法将滤波器的权重量化为第二数字格式的情况下,生成权重集合可包括根据第二量化方法将子集的每一个权重量化为第二数字格式,以及根据第一量化方法将滤波器的每一个其余的权重量化为第二数字格式。如上所述,根据第一量化方法将权重量化为第二数字格式可包括针对特定的舍入模式(例如,就近舍入)根据等式(2)将该权重量化为第二数字格式。
如上所述,第二量化方法可被配置为在与第一量化方法相反的方向上量化权重。例如,如果根据第一量化方法量化时权重被向上舍入,则根据第二量化方法量化时该权重被向下舍入,并且如果根据第一量化方法量化时权重被向下舍入,则根据第二量化方法量化时该权重被向上舍入。换句话讲,如果第一量化方法将权重量化为第二数字格式的第一可表示数,则第二量化方法将该权重量化为第二数字格式的第二可表示数,其中第二可表示数是在预先确定的方向上相对于第一可表示数的下一个可表示数。可以如上所述关于替换量化权重来选择预先确定的方向。例如,可基于目标是将负量化误差翻转成正量化误差还是将正量化误差翻转成负量化误差来选择预先确定的方向。
在一些情况下,根据第二量化方法将权重量化为第二数字格式包括将增量δi添加到权重以生成修改后的权重并且根据第一量化方法来量化修改后的权重。可以以与上述关于替换量化权重相同的方式来选择增量,使得修改后的权重落在预先确定的方向上的下一个量化区间中。
一旦生成了表示第二数字格式的滤波器的权重的量化权重的集合,则方法400结束。
在一些情况下,仅在滤波器的总量化误差大于误差阈值的情况下才可以执行框406和框408。换句话讲,在一些情况下,如果滤波器的总量化误差小于或等于误差阈值,则可以不执行框406和框408。
图4的方法400在将滤波器的总量化误差filtererror归零的有效性是基于子集中权重的量化误差的大小。具体地,基于存在N个权重来选择数量N,其中当向上舍入或向下舍入时量化误差的大小将基本上相同。当第一数字格式(例如,浮点数格式)的权重w在第二数字格式(例如,定点数格式)的两个最近的可表示数之间的中间位置时进行该操作。
例如,当将第一数字格式(例如,浮点数格式)的权重w量化为第二数字格式(例如,定点数格式)的最接近的可表示数时,量化误差将等于定点数格式的步长的一半减去等式(15)中所示的增量Δ,其中增量Δ是第一数字格式(例如,浮点数格式)的权重w与两个最近的可表示数之间的中点之间的差,如等式(16)所示。相反,当将第一数字格式(例如,浮点数格式)的权重w量化为下一个最接近的可表示数时,量化误差将是步长的一半加上增量Δ,如等式(17)所示。因此,当增量Δ为零时,量化误差和将仅具有相同的大小(即,步长的一半)。
因此,第一数字格式(例如,浮点数格式)的权重w进一步来自第二数字格式(例如,定点数格式)的两个最近的可表示数之间的中点,当量化误差的符号被反转时(即,当权重被量化为下一个最高或下一个最低可表示数时),量化误差大小将增加得更多。因此,根据第二量化方法量化N个权重可在另一个方向上推动滤波器的总量化误差filtererror。例如,如果在根据第一量化方法将所有权重量化为第二数字格式时滤波器的总量化误差filtererror为正,则根据第二量化方法对一些权重进行量化可使滤波器的总量化误差filtererror为负。因此,在一些情况下,如果滤波器的总量化误差filtererror没有下降到预先确定的误差阈值∈以下,则可以重复框404和框406。更具体地,在一些情况下,如果根据第二量化方法量化权重的子集没有将滤波器的总量化误差降低到误差阈值以下,则可以选择另一个权重子集以根据第二量化方法或另一种量化方法进行量化。
现在参考图7,该图示出了用于将DNN滤波器W的权重w从第一数字格式量化为第二较低精度的数字格式的迭代方法700。第二数字格式是定点数格式,但是第一数字格式可以是浮点数格式或定点数格式。方法700可以由基于计算的装置来实现,诸如下面相对于图17描述的基于计算的装置1700。例如,可能存在其上存储有计算机可读指令的计算机可读存储介质,计算机可读指令在基于计算的装置处执行时使基于计算的装置执行图7的方法700。
方法700开始于框702。框702一般对应于图4的方法400的框402,其中对于滤波器的每个权重,确定与根据第一量化方法将该权重量化为第二数字格式相关联的量化误差。可通过根据第一量化方法(例如,根据等式(2))将权重量化为第二数字格式来生成量化权重并且根据量化权重(例如,根据等式4)确定量化误差来确定权重的量化误差,或者可以不根据第一量化方法(例如,基于权重的分析)将权重量化为第二数字格式来确定权重的量化误差。一旦确定了量化误差,方法700就前进至框704。
在一般对应于图4的方法400的框404的框704处,从滤波器的权重的相关量化误差确定滤波器的总量化误差filtererror。在一些情况下,可将滤波器的总量化误差计算为滤波器权重的相关量化误差之和。在第一迭代中,相关的量化误差是在框702中确定的量化误差。具体地,在第一迭代中,滤波器的总量化误差filtererror基于与根据第一量化方法将每个权重量化为第二数字格式相关联的量化误差。然而,在随后的迭代中,相关的量化误差是在框707中针对一个或多个子集中的权重确定的量化误差和在框702中针对滤波器的其余权重确定的量化误差。具体地,在随后的迭代中,滤波器的总量化误差filtererror基于将子集中的每一个权重根据与该子集相关联的量化方法(例如,第二量化方法或另一种量化方法)量化为第二数字格式,并且根据第一量化方法对滤波器的其余权重(即,不在子集中的那些权重)进行量化。一旦确定了滤波器的总量化误差,方法700就前进至框705。
在框705处,确定滤波器的总量化误差filtererror是否大于误差阈值∈。如果确定滤波器的总量化误差filtererror大于误差阈值∈,则方法700前进至框706和框707。然而,如果确定滤波器的总量化误差filtererror小于或等于误差阈值∈,则方法700前进至框708。
在一般对应于图4的方法400的框406的框706处,基于滤波器的总量化误差filtererror来标识待根据另一种量化方法量化为第二数字格式的滤波器的权重的子集。可使用以上关于框406所描述的用于基于总量化误差来标识权重的子集的任何方法。例如,可基于总量化误差的符号、总量化误差的大小、第一量化方法和权重的量化误差来标识权重的子集。
在第一迭代中,框706可用于标识待根据第二量化方法来量化为第二数字格式的权重。在随后的迭代中,框706可用于标识待根据第二量化方法或另一种量化方法来量化为第二数字格式的权重。例如,如果第一总量化误差为负,则框706的第一迭代可标识具有将被翻转为正量化误差的负量化误差的权重的子集。如果这致使滤波器的总量化误差变为正,则框706的第二迭代可标识具有将被翻转为负量化误差的正量化误差的权重的不同的子集。一旦权重的子集被标识,方法700就前进至框707。
在框707处,对于在框706中标识的子集中的每一个权重,确定与根据与该子集相关联的量化方法将该权重量化为第二数字格式相关联的量化误差。例如,在子集与第二量化方法相关联的情况下,确定与根据第二量化方法将子集中的每一个权重量化为第二数字格式相关联的量化误差。与框702一样,子集中的权重的量化误差可通过根据与子集相关联的量化方法将该权重量化为第二数字格式来生成量化权重并且根据该量化权重确定量化误差来确定;或者可在不量化权重的情况下确定量化误差。一旦确定了量化误差,方法700就返回到框704,在其中确定总量化误差。
在一般对应于图4的方法400的框408的框708处,生成表示第二数字格式的权重的一组量化权重,其中子集中每一个权重的量化权重基于根据与该子集相关联的另一种量化方法来将该权重量化为第二数字格式,并且(不形成子集的一部分的)所有其余权重的量化权重均基于根据第一量化方法将这些权重量化为第二数字格式。
尽管图4和图7的方法400和方法700被描述为用于将DNN滤波器的权重在每个滤波器的基础上从第一数字格式转换为第二精度较低的数字格式,但在其他情况下,可将滤波器的权重细分为权重的多个非重叠子集,并且可针对权重的每一个非重叠子集执行图4的方法400或图7的方法700。在这些情况下,不是确定滤波器的总量化误差,而是确定子集中权重的总量化误差。
现在参考图8,该图示出了将DNN的权重从第一组数字格式转换为第二组数字格式以便能够在硬件逻辑中实现DNN的方法800。第二组数字格式是定点数格式,并且第一组数字格式可以是定点数格式或浮点数格式。每个滤波器与第一数字格式和第二数字格式相关联。取决于要实现DNN的硬件逻辑的配置,同一DNN层的所有滤波器可具有相同的第二数字格式,或者同一DNN层的不同滤波器可具有不同的第二数字格式。例如,可被配置为实现DNN的一些硬件逻辑(例如,DNN加速器)可能能够使用不同的定点数格式来处理同一层的滤波器,而可被配置为实现DNN的其他硬件逻辑(例如,DNN加速器)则只能够处理具有相同定点数格式的同一层的滤波器。
方法800可以由基于计算的装置来实现,诸如下面相对于图17描述的基于计算的装置1700。例如,可能存在其上存储有计算机可读指令的计算机可读存储介质,计算机可读指令在基于计算的装置处执行时使基于计算的装置执行图8的方法800。
方法800在框802处开始,其中DNN的多个滤波器中的第一滤波器被选择为当前滤波器用于转换。可以以任何合适的方式从多个滤波器中选择第一滤波器。在一些情况下,与层相关联的所有滤波器在与不同的层相关联的滤波器被转换之前全部被转换。一旦选择了多个滤波器中的第一滤波器,方法800就前进至框804。
在框804处,使用图4的方法400或图7的方法700来确定滤波器是否适合于转换。如果与滤波器相关联的层的输入的期望值(或平均值)为非零(即,E(x)≠0),则可以认为滤波器适合使用图4的方法400或图7的方法700进行转换。换句话讲,如果与滤波器相关联的层的输入的期望值基本上为零(即,E(x)≈0),则可以认为滤波器不适合使用图4的方法400或图7的方法700进行转换。如上所述,例如,如果输入数据的层之前有实现ReLU、PReLU或LeakyReLU函数的激活层,则该层的输入数据可具有非零平均值(即,非零的期望值)。
如果已确定滤波器适合使用图4的方法400或图7的方法700进行转换,则方法800前进至框806,其中图4的方法400或图7的方法700用于将滤波器的第一数字格式的权重转换为滤波器的第二数字格式。然而,如果使用图4的方法400或图7的方法700确定滤波器不适合转换,则方法800前进至框808,其中使用另一种方法将滤波器的权重从滤波器的第一数字格式转换为第二数字格式。例如,可以使用标准量化方法诸如就近舍入来量化滤波器的权重。在框806或框808处转换了当前滤波器的权重之后,方法前进至框810。
在框810处,确定是否存在DNN的任何未转换的滤波器。如果存在至少一个未转换的滤波器,则方法800前进至框812,其中将未转换的滤波器中的一个未转换的滤波器选择为当前滤波器用于转换,然后方法800返回到框804。然而,如果确定DNN的所有滤波器都已被转换,则方法800结束。
在一些情况下,同一层的多个滤镜可以同时或彼此结合地从一个或多个第一定点格式被转换为一个或多个第二定点格式,使得可以利用同一层的滤波器之间的相互作用。在这些情况下,与根据以上关于框402所述的第一量化方法将每个滤波器的权重量化为该滤波器的第二数字格式相关联的量化误差和每个滤波器的总量化误差可如上文关于框404所述那样确定。然而,待根据第二量化方法量化为该滤波器的第二数字格式的每个滤波器的权重的子集可基于滤波器的总量化误差和多个滤波器之间的相互作用。具体地,层的每个滤波器将具有相同的尺寸,并且每个滤波器的第ith个权重将被应用于相同的输入数据值。因此,可选择待根据第二量化方法量化为第二数字格式的滤波器的权重,使得所选择的权重跨滤波器的不同权重分布。例如,滤波器的权重可被选择为使得如果层的第一滤波器的第ith个权重属于在第一方向上(例如,正方向)量化为第二数字格式的子集,则该层的第二滤波器的第ith个权重不属于在相同的方向上量化为第二数字格式的子集。相应地,如果根据框406,选择层的第一滤波器的第ith个权重以向上舍入而不是向下舍入,并且根据框406,选择层的第二滤波器的第ith个权重以向上舍入而不是向下舍入,则可以选择第二滤波器的另一个权重而不是第ith个权重向上舍入。然而,如果根据框406选择层的第二滤波器的第ith个权重以向下舍入而不是向上舍入,则第二滤波器的第ith个权重可保留在该滤波器的权重的子集中。
测试结果
现在参考图9,该图示出了其中测试了图4的方法400的示例性测试环境900。在该测试环境中,一组256×256×256浮点输入值(x)与步幅1×1卷积,其中256个3×3×256滤波器中的每一个滤波器具有浮点权重(w)以生成浮点输出值(a)。然后根据就近舍入的舍入方法,将输入值(x)量化为由位宽4和指数-1定义的定点数格式以生成量化输入值(xq),根据就近舍入的舍入方法,将权重(w)量化为由位宽4和指数-2定义的定点数格式以生成量化权重(wq),并且量化输入值(xq)和权重(wq)与步幅1×1进行卷积以生成量化输出值(aq)。然后根据图4的方法400生成定点格式的一组量化权重(wa),该组量化权重在本文中可被称为调整后的权重。然后将量化的输入值(xq)和调整后的权重(wa)与步幅1×1进行卷积以生成调整后的输出值(aa)。
如等式(18)所示确定每个浮点输出(a)和对应的量化输出(aq)之间的绝对量化误差(errorq),并且如等式(19)所示确定每个浮点输出(a)和对应的调整后的输出(aa)之间的绝对量化误差(errora)。然后,针对每种量化方法(即就近舍入,以及在图4的方法400中列出的量化方法,其中就近舍入是第一量化方法),在每个滤波器的基础上确定平均和最大(或峰值)的绝对量化误差,如等式(20)、(21)、(22)和(23)中所示。
errorq=|a-aq| (18)
errora=|a-aa| (19)
Eq=平均{errorq} (20)
Ea=平均{errora} (21)
Mq=最大{errorq} (22)
Ma=最大{errora} (23)
现在参考图10至图12,这些图示出了示出在第一示例性测试场景中通过根据图4的方法400对权重进行量化而不是根据就近舍入的舍入模式对权重进行量化的输出中的误差的改进的曲线图,其中输入值是集合[0,4)中的统一随机数,并且权重是集合(-1,1)中的统一随机数。具体地,图10分别示出了每个滤波器的平均绝对量化误差Eq和Ea的曲线图1002、1004,图11分别示出了每个滤波器的峰值(或最大)绝对量化误差Mq和Ma的曲线图1102、1104,并且图12示出了在整个层上(即,对于所有输出)每个输出量化误差(即,errorq-errora))的改进的密度直方图1202。如本领域的技术人员所知,密度直方图为直方图,其中每一个矩形的面积等于对应的类别/区间的相对频率,并且整个直方图的面积等于1。因此,在图12的密度直方图1202中,每个区间对应于每个输出量化误差改进的特定范围,并且每个区间的密度等于落入该区间内的量化误差的改进的输出的数量除以区间宽度×输出总数。
如上所述,使滤波器与输入数据卷积包括计算权重与输入数据的多个窗口中的每一个窗口的点积。因此,将从每个滤波器生成多个输出值。从图10至图12可以看出,对于几乎所有的滤波器,与基于量化权重(即,仅根据就近舍入的舍入方法量化的权重)的输出值相比,基于调整后的权重(即,根据图4的方法400量化的权重)的输出值具有较小的误差。
如表3所示,在该第一示例性测试场景中,所有输出值的平均量化误差Eq和Ea分别为17.552和16.420,表明通过根据图4的方法400量化权重可实现显著的总体改进。
表3
现在参考图13至图15,这些图示出了示出在第二示例性测试场景中通过根据图4的方法400对权重进行量化而不是根据就近舍入的舍入模式对权重进行量化的输出中的误差的改进的曲线图,其中输入值是集合[0,4)中的统一随机数,并且权重是集合(-1.01,1.01)中的统一随机数。具体地,图13分别示出了每个滤波器的平均绝对量化误差Eq和Ea的曲线图1302、1304,图14示出了每个滤波器的最大绝对量化误差Mq和Ma的曲线图1402、1404,并且图15示出了对于层(即,对于输出)的每个输出量化误差(即,errorq-errora))的改进的密度直方图1502。如上所述,密度直方图为直方图,其中每一个矩形的面积等于对应的类别/区间的相对频率,并且整个直方图的面积等于1。因此,在图15的密度直方图1502中,每个区间对应于每个输出量化误差改进的特定范围,并且每个区间的密度等于落入该区间内的量化误差的改进的输出的数量除以区间宽度×输出总数。
从图13至图15可以看出,对于几乎所有的滤波器,与基于量化权重(即,根据就近舍入的舍入方法量化的权重)的输出值相比,基于调整后的权重(即,根据图4的方法400量化的权重,其中第一量化为就近舍入的舍入模式)的输出值具有较小的误差。
如表4所示,在该第二示例性测试场景中,所有输出值的平均量化误差Eq和Ea分别为20.57和17.14,表明通过根据图4的方法400量化权重可实现显著的总体改进。
表4
现在参考表5至表7,这些表示出了当将DNN的输入值和权重量化为分别具有6位、5位和4位的定点数格式时,在图16的DNN加速器上实现的GoogLeNet DNN的Top-1和Top-5分类准确度。每个表示出了当对权重进行以下操作时DNN的Top-1和Top-5分类准确度:(a)根据就近舍入的量化方法,从浮点数格式量化为指定的定点数格式,(b)根据就近舍入的量化方法从浮点数格式量化为指定的定点数格式,并且在量化后重新训练,以及(c)根据图4的方法400从浮点数格式量化为指定的定点数格式,而无需任何重新训练。如本领域的技术人员所知,Top-1分类准确度是对正确分类是否是DNN的最高输出的一种度量;并且Top-5分类准确度是对正确分类是否在DNN的前五个输出中的一种度量。
表5
表6
表7
从表5至表7可以看出,所描述的将DNN的权重转换为定点数格式的方法相对于通过简单地根据标准量化方法诸如就近舍入量化权重来创建的GoogLeNet DNN而言,可以提高GoogLeNet DNN的准确度。在大多数情况下,根据所述方法转换权重产生GoogLeNet DNN,其准确度至少与经过初始量化后重新训练的GoogLeNet DNN的准确度一样高,并且在一些情况下,产生具有更高准确度的GoogLeNet DNN。
现在参考表8至表10,这些表示出了当将DNN的输入值和权重量化为分别具有6位、5位和4位的定点数格式时,在图16的DNN加速器1600上实现的AlexNet DNN的Top-1和Top-5分类准确度。每个表示出了当对权重进行以下操作时DNN的Top-1和Top-5分类准确度:(a)根据就近舍入的量化方法,从浮点数格式量化为指定的定点数格式,(b)根据就近舍入的量化方法从浮点数格式量化为指定的定点数格式,并且在量化后重新训练,以及(c)根据图4的方法400从浮点数格式量化为指定的定点数格式。
表8
表9
表10
从表8至表10可以看出,所描述的将DNN的权重转换为定点数格式的方法相对于通过简单地根据标准量化方法对权重进行量化而创建的AlexNet DNN,可以提高AlexNet DNN的准确度。在大多数情况下,根据所述方法转换权重产生AlexNet DNN,其准确度至少与经过初始量化后重新训练的AlexNet DNN的准确度一样高,并且在许多情况下,产生具有更高准确度的AlexNet DNN。
示例性DNN加速器
现在参考图16,示出了示例性硬件逻辑,该示例性硬件逻辑可被配置为使用DNN的滤波器的量化权重来实现DNN,该量化权重使用根据图4的方法400或图7的方法700生成。具体地,图16示出了示例性DNN加速器1600。
图16的DNN加速器1600被配置为通过一系列硬件过程(也可以被称为处理过程)来计算DNN的输出,其中在每个过程期间,DNN加速器接收DNN的层的至少一部分输入数据,并且根据该层(以及可选地根据一个或多个后续层)处理所接收的输入数据以产生处理后的数据。处理后的数据要么输出到存储器用作随后的硬件过程的输入数据,要么输出为DNN的输出。DNN加速器在单个硬件过程期间可处理的层数可基于数据的大小、DNN加速器的配置,以及层的顺序。例如,在DNN加速器包括执行每个可能的层类型的硬件逻辑的情况下,包括第一卷积层、第一激活层、第二卷积层、第二激活层和池化层的DNN可能能够接收初始DNN输入数据,并且根据第一硬件过程中的第一卷积层和第一激活层来处理该输入数据,然后将激活层的输出输出到存储器中,接着在第二硬件过程中从存储器中接收该数据作为输入,并且根据第二卷积层、第二激活层和池化层处理该数据,以产生DNN的输出数据。
图16的示例性DNN加速器1600包括输入模块1601、卷积引擎1602、累积缓冲器1604、逐元素运算模块1606、激活模块1608、归一化模块1610、池化模块1612、输出交织模块1614,以及输出模块1615。每个模块或引擎实现或处理一种或多种类型的层的全部或一部分。具体地,卷积引擎1602和累积缓冲器1604一起实现或处理卷积层或全连接层。激活模块1608处理或实现激活层。归一化模块1610处理或实现归一化层。池化模块1612实现池化层,并且输出交织模块1614处理或实现交织层。
输入模块1601被配置为接收待处理的输入数据,并且将其提供给下游模块以进行处理。
卷积引擎1602被配置为使用与特定卷积层相关联的权重对所接收的输入数据执行卷积运算。如图16所示,DNN的每个卷积层的(可通过图4的方法400或图7的方法700生成的)权重可被存储在系数缓冲器1616中,并且当卷积引擎1602正在处理特定卷积层时,该特定卷积层的权重可被提供给卷积引擎1602。在DNN加速器支持可变权重格式的情况下,卷积引擎1602可被配置为接收指示正在处理的当前卷积层的权重的一种或多种格式的信息,以允许卷积引擎正确地解释和处理所接收的权重。
卷积引擎1602可包括多个乘法器(例如,128)和多个加法器,所述多个加法器将乘法器的结果相加以产生单个和。尽管在图16中示出了单个卷积引擎1602,但在其他示例中,可存在多个(例如,8个)卷积引擎,使得可以同时处理多个窗口。卷积引擎1602的输出被馈送到累积缓冲器1604。
累积缓冲器1604被配置为接收卷积引擎的输出并且将其添加到累积缓冲器1604的当前内容中。以这种方式,累积缓冲器1604在卷积引擎1602的若干硬件过程上累积卷积引擎1602的结果。尽管在图16中示出了单个累积缓冲器1604,但在其他示例中,可存在多个(例如,8个,每个卷积引擎一个)累积缓冲器。累积缓冲器1604将累积结果输出到逐元素运算模块1606,该逐元素运算模块根据在当前硬件过程期间是否要处理逐元素层,可能或可能不对累积结果进行运算。
逐元素运算模块1606被配置为接收当前硬件过程的输入数据(例如,在当前硬件过程中未处理卷积层时)或来自累积缓冲器1604的累积结果(例如,在当前硬件过程中处理卷积层时)。逐元素运算模块1606可根据在当前硬件过程中是否处理逐元素层以及/或者根据是否要在逐元素层之前对激活层进行处理,处理所接收的输入数据或将所接收的输入数据传递到另一个模块(例如,激活模块1608和/或归一化模块1610)。当逐元素运算模块1606被配置为处理所接收的输入数据时,逐元素运算模块1606对所接收的数据执行逐元素运算(可选地与(可从外部存储器获得的)另一个数据集合一起)。逐元素运算模块1606可被配置为执行任何合适的逐元素运算,诸如但不限于相加、相乘、求最大值和最小值。然后,根据是否要在逐元素层之后处理激活层,将逐元素运算的结果提供给激活模块1608或归一化模块1610。
激活模块1608被配置为接收以下项中的一者作为输入数据:(例如,当在当前硬件过程中未处理卷积层时)(经由逐元素运算模块1606)对硬件过程的原始输入;(例如,当在当前硬件过程中处理卷积层,并且在当前硬件过程中未处理逐元素层或者在当前硬件过程中处理逐元素层但在激活层之后时)(经由逐元素运算模块1606)累积的数据。激活模块1608被配置为将激活函数应用于输入数据,并且将输出数据提供回逐元素运算模块1606,其中该输出数据被直接或者在逐元素运算模块1606对其进行处理之后转发到归一化模块1610。在一些情况下,应用于由激活模块1608接收的数据的激活函数可在每个激活层变化。在这些情况下,可以(例如,在存储器中)存储指定要应用于每个激活层的激活函数的一个或多个属性的信息,并且可以将在特定硬件过程中处理的激活层的相关信息在该硬件过程期间提供给激活模块1608。
在一些情况下,激活模块1608可被配置为在查找表的条目中存储表示激活函数的数据。在这些情况下,输入数据可用于查找查找表中的一个或多个条目以及表示激活函数的输出的输出值。例如,激活模块1608可被配置为通过在从查找表读取的两个或更多个条目之间进行插值来计算输出值。
在一些示例中,激活模块1608可被配置为通过实现ReLU函数而作为整流线性单元(ReLU)操作。在ReLU函数中,输出元素yi,j,k通过标识等式(24)中列出的最大值来计算,其中对于小于0的x值,y=0:
yi,j,k=f(xi,j,k)=max{0,xi,j,k} (24)
在其他示例中,激活模块1608可被配置为通过实现PReLU函数而作为参数整流线性单元(PReLU)操作。PReLU函数执行与ReLU函数类似的运算。具体地,在为常数的情况下,PReLU被配置为生成输出元素yi,j,k,如等式(25)所示:
yi,j,k=f(xi,j,k;w1,w2,b1,b2)=max{(w1*xi,j,k+b1),(w2*xi,j,k+b2)} (25)
归一化模块1610被配置为接收以下项中的一者作为输入数据:(例如,在当前硬件过程未处理卷积层并且当前硬件过程未处理逐层元素层和激活层时)(经由逐元素运算模块1606)硬件过程的原始输入数据;(例如,当在当前硬件过程中处理卷积层并且在当前硬件过程中未处理逐元素层和激活层时)(经由逐元素运算模块1606)累积输出;以及逐元素运算模块和/或激活模块的输出数据。然后,归一化模块1610对所接收的输入数据执行归一化函数以产生归一化数据。在一些情况下,归一化模块1610可被配置为执行局部响应归一化(LRN)函数和/或局部对比度归一化(LCN)函数。然而,对于本领域的技术人员将显而易见的是,这些仅是示例,并且归一化模块1610可被配置为实现任何合适的一个或多个归一化函数。不同的归一化层可被配置为应用不同的归一化函数。
池化模块1612可接收来自归一化模块1610的归一化数据,或者可经由归一化模块1610接收到归一化模块1610的输入数据。在一些情况下,可经由纵横开关(显示为XBar1618)在归一化模块1610和池化模块1612之间传输数据。术语“纵横开关”在本文中用于指代简单的硬件模块,该硬件模块包含以动态方式将多个模块连接在一起的路由逻辑。在该示例中,纵横开关可根据在当前硬件过程中将处理哪些层来动态地连接归一化模块1610、池化模块1612和/或输出交织模块1614。因此,纵横开关可在每个过程接收指示将连接哪些模块1610、1612、1614的信息。
池化模块1612被配置为对所接收的数据执行池化函数,诸如但不限于max函数或mean函数,以产生池化数据。池化层的目的是减小表示的空间大小,以减少网络中参数和计算的数量,并且因此也控制过度拟合。在一些示例中,在每个池化层定义的滑动窗口上执行池化运算。
输出交织模块1614可接收来自归一化模块1610的归一化数据、(经由归一化模块1610)对归一化函数的输入数据,或者来自池化模块1612的池化数据。在一些情况下,可经由纵横开关1618在归一化模块1610、池化模块1612和输出交织模块1614之间传输数据。输出交织模块1614被配置为执行重新排列运算以产生处于预先确定的顺序的数据。这可包括对所接收的数据进行排序和/或转置。由最后一层生成的数据被提供给输出模块1615,其中该数据被转换为对当前硬件过程的期望的输出格式。
归一化模块1610、池化模块1612和输出交织模块1614可各自访问共享缓冲器1620,这些模块1610、1612和1614可使用该共享缓冲器向其中写入数据并且从中检索数据。例如,这些模块1610、1612、1614可使用共享缓冲器1620来重新排列所接收的数据或所生成的数据的顺序。例如,这些模块1610、1612、1614中的一个或多个模块可被配置为将数据写入共享缓冲器1620并且以不同的顺序读出相同的数据。在一些情况下,尽管归一化模块1610、池化模块1612和输出交织模块1614中的每一者都可以访问共享缓冲器1620,但是归一化模块1610、池化模块1612和输出交织模块1614中的每一者可被分配共享缓冲器1620的仅它们自身可访问的一部分。在这些情况下,归一化模块1610、池化模块1612和输出交织模块1614中的每一者可能仅能够从共享缓冲器1620读取它们已经写入共享缓冲器1620中的数据。
在任何硬件过程期间使用的或活动的DNN加速器1600的模块基于在该硬件过程期间处理的层。特别地,仅与在当前硬件过程期间处理的层相关的模块或部件被使用或者是活动的。如上所述,基于DNN中层的顺序以及可选地基于一个或多个其他因素(诸如数据的大小)来(通常预先通过例如软件工具)确定在特定的硬件过程期间处理的层。例如,在一些情况下,除非可在不将数据写入层之间的存储器的情况下处理多个层,否则DNN加速器可被配置为每个硬件过程执行单层处理。例如,如果在第一卷积层后面紧接着是第二卷积层,则每个卷积层将必须在单独的硬件过程中执行,因为来自第一硬件卷积的输出数据需要先写出到存储器中才可以被用作第二硬件卷积的输入。在这些硬件过程中的每一个硬件过程中,仅与卷积层相关的模块、部件或引擎,诸如卷积引擎1602和累积缓冲器1604,可以被使用或者是活动的。
尽管图16的DNN加速器1600示出了模块、引擎等的特定的布置顺序,并且因此示出了数据的处理如何流经DNN加速器,但应当理解,这仅是示例,并且在其他示例中,模块、引擎可以以不同的方式布置。此外,其他硬件逻辑(例如,其他DNN加速器)可实现DNN层的另外的或另选的类型,并且因此可包括不同的模块、引擎等。
图17示出了示例性通用基于计算的装置1700的各种部件,该基于计算的装置可被实现为任何形式的计算和/或电子装置,并且可在其中实现上述图4、图7和图8的方法400、700和800的实施方案。
基于计算的装置1700包括一个或多个处理器1702,该一个或多个处理器可以是微处理器、控制器或任何其他合适类型的处理器,用于处理计算机可执行指令以控制装置的操作,以便评估由硬件设计定义的集成电路在完成任务时的性能。在一些示例中,例如在使用片上系统架构的情况下,处理器1702可包括一个或多个固定功能块(也被称为加速器),该一个或多个固定功能块实现用于确定定点数格式的方法的一部分,该定点数格式用于表示在硬件(而不是软件或固件)中输入到DNN的层或从其中输出的一组值。可在基于计算的装置处提供包括操作系统1704的平台软件或任何其他合适的平台软件,以使应用程序软件诸如用于实现图4、图7和图8的方法400、700和800中的一种或多种方法的计算机可执行代码1705能够在装置上执行。
可以使用可由基于计算的装置1700访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如计算机存储介质,诸如存储器1706和通信介质。计算机存储介质(即,非暂时性机器可读介质)诸如存储器1706,包括用于存储信息诸如计算机可读指令、数据结构或程序模块或其他数据的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存存储器或其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储装置,或可用于存储信息以供计算装置访问的任何其他非传输介质。相反,通信介质可以在诸如载波之类的调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义,计算机存储介质不包括通信介质。尽管在基于计算的装置1700内示出了计算机存储介质(即,非暂时性机器可读介质,例如存储器1706),但应当理解,存储器可以是分布式的或位于远程位置的,并且可经由网络或其他通信链路(例如,使用通信接口1708)进行访问。
基于计算的装置1700还包括输入/输出控制器910,该输入/输出控制器被布置为将显示信息输出到显示装置1712,该显示装置可以与基于计算的装置1700分离或成一体。显示信息可以提供图形用户界面。输入/输出控制器1710还被布置为接收和处理来自一个或多个装置(例如,用户输入装置1714(例如,鼠标或键盘))的输入。在一个实施方案中,如果显示装置1712是触敏显示装置,则其也可以充当用户输入装置1714。输入/输出控制器1710还可以将数据输出到除显示装置之外的装置,例如本地连接的打印装置(图17中未示出)。
图18示出了其中可实现可配置为实现本文所述的DNN的硬件逻辑(例如,DNN加速器)的计算机系统。计算机系统包括CPU 1802、GPU1804、存储器1806和其他装置1814,诸如显示器1816、扬声器1818和相机1820。如图18所示,可配置为实现DNN 1810的硬件逻辑(例如,图16的DNN加速器1600)可在GPU 1804上实现。计算机系统的部件可经由通信总线1822彼此进行通信。在其他示例中,可配置为实现DNN 1810的硬件逻辑可以独立于CPU或GPU来实现,并且可具有与通信总线1822的单独连接。在一些示例中,可不存在GPU,并且CPU可将控制信息提供给可配置为实现DNN 1810的硬件逻辑。
图16的DNN加速器1600被示出为包括多个功能块。这仅是示意性的,并不希望限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,本文中描述为由DNN加速器或处理模块形成的中间值不需要在任何时候由DNN加速器或处理模块物理生成,并且仅表示逻辑值,这些逻辑值方便地描述DNN加速器或处理模块在其输入和输出之间执行的处理。
可配置为实现本文所述的DNN的硬件逻辑(例如,图16的DNN加速器1600)可在集成电路上的硬件中体现。一般来讲,上文所描述的功能、方法、技术或部件中的任一个可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件具体实施的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行所述算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并可以由机器存取的其他存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、芯片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。即,可提供一种计算机可读存储介质,在该计算机可读存储介质上以集成电路定义数据集的形式编码了计算机可读程序代码,当该计算机可读程序代码在集成电路制造系统中被处理(即,运行)时,将系统配置为制造可配置为实现本文所述的DNN(例如,DNN加速器)。集成电路定义数据集可以是例如集成电路描述。
因此,可提供一种在集成电路制造系统处制造可配置为实现如本文所述的DNN(例如,图16的DNN加速器1600)的硬件逻辑的方法。此外,可提供集成电路定义数据集,当该集成电路定义数据集在集成电路制造系统中被处理时,致使制造可配置为实现DNN(例如,图16的DNN加速器1600)的硬件逻辑方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图19描述在集成电路制造系统处处理集成电路定义数据集以便配置系统以制造可配置为实现DNN(例如,DNN加速器)的硬件逻辑的示例。
图19示出了集成电路(IC)制造系统1902的示例,该集成电路制造系统被配置为制造可配置为实现如本文的任何示例中所描述的DNN(例如,DNN加速器)的硬件逻辑。特别地,IC制造系统1902包括布局处理系统1904和集成电路生成系统1906。IC制造系统1902被配置为接收IC定义数据集(例如,定义可配置为实现本文的任何示例中所描述的DNN(例如,DNN加速器)的硬件逻辑),处理IC定义数据集,并且根据IC定义数据集生成(例如,体现可配置为实现本文的任何示例中所描述的DNN(例如,DNN加速器)的硬件逻辑的)IC。IC定义数据集的处理将IC制造系统1902配置为制造体现可配置为实现如本文的任何示例中所描述的DNN(例如,DNN加速器)的硬件逻辑的集成电路。
布局处理系统1904被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1904确定了电路布局时,它可以将电路布局定义输出到IC生成系统1906。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统1906根据电路布局定义来生成IC。例如,IC生成系统1906可以实现生成IC的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代性地,提供给IC生成系统1906的电路布局定义可以是计算机可读代码的形式,IC生成系统1906可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统1902执行的不同过程可以全部在一个位置例如由一方来实现。替代性地,IC制造系统1902可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同的方来执行。例如,以下阶段中的一些可以在不同位置中和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可将系统配置为制造可配置为实现DNN(例如,DNN加速器)的硬件逻辑,而无需处理IC定义数据集来确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器(例如FPGA)的配置,并且对所述数据集进行的处理可以将IC制造系统配置成生成具有所述所定义配置的可重新配置的处理器(例如通过将配置数据加载到FPGA)。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以致使集成电路制造系统产生如本文描述的装置。例如,通过集成电路制造定义数据集,以上面参考图19描述的方式对集成电路制造系统的配置,可以制造出如本文所述的装置。
在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图19所示的示例中,IC生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的具体实施相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的具体实施可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理具体实施之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知具体实施的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理具体实施的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个例项来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
Claims (20)
1.一种用于将深度神经网络“DNN”的滤波器的多个权重从第一数字格式转换为第二数字格式以使所述DNN能够在硬件逻辑中被实现的计算机实现的方法(400、700),所述第二数字格式的精度低于所述第一数字格式的精度,所述方法(400)包括:
针对所述多个权重中的每一个权重,确定与根据第一量化方法将所述权重量化为所述第二数字格式相关联的量化误差(402、702);
基于所述多个权重的所述量化误差来确定所述多个权重的总量化误差(404、704);
基于所述多个权重的所述总量化误差来标识待根据第二量化方法量化为所述第二数字格式的所述多个权重的子集(406、706),所述第二量化方法被配置为相对于所述第一量化方法改变权重的舍入方向;以及
生成表示所述第二数字格式的所述多个权重的一组量化权重,所述多个权重的所述子集中每一个权重的所述量化权重基于根据所述第二量化方法将所述权重量化为所述第二数字格式,并且所述多个权重中不在子集中的每一个权重的所述量化权重基于根据所述第一量化方法将所述权重量化为所述第二数字格式(408、708)。
2.如权利要求1所述的方法(400),其中所述多个权重的所述总量化误差是所述多个权重的所述量化误差的总和。
3.如权利要求1所述的方法(400),其中所述多个权重的所述子集包括N个权重,其中N等于所述总量化误差除以所述第二数字格式的步长。
4.如权利要求1所述的方法(400),其中确定与根据所述第一量化方法将权重量化为所述第二数字格式相关联的所述量化误差包括根据所述第一量化方法将所述权重量化为所述第二数字格式,以生成量化权重并且根据所述量化权重确定所述量化误差。
5.如权利要求4所述的方法(400),其中根据所述第一量化方法将权重量化为所述第二数字格式包括根据就近舍入的舍入模式来将所述权重量化为所述第二数字格式。
6.如权利要求4所述的方法(400),其中生成表示所述第二数字格式的所述多个权重的所述组量化权重包括在预先确定的方向上用所述第二数字格式的下一个可表示数替换对应于所述子集中的权重的每个量化权重。
7.如权利要求6所述的方法(400),其中在所述预先确定的方向上用所述第二数字格式的所述下一个可表示数替换量化权重包括向所述对应的权重添加或从中减去预先确定的值,以根据所述第一量化方法生成修改后的权重并且将所述修改后的权重量化为所述第二数字格式。
8.如权利要求1所述的方法(400),其中在不根据所述第一量化方法将权重量化为所述第二数字格式的情况下,确定与根据所述第一量化方法将所述权重量化为所述第二数字格式相关联的所述量化误差。
9.如权利要求1所述的方法(400),其中生成表示所述第二数字格式的所述多个权重的所述组量化权重包括:
根据所述第二量化方法将所述多个权重的所述子集中的每一个权重量化为所述第二数字格式;并且
根据所述第一量化方法将所述多个权重中的每一个其余的权重量化为所述第二数字格式。
10.如权利要求9所述的方法(400),其中根据所述第一量化方法将权重量化为所述第二数字格式包括根据就近舍入的舍入模式来将所述权重量化为所述第二数字格式。
11.如权利要求9所述的方法(400),其中:
根据所述第一量化方法将权重量化为所述第二数字格式包括将所述权重量化为所述第二数字格式的第一可表示数;以及
根据所述第二量化方法将所述权重量化为所述第二数字格式包括将所述权重量化为所述第二数字格式的第二可表示数,其中所述第二可表示数是在预先确定的方向上所述第一可表示数的下一个可表示数。
12.如权利要求6至7和权利要求11中任一项所述的方法(400),其中当所述总量化误差为正时,所述预先确定的方向为第一方向,并且当所述总量化误差为负时,所述预先确定的方向为与所述第一方向相反的第二方向。
13.如权利要求9或权利要求10所述的方法(400),其中根据所述第二量化方法将权重量化为所述第二数字格式包括向所述权重添加或从中减去预先确定的值以生成修改后的权重,并且根据所述第一量化方法将所述修改后的权重量化为所述第二数字格式。
14.如权利要求1至11中任一项所述的方法(400),其中所述多个权重的所述子集包括具有量化误差的所述权重,所述量化误差具有特定的符号并且具有最接近所述第二数字格式的步长的一半的大小。
15.如权利要求1至11中任一项所述的方法(700),还包括:
针对所述第一数字格式的所述多个权重的所述子集中的每一个权重,确定与根据所述第二量化方法将所述权重量化为所述第二数字格式相关联的第二量化误差(707);
基于所述子集中的所述权重的所述第二量化误差和不在所述子集中的所述权重的所述量化误差,确定所述多个权重的第二总量化误差(704);
确定所述第二总量化误差是否超出误差阈值(705);并且
响应于确定所述第二总量化误差超出所述误差阈值,基于所述第二总量化误差来标识待根据第三量化方法量化为所述第二数字格式的所述多个权重的第二子集(706),所述第三量化方法是所述第二量化方法和另一种不同的量化方法中的一者;
其中针对所述第二子集中的每一个权重的所述量化权重基于根据所述第三量化方法将所述权重量化为所述第二数字格式(708)。
16.如权利要求1至11中任一项所述的方法(400),其中所述第二数字格式是由指数和尾数位长度定义的定点数格式。
17.如权利要求1至11中任一项所述的方法(400),其中所述第一数字格式是浮点数格式。
18.如权利要求1至11中任一项所述的方法(400),还包括配置硬件逻辑以使用所述组量化权重来实现所述DNN。
19.一种用于将深度神经网络“DNN”的滤波器从第一数字格式转换为第二数字格式以使所述DNN能够在硬件逻辑中被实现的方法,所述滤波器包括至少两个权重,所述第二数字格式的精度低于所述第一数字格式的精度,所述方法包括:
将所述滤波器的所述至少两个权重细分为权重的多个不重叠子集,权重的每个不重叠子集包括所述滤波器的多个权重;以及
针对包括权重的每个子集的所述多个权重执行根据权利要求1至11中任一项所述的方法。
20.一种计算机可读存储介质,其上编码有计算机可读代码,所述计算机可读代码被配置为使得在运行所述代码时执行如权利要求1至11中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1912083.1 | 2019-08-22 | ||
GB1912083.1A GB2581546B (en) | 2019-08-22 | 2019-08-22 | Methods and systems for converting weights of a deep neural network from a first number format to a second number format |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112418391A CN112418391A (zh) | 2021-02-26 |
CN112418391B true CN112418391B (zh) | 2022-07-08 |
Family
ID=68108873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010849845.3A Active CN112418391B (zh) | 2019-08-22 | 2020-08-21 | 用于对深度神经网络的权重进行转换的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11188817B2 (zh) |
EP (1) | EP3792838A3 (zh) |
CN (1) | CN112418391B (zh) |
GB (1) | GB2581546B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11521074B2 (en) * | 2019-05-31 | 2022-12-06 | Carnegie Mellon University | Flexible, lightweight quantized deep neural networks |
US11763158B2 (en) * | 2019-12-04 | 2023-09-19 | Deep Vision Inc. | Method for automatic hybrid quantization of deep artificial neural networks |
CN112766276A (zh) * | 2021-02-07 | 2021-05-07 | 普联技术有限公司 | 卷积神经网络模型的通道调整方法、装置和设备 |
CN113238988B (zh) * | 2021-06-08 | 2023-05-30 | 中科寒武纪科技股份有限公司 | 优化深度神经网络的参数的处理系统、集成电路及板卡 |
CN113238989A (zh) * | 2021-06-08 | 2021-08-10 | 中科寒武纪科技股份有限公司 | 将数据进行量化的设备、方法及计算机可读存储介质 |
US11734075B2 (en) * | 2021-11-24 | 2023-08-22 | International Business Machines Corporation | Reducing data format conversion of an accelerator |
CN114841325A (zh) * | 2022-05-20 | 2022-08-02 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质及电子设备 |
WO2024065848A1 (en) * | 2022-09-30 | 2024-04-04 | Intel Corporation | Improving accuracy of machine learning operations by compensating for lower precision with scale shifting |
EP4361793A1 (en) * | 2022-10-26 | 2024-05-01 | Huawei Technologies Co., Ltd. | Energetically efficient representation of signed integer non uniform weights |
CN116108896B (zh) * | 2023-04-11 | 2023-07-07 | 上海登临科技有限公司 | 模型量化方法、装置、介质及电子设备 |
CN117217274B (zh) * | 2023-11-08 | 2024-06-04 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754063A (zh) * | 2017-11-07 | 2019-05-14 | 三星电子株式会社 | 用于学习低精度神经网络的方法及装置 |
CN110009099A (zh) * | 2017-11-03 | 2019-07-12 | 畅想科技有限公司 | 用于深度神经网络的硬件实现的误差分配格式选择 |
CN110059810A (zh) * | 2017-11-03 | 2019-07-26 | 畅想科技有限公司 | 深度神经网络硬件实现的基于直方图的每层数据格式选择 |
CN110276451A (zh) * | 2019-06-28 | 2019-09-24 | 南京大学 | 一种基于权重归一化的深度神经网络压缩方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201607713D0 (en) * | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
US20190050710A1 (en) * | 2017-08-14 | 2019-02-14 | Midea Group Co., Ltd. | Adaptive bit-width reduction for neural networks |
US11295208B2 (en) * | 2017-12-04 | 2022-04-05 | International Business Machines Corporation | Robust gradient weight compression schemes for deep learning applications |
US11847568B2 (en) * | 2019-07-30 | 2023-12-19 | Perceive Corporation | Quantizing neural networks using shifting and scaling |
-
2019
- 2019-08-22 GB GB1912083.1A patent/GB2581546B/en active Active
-
2020
- 2020-08-21 EP EP20192129.3A patent/EP3792838A3/en active Pending
- 2020-08-21 CN CN202010849845.3A patent/CN112418391B/zh active Active
- 2020-08-24 US US17/000,468 patent/US11188817B2/en active Active
-
2021
- 2021-11-11 US US17/524,606 patent/US20220067497A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110009099A (zh) * | 2017-11-03 | 2019-07-12 | 畅想科技有限公司 | 用于深度神经网络的硬件实现的误差分配格式选择 |
CN110059810A (zh) * | 2017-11-03 | 2019-07-26 | 畅想科技有限公司 | 深度神经网络硬件实现的基于直方图的每层数据格式选择 |
CN109754063A (zh) * | 2017-11-07 | 2019-05-14 | 三星电子株式会社 | 用于学习低精度神经网络的方法及装置 |
CN110276451A (zh) * | 2019-06-28 | 2019-09-24 | 南京大学 | 一种基于权重归一化的深度神经网络压缩方法 |
Non-Patent Citations (3)
Title |
---|
A Survey on Methods and Theories of Quantized Neural Networks;Yunhui Guo;《arXiv》;20181216;全文 * |
Deep Learning with Limited Numerical Precision;SUYOG GUPTA等;《arXiv》;20150209;全文 * |
Performance Trade-offs in Weight Quantization for Memory-Efficient Inference;TOSTADO PABLO M等;《IEEE》;20190318;全文 * |
Also Published As
Publication number | Publication date |
---|---|
GB2581546A (en) | 2020-08-26 |
EP3792838A3 (en) | 2021-04-21 |
GB2581546B (en) | 2021-03-31 |
US20220067497A1 (en) | 2022-03-03 |
GB201912083D0 (en) | 2019-10-09 |
US20210073614A1 (en) | 2021-03-11 |
EP3792838A2 (en) | 2021-03-17 |
CN112418391A (zh) | 2021-02-26 |
US11188817B2 (en) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112418391B (zh) | 用于对深度神经网络的权重进行转换的方法和系统 | |
US11593626B2 (en) | Histogram-based per-layer data format selection for hardware implementation of deep neural network | |
CN110009099B (zh) | 用于确定表示dnn的层的值的定点数格式的方法和系统 | |
US11922321B2 (en) | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation | |
CN110033079B (zh) | 深度神经网络的硬件实现的端到端数据格式选择 | |
EP3480689B1 (en) | Hierarchical mantissa bit length selection for hardware implementation of deep neural network | |
CN113887710A (zh) | 循环神经网络中的数字格式选择 | |
CN115545175A (zh) | 在硬件中运行双向递归神经网络 | |
CN113887714A (zh) | 用于在硬件中运行动态循环神经网络的方法和系统 | |
EP3985571A1 (en) | Methods and systems for selecting number formats for deep neural networks based on network sensitivity and quantisation error | |
US12020145B2 (en) | End-to-end data format selection for hardware implementation of deep neural networks | |
US20240143985A1 (en) | Identifying one or more quantisation parameters for quantising values to be processed by a neural network | |
CN117332830A (zh) | 标识用于量化待由神经网络处理的值的一个或多个量化参数 | |
CN117332829A (zh) | 使用在硬件中实现的神经网络"nn"处理数据 | |
GB2603647A (en) | End-to-end data format selection for hardware implementation of deep neural network | |
GB2603582A (en) | End-to-end data format selection for hardware implementation of deep neural network | |
CN115545146A (zh) | 双向rnn的数字格式选择 |
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 |