CN110119809A - 深度学习处理中乘法和累加运算的非对称量化 - Google Patents

深度学习处理中乘法和累加运算的非对称量化 Download PDF

Info

Publication number
CN110119809A
CN110119809A CN201910097897.7A CN201910097897A CN110119809A CN 110119809 A CN110119809 A CN 110119809A CN 201910097897 A CN201910097897 A CN 201910097897A CN 110119809 A CN110119809 A CN 110119809A
Authority
CN
China
Prior art keywords
multiplication
asymmetric
cumulative
neural network
accumulating operation
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
Application number
CN201910097897.7A
Other languages
English (en)
Other versions
CN110119809B (zh
Inventor
林建宏
丛培贵
陈启明
郑孟璿
洪圣哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Publication of CN110119809A publication Critical patent/CN110119809A/zh
Application granted granted Critical
Publication of CN110119809B publication Critical patent/CN110119809B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4912Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4915Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)

Abstract

对神经网络中非对称量化数据执行乘法和累加(MAC)运算的装置。所述装置包括MAC硬件单元,用于对第一数据序列以及第二数据序列执行所述MAC运算来生成非对称MAC输出。所述第一数据序列以及第二数据序列两者是非对称量化的。所述装置进一步包括累加器硬件单元来与所述MAC运算同时累加所述第一数据序列来生成累加输出。所述装置进一步包括乘法和加法硬件单元来将所述累加输出与第二偏移相乘来生成乘积输出,以及将所述乘积输出、所述非对称MAC输出以及在运行前计算的预先计算值相加来生成最终输出。所述第二偏移指示所述第二数据序列相对于0的不对称量。

Description

深度学习处理中乘法和累加运算的非对称量化
技术领域
本发明的实施例涉及神经网络计算(neural network computing),更具体地,涉及执行乘法和累加运算的硬件电路。
背景技术
由于其在计算机视觉(computer vision)、语言识别(speech recognition)、自然语言处理(natural language processing)、生物信息学(bioinformatics)等领域的优越性能,深度学习(deep learning)已经获得了广泛认可。深度学习是使用包括多个隐藏层的人工神经网络(artificial neural network)的机器学习的分支。由神经网络执行的一个核心计算是卷积(convolution),其由一系列的乘法和累加(multiply-and-accumulate,MAC)运算组成。
神经网络不仅是计算密集而且存储器访问量大。对于特征提取,可以在一组输入通道(例如,红、绿以及蓝)将输入图像与一组滤波器卷积,接着进行非线性计算(nonlinearcomputation)、下采样计算(down-sampling computation)以及类分数计算(class scorescomputation)。这些计算通常引发对处理器外部系统存储器的大量数据访问。一些传统的系统减少了用于表示数据值的位的数目以便以精确性为代价节省存储器频宽。为了在节省存储器频宽的同时提高精确度,一些其他的传统系统使用非对称量化用于减少大小的数据值,因为非对称的数据表示相比于对称数据表示,相同数目的位提供更高的精确度。这些非对称量化值在它们用于MAC运算的输入之前,被转换成对称量化的数据值。这样的转换可以显著地增加系统开销。因此,需要改进神经网络计算。
发明内容
本发明提供了一种对神经网络中非对称量化数据执行乘法和累加运算的装置和方法。
在一个实施例中,提供了一种对神经网络中非对称量化数据执行乘法和累加(MAC)运算的装置。所述装置包括MAC硬件单元来对第一数据序列以及第二数据序列执行所述MAC运算来生成非对称MAC输出。所述第一数据序列以及所述第二数据序列两者是非对称量化的。所述装置进一步包括累加器硬件单元来在所述乘法和累加硬件单元执行所述MAC运算的同时,累加所述第一数据序列来生成累加输出。所述装置进一步包括乘法和加法(multiply-and-add,MAD)硬件单元来将所述累加输出与第二偏移相乘来生成乘积输出,以及将所述乘积输出、所述非对称MAC输出以及在运行前计算的预先计算值相加来生成最终输出。所述第二偏移指示所述第二数据序列相对于0的不对称量。
在另一个实施例中,提供了一种对神经网络中非对称量化数据执行MAC运算的方法。所述方法包括:对第一数据序列以及第二数据序列执行MAC运算来生成非对称MAC输出,其中所述第一数据序列以及所述第二数据序列两者是非对称量化的;在所述MAC运算的同时,累加所述第一数据序列来生成累加输出;将所述累加输出与第二偏移相乘来生成乘积输出,其中所述第二偏移指示所述第二数据序列相对于0的不对称量;以及将所述乘积输出、所述非对称MAC输出以及在运行前计算的预先计算值相加来生成最终输出。
本发明之一实施例通过在MAC运算的基础上增加额外的累加运算,其在每一数据周期与MAC运算一起进行,当完成MAC运算与累加运算,基于两者的输出结果生成最终输出。所提出之装置与方法在处理非对称量化数据的同时又不会增加性能与存储器频宽的开销。
实施例的优点将在下面的描述中详细解释。
附图说明
本发明以示例而非限制的方式示出,在附图的图式中,相同的附图标记表示类似的元件。需要注意的是,本发明中对“一个”实施例的不同引用不一定指相同的实施例,这种引用意味着至少一个。此外,当结合实施例描述特定特征、结构或特性时,认为无论是否明确描述,结合其他实施例实现这种特征、结构或特性都在本领域技术人员的知识范围内。
图1示出了根据一个实施例的神经网络计算的系统。
图2示出了卷积运算的示例。
图3示出了根据第一实施例的MAC电路。
图4示出了根据第二实施例的MAC电路。
图5示出了根据第三实施例的MAC电路。
图6示出了根据一个实施例的用于对非对称量化数据执行MAC运算的方法的流程图。
具体实施方式
在后续描述中,给出了许多具体细节。然而,应该理解,可以在没有这些具体细节的情况下来实施本发明的实施例。在其他示例中,没有具体示出公知的电路、结构以及技术以避免混淆对这些描述的理解。然而,本领域技术人员将认识到,可以没有这些具体细节来实施本发明。本领域技术人员根据所包括的描述,将能够实施适当的功能而不需要过度实验。
本发明的实施例提供了用于对非对称量化数据执行精确且有效的乘法和累加(MAC)运算的系统、装置以及方法。MAC运算可以由神经网络处理器执行,神经网络处理器也被称为深度学习加速器(deep learning accelerator,DAL)或加速器。卷积是神经网络计算中的一个核心计算,其由对输入激活(input activation)以及滤波器权重(filterweight)的一系列MAC运算组成。为了减少数据大小以及在主存储器与加速器之间传输数据所需要的频宽,可以量化输入激活以及滤波器权重的每一值来减少用于表示该值的位的数目。例如,一个32位浮点数(floating point number)可以由一个8位整数来表示,以致数据大小以及存储器频宽减少到原始值的25%。在一些传统的系统中,量化可以关于0对称,例如,每个值由-127与127之间的整数表示。然而,将要由神经网络处理的输入激活的范围通常相对于0不对称(即,这一范围的最小值以及最大值相对于0不对称)。同样,滤波器权重的范围通常也相对于0不对称。因此,经受MAC运算的数据可以是非对称量化数据。
通常,当数值由相同数目的位表示时,非对称量化值相比于对称量化值具有更小的量化误差。这是因为非对称量化使实际值范围能够使用所有位。例如,可能需要(n+1)个位来表示对称量化值,以致其可以具有与由n个位表示的非对称量化值的相同的精度。
神经网络处理由一系列层(layer)组成。在每一层,由加速器中的神经网络引擎(也称为“引擎”)将输入特征图处理成输出特征图。每个输入特征图以及输出特征图都是一个多维阵列,也称为张量(tensor)。例如,每个输入特征图以及输出特征图可以具有三个维度,包括宽度、高度以及深度。出于解释的目的,在后续描述中,假定宽度、高度以及深度维度分别在X、Y以及Z维度上对齐。
图1示出了根据一个实施例的神经网络计算的系统100。系统100包括一个或多个处理器130(例如,中心处理器单元(CPU)、图像处理单元(GPU)、数字信号处理器(DSP)、媒体处理器或其他通用和/或专用处理电路)。处理器130耦合到协同处理器(co-processor)或处理单元,也称为加速器110,其执行对非对称量化数据的神经网络运算,包括但不限于MAC运算。加速器110还耦合到加速器110外部的系统存储器140。系统存储器140可以包括一个或多个动态随机存取存储器(DRAM)装置或其他易失性或非易失性存储装置。
加速器110包括一个或多个引擎(例如,引擎111-114)。引擎111-114中的每一个包括用于执行数学计算的硬件电路(例如,乘法器、加法器、累加器等等)。引擎111-114之一(如卷积引擎)可以包括MAC电路101,用于执行MAC运算作为卷积运算的一部分。此外,引擎111-114可以包括但不限于:用于执行ReLU运算的校正引擎、批量归一化(batchnormalization,BN)引擎、用于执行下采样操作的池引擎(pooling engine)等等。
在一个实施例中,加速器110包括缓冲存储器150,其除了其他方面还存储用于卷积的输入数据以及滤波器权重。在一个实施例中,缓冲存储器150可以包括静态随机存取存储器(SRAM)装置或其他易失性或非易失性存储器。
加速器110还可以包括控制器120,其将来自处理器130的命令派送到引擎111-114。根据这些命令,引擎111-114从缓冲存储器150中检索输入数据并执行神经网络计算。加速器110通过I/O接口160从系统存储器140加载数据并存储数据到系统存储器140。从系统存储器140加载的数据可以存储于缓冲存储器150中用于快速数据存取。
在可选实施例中,控制器120可以是程序顺序发生器(program sequencer),其从系统存储器140中提取程序来指导引擎111-114的运算。该可选实施例中的加速器110可以称为神经处理单元(neural processing unit,NPU)。
在描述本发明的实施例之前,解释卷积运算中使用的一些术语是有益的。图2示出了卷积运算的示例。可以使用一组滤波器220(K个)对输入特征图210执行卷积运算。输入特征图210具有宽度=Wi,高度=Hi以及深度=C。每一滤波器220具有宽度=S,高度=R以及深度C。通常,每一滤波器220相比于输入特征图210在高度以及宽度上更小。例如,一个滤波器可以由XY平面的5×5个权重组成,即,沿着X维度的5个权重以及沿着Y维度的5个权重。输入特征图210(例如,输入图像)在每一X以及Y维度上可以具有数百个或数千个或更多个像素。除了X以及Y维度之外,输入特征图210有长度为C(即,C个深度切片(slice))的深度(Z)维度。每个滤波器220在Z维度还具有C个深度切片。在卷积过程中,滤波器(例如,滤波器221)在XY平面中滑过输入特征图210,以及计算在滤波器权重与输入特征图210的对应值之间的点积(dot-product)。更具体地,点积可以由在滤波器221的权重与输入特征图210的一部分之间进行MAC运算来计算,输入特征图210这一部分与滤波器221对齐并且具有与滤波器相同的大小。输入特征图210的这一部分称为输入激活280。重复相同的计算进程用于输入特征图210中的每一输入激活。
输出特征图230是在输入图像的每一空间位置的滤波响应的表示。输出特征图230具有宽度=Wo、高度=Ho以及深度=K。具有K个滤波器220的卷积产生在Z维度具有深度K(也就是,K个深度切片)的输出特征图230。K个深度切片的每一个对应于在输入特征图210与K个滤波器220之一之间的卷积的输出。输出特征图230中的每一数据点(也称为输出数据值)是输入激活280与K个滤波器220之一之间卷积的结果。例如,输入激活280与滤波器221的卷积产生输出特征图230中的数据点231(由黑色正方形表示)。数据点231可以由一系列MAC运算来计算。在一个实施例中,输入特征图210以及滤波器权重可以存储于系统存储器140作为非对称量化数据来减小数据大小以及所需要的存储器频宽。
参考回图1,加速器110可以包括用于对两个序列的非对称量化数据执行MAC运算(此处称为“非对称MAC运算”)的电路(例如,MAC电路101),而无需首先将非对称量化数据转换成对称量化数据。需要注意的是,“非对称MAC运算”中的术语“非对称”指量化数据的不对称,而不是运算本身。因为两个数据序列可能具有相对于0的不同偏移,直接对两个数据序列执行MAC运算可能生成不准确的结果。在一个实施例中,通过向非对称MAC运算的结果添加校正值来补偿非对称。补偿结果(也称为“最终输出”)与对对应两个序列的对称量化数据执行MAC运算(此处称为“对称MAC运算”)的结果是相同的或在可允许的误差范围内近似的。可以与非对称MAC运算一起计算(即并行计算)一个校正值,以及可以基于滤波器的先验知识(priori knowledge)以及输入激活的范围优先于非对称MAC运算预计算其他校正值。在下文中,Qa[i]以及Qw[i][j]分别表示非对称量化输入激活数据点以及非对称量化滤波器权重,以及A[i]以及W[i][j]分别表示对称量化输入激活数据点以及对称量化滤波器权重。
在一个实施例中,MAC电路101包括执行非对称MAC运算以及校正值计算的硬件元件。对称量化数据(A[i]以及W[i][j])以及相对的非对称量化数据(Qa[i]以及Qw[i][j])之间的关系可以由下文的等式描述:
A[i]=Qa[i]+OFa; (1)
W[i][j]=Qw[i][j]+OFw[j]; (2)
参考图2中的卷积示例,等式(3)中的值N等于R×S×C,即,输入激活与滤波器之间一个卷积运算的大小。OFa称为第一偏移,其指示包含输入激活的输入特征图210相对于0的不对称的量。OFw[j],j=1,...,K,称为第二偏移,其指示第j个滤波器权重相对于0的不对称的量。因此,通常在神经网络的训练阶段确定输入特征图的范围以及第一偏移(其是0与范围中心之间的差异)。类似地,通常在神经网络运行前确定滤波器权重的范围以及第二偏移。在一个实施例中,第二偏移指示由神经网络使用的一个或多个滤波器的权重相对于0的不对称的量。第二偏移可以具有由卷积运算中神经网络使用的不同滤波器的不同值。或者,第二偏移可以是由卷积运算中神经网络使用的所有滤波器的定值(constant value)。
为了便于讨论,在后续关于等式(3)的描述中,称为非对称MAC输出,称为累加输出,以及称为预先计算值。称为最终输出,其可以是输出特征图中的一个数据点。从滤波器权重Qw[i][j]以及偏移OFa以及OFw[j]的累加来计算预先计算值,滤波器权重Qw[i][j]以及偏移OFa以及OFw[j]在神经网络的训练阶段可以是已知的。在一个实施例中,可以在神经网络的推理阶段动态地计算第一偏移OFa;即,不同的输入可以具有不同的偏移。在一个实施例中,第二偏移OFw可以是滤波器相关的,即,不同的滤波器可以具有不同的偏移。可选地,所有滤波器可以具有相对于0不对称的一个范围中的滤波器权重。这一范围的偏移(相对于0)可以由所有滤波器共享。在一个实施例中,预先计算值可以包括偏置值(bias value)Bias,其被添加到最终输出来移除(即,抵消)最终输出序列的平均值,其中该最终输出序列可以形成输出特征图的一个或多个深度切片。这是因为神经网络通常在卷积后包括一个归一化操作。该归一化操作使得该最终输出序列具有0平均值以及等于1的标准偏差(standarddeviation)。在卷积期间,通过偏置值从每一最终输出移除平均值,将简化后续归一化操作。对于由神经网络使用的不同滤波器,该偏置值可以是不同的,即,Bias可以是滤波器相关的并因此将第j个滤波器的偏置值标记为Bias[j]。可选地,对于由神经网络使用的所有滤波器,偏置值可以是相同的。
图3示出了根据一个实施例的电路300,其是MAC电路101(图1)的示例。电路300包括MAC硬件单元310、累加器硬件单元(也称为ACC硬件单元)320以及乘法与加法硬件单元(也称为MAD硬件单元)330。在这一示例中,MAC硬件单元310包括MAC 315,其是进一步包括乘法器311、加法器312以及累加寄存器(accumulating register,ACR)313的硬件元件。加法器312以及ACR 313形成累加乘法器311的输出的累加器。ACC硬件单元320包括累加器(也称为ACC)325,其是进一步包括加法器321以及ACR 322的硬件元件。MAD硬件单元包括乘法器331以及加法器332,共同称为MAD 335。在可选实施例中,MAC硬件单元可以包括多个乘法器以及多个累加器,ACC硬件单元320可以包括多个累加器,以及MAD硬件单元330可以包括多个乘法器以及多个加法器。
在一个实施例中,MAC硬件单元310生成非对称MAC输出。ACC硬件单元320生成累加输出。MAD硬件单元330将累加输出与OFw相乘生成乘积输出,以及将乘积输出添加到非对称MAC输出以及预先计算值来生成最终输出。
在图3的示例中,两个数据序列可以输入到MAC硬件单元310来生成输出特征图中的数据点:第一序列Qa[i]包括输入激活以及第二序列Qw[i][j]包括第j个滤波器的权重,其中i是从1到输入激活大小(例如,R×S×C)的运行索引(running index)。每个数据周期可以将数据对(Qa[i],Qw[i][j])输入到MAC硬件单元310。MAC硬件单元310在每一数据周期对数据对进行操作以及在N个数据周期结束时生成非对称MAC输出,其中N等于(R×S×C)。ACC硬件单元320在每一数据周期接收并累加输入激活Qa[i]的一个元素。MAD硬件单元330在每当生成累加输出以及非对称MAC输出时对MAC硬件单元310的输出以及ACC硬件单元320的输出操作一次(例如,每N个数据周期一次),即执行一次乘法以及加法,在一个实施例中,每当生成累加输出以及非对称MAC输出时,MAD硬件单元将累加输出与第二偏移相乘生成乘积输出,以及将乘积输出、非对称MAC输出以及在运行前计算的预先计算值相加来生成一个输出,MAD硬件单元330的输出是最终输出。
由ACC硬件单元320以及MAD硬件单元330进行的计算将校正值添加到非对称MAC输出。校正值将非对称MAC输出转换成为对称MAC输出。因为乘法器331(在MAD硬件单元330中)每个N数据周期仅执行一次乘法,并且加法器321以及332(在ACC硬件单元320以及MAD硬件单元330中)对开销有极小的影响,从而最小化了该转换的开销。直接对非对称量化数据元素执行MAC运算,而不需要首先将非对称量化数据元素的每一者转换成对称量化数据元素,显著地减少了计算开销。
图4示出了根据另一个实施例的电路400,其是MAC电路101(图1)的示例。电路400包括MAC硬件单元410,其进一步包括多个MAC 315(图3)。在一个实施例中,MAC硬件单元410可以包括P个MAC 315的阵列,其中P是大于1的整数。P个MAC 315可以在P个不同的输入激活以及相同滤波器的权重上并行工作。参考图2的示例,在该实施例中P等于Wo×Ho,MAC硬件单元410可以生成P个非对称MAC输出,其对应于每N个数据周期(例如,N=R×S×C)输出特征图230中所有XY平面的数据点。输出特征230中的所有XY平面的数据点用单个滤波器生成。在可选实施例中,P可以等于最适合于预期计算的不同值。
电路400进一步包括ACC硬件单元420,其进一步包括P个累加器325的阵列。ACC硬件单元420每个数据周期工作并且在每N个数据周期的结束生成P个累加的输出。电路400进一步包括MAD硬件单元430,其进一步包括M个MAD 335,其中M是非负整数。在一个实施例中,M不大于P。MAD硬件单元430每N个数据周期接收P个非对称MAC输出以及P个累加输出。基于电路400的吞吐量需求,可以确定M的值。对于M=1,MAD硬件单元430顺序地生成P个最终输出,每次一个。对于M=P,MAD硬件单元430并行生成P个最终输出。
图5示出了根据另一个实施例的电路500,其是MAC电路101(图1)的示例。类似于图3中的电路300以及图4中的电路400,电路500包括MAC硬件单元510、ACC硬件单元520以及MAD硬件单元530。MAC硬件单元510进一步包括(P×K)个MAC 315的阵列。参考图2的示例,K是输出特征图230中Z维度深度切片的数目。(P×K)个MAC 315在P个不同的输入激活以及K个滤波器权重上并行工作。因此,在N个数据周期中(例如,N=R×S×C),MAC硬件单元510可以生成对应于整个输出特征图230的(P×K)个非对称MAC输出。ACC硬件单元520包括P个累加器325的阵列,每个累加大小为N的相应的输入激活。ACC硬件单元520在每一数据周期工作并且在每N个数据周期结束时生成P个累加的输出。MAC硬件单元530包括M个MAD 335,其中M是非负整数。MAD硬件单元530在每N个数据周期结束时接收(P×K)个非对称MAC输出以及P个累加输出。每一累加输出从相同的输入激活中计算,以及可以重新使用累加输出K次作为共享相同输入激活的一组K个非对称MAC输出的校正值。基于电路500的吞吐量需求,可以确定M的值。对于M=1,MAD硬件单元530顺序地生成(P×K)个最终输出,每次一个。对于M=P×K,MAD硬件单元530并行生成P×K个最终输出。
此处描述的MAC运算可以是被实施为两个数据序列之间点积的卷积运算的一部分。可选地,MAC运算可以是不同运算的一部分。例如,用于卷积的Winograd快速算法也可以使用上述MAC运算。Winograd快速算法包括四步:(1):滤波器权重的转换;(2):输入激活的转换;(3):在对应的深度切片中转换的输入激活与转换的滤波器权重之间逐元素乘法(element-wise multiplication),以及累加跨越Z维度中的所有深度切片的在相同(X,Y)坐标位置中的逐元素乘法结果;以及(4):(3)的结果的转换。Winograd快速算法中使用的转换矩阵在本领域是已知的,在此不再赘述。将这些转换矩阵应用于数据阵列在此称为“Winograd转换数据阵列”。逐元素乘法以及跨越Z维度的累加可以由上文描述的电路300、400或500所执行。
参考回图2的示例,输入激活280以及每一滤波器220的权重被非对称量化。Winograd快速算法首先将每一滤波器转换成与输入激活相同的大小。例如,输入激活可以具有宽度=4、高度=4以及深度=C。每一滤波器可以具有宽度=3、高度=3以及深度=C。K个滤波器220的权重首先从(3×3×C×K)Winograd转换到(4×4×C×K)阵列,标记为Qw′[i][j],其中i=1,...,C以及J=1,...,K。对于输入特征图中的每一(4×4×C)输入激活,后续的步骤(a)-(c)可以重复直到处理完整个特征图。在步骤(a),输入激活被Winograd转换成(4×4×C)阵列,标记为Qa′[i],其中i=1,...,C。在步骤(b),对于每一滤波器j=1,...,K,在Qa′[i]以及Qw′[i][j]间执行逐元素乘法。累加跨越所有深度切片的在相同(X,Y)坐标位置的逐元素乘法结果。逐元素乘法以及累加可以直接地在非对称量化数据上执行作为前述提到的非对称MAC运算,以及将校正值添加到非对称MAC运算的结果。更具体地,在步骤(b)的每一滤波器j=1,...,K的运算可以由下列等式描述:
A′[i]=Qa′[i]+OFa′; (4)
W′[i][j]=Qw′[i][j]+OFw′[j]; (5)
A′[i]以及W′[i][j]分别是非对称量化输入激活以及第j个滤波器的权重,OFa′以及OFw′[j]分别是非对称量化输入激活以及第j个滤波器的权重的偏移。因此,如结合等式(1)-(3)所提到的,对非对称量化数据(例如,A′[i]以及W′[i][j])执行的非对称MAC运算可以被转换成非对称MAC运算加若干校正值。注意的是,运行索引i是从1到C(深度),以及逐元素乘法的阵列大小是XY平面中输入激活的大小(例如,这一示例中为4×4)。在步骤(c),逆Winograd转换应用于 的结果来生成卷积结果。
图6示出了根据一个实施例的用于在神经网络中的非对称量化数据执行MAC运算的方法600的流程图。在一个实施例中,方法600可以由神经网络处理器执行,例如,图1的加速器100。
方法600开始于步骤610,MAC电路对第一数据序列以及第二数据序列执行MAC运算来生成非对称MAC输出,其中所述第一数据序列以及所述第二数据序列两者是非对称量化的。在步骤620中,在执行MAC运算的同时,累加器单元累加所述第一数据序列来生成累加输出。在步骤630,将累加输出乘以第二偏移来生成乘积输出。所述第二偏移指示第二数据序列相对于0的不对称量。在步骤640,将乘积输出、非对称MAC输出以及在运行前计算的预先计算值相加来生成最终输出。在一个实施例中,预先计算的值可以是从至少一个第一偏移、第二偏移以及第二数据序列的累加中计算。所述第一偏移指示第一数据相对于0的非对称的量。在一些实施例中,可以并行执行步骤610以及620。
已经参考图1以及图3-5的示例性实施描述了图6的流程图的操作。然而,应该理解,图6的流程图的操作可以由不同于参考图1以及图3-5所讨论的实施例来执行,以及参考图1以及图3-5所讨论的实施例可以执行不同于这些参考流程图所讨论的操作。然而图6的流程图示出了由本发明某些实施例执行的操作的具体次序,应当理解,这一次序是示例性的(例如,可选的实施例的可以以不同的次序、组合某些操作、重叠某些操作等来执行操作)。
本文已经描述了许多功能元件或模块。本领域技术人员将能够理解,这些功能模块可以更好地通过电路实施(专用电路或通用电路,其在一个或多个处理器以及编码指令下操作),其将通常包括晶体管,晶体管以根据本文中所描述的功能和操作来控制电路的操作方式来配置。
虽然以及根据几个实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,并且开业在所附权利要求的精神和范围内进行修改和描述。因此,这些描述仅被认为是说明性的而非限制性的。

Claims (20)

1.一种用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,包括:
乘法和累加硬件单元,用于对第一数据序列以及第二数据序列执行所述乘法和累加运算来生成非对称乘法和累加输出,其中所述第一数据序列与所述第二数据序列两者是非对称量化的;
累加器硬件单元,用于在所述乘法和累加硬件单元执行所述乘法和累加运算的同时,累加所述第一数据序列来生成累加输出;以及
乘法与加法硬件单元,用于将所述累加输出与第二偏移相乘来生成乘积输出,其中所述第二偏移指示所述第二数据序列相对于0的不对称量,以及将所述乘积输出、所述非对称乘法和累加输出以及在运行前计算的预先计算值相加来生成最终输出。
2.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,从第一偏移、所述第二偏移以及所述第二数据序列的累加中计算所述预先计算值,以及其中所述第一偏移指示包括所述第一数据序列的输入特征图相对于0的不对称量。
3.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述预先计算值进一步包括偏置值,所述偏置值对于由所述神经网络使用的不同滤波器具有不同值或对于由所述神经网络使用的所有滤波器具有相同值。
4.如权利要求1所述的用于在神经网络中对非对称量化数据执行乘法和累加运算的装置,其特征在于,所述第一数据序列是输入特征图的输入激活以及所述第二数据序列是由所述神经网络使用的一个或多个滤波器的权重。
5.如权利要求4所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述第二偏移指示由所述神经网络使用的一个或多个滤波器的权重相对于0的所述不对称量。
6.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法和累加硬件单元包括乘法和累加硬件元件来对输入特征图的输入激活以及滤波器的多个权重执行所述乘法和累加运算从而生成所述非对称乘法和累加输出,以及其中所述累加器硬件单元包括累加器,来在所述乘法和累加硬件单元执行所述乘法和累加运算的同时,累加所述输入激活从而生成所述累加输出。
7.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法和累加硬件单元包括多个乘法和累加硬件元件来对输入特征图的多个输入激活以及滤波器多个权重执行所述乘法和累加运算,以及其中所述累加器硬件单元包括多个累加器,来在所述乘法和累加硬件单元执行所述乘法和累加运算的同时,累加每一个所述输入激活。
8.如权利要求7所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法和累加硬件单元包括P个乘法和累加硬件元件来并行执行所述乘法和累加运算,以及所述累加器硬件单元包括与所述乘法和累加运算同时操作的P个累加器,其中P是大于1的整数。
9.如权利要求7所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法和累加硬件单元包括(P×K)个乘法和累加硬件元件来并行执行所述乘法和累加运算,以及所述累加器硬件单元包括与所述乘法和累加运算同时操作的P个累加器,以及其中P是大于1的整数,K是具有所述滤波器权重的滤波器的数量。
10.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法与加法硬件单元包括多个乘法与加法硬件元件来并行操作,其中所述乘法与加法硬件元件的数量取决于所述乘法和累加运算的吞吐量需求。
11.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述乘法和累加硬件单元包括一个或多个乘法和累加硬件元件,所述累加器硬件单元包括一个或多个累加器,以及所述乘法与加法硬件单元包括一个或多个乘法器以及一个或多个加法器,每个所述乘法和累加硬件元件以及每个所述累加器在每一数据周期操作,以及每当生成所述累加输出以及所述非对称乘法和累加输出时,所述乘法与加法硬件单元中的每个所述乘法器以及每个所述加法器操作一次。
12.如权利要求1所述的用于对神经网络中非对称量化数据执行乘法和累加运算的装置,其特征在于,所述第一数据序列是Winograd转换的输入激活以及所述第二数据序列是Winograd转换的滤波器权重,所述乘法和累加运算包括在对应的深度切片中的所述第一数据序列以及所述第二数据序列的逐元素乘法,以及跨过所有深度切片的、在相同(X,Y)坐标位置的所述逐元素乘法的结果的累加。
13.一种用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,包括:
对第一数据序列以及第二数据序列执行所述乘法和累加运算来生成非对称乘法和累加输出,其中所述第一数据序列以及所述第二数据序列两者是非对称量化的;
在所述乘法和累加运算的同时,累加所述第一数据序列来生成累加输出;
将所述累加输出与第二偏移相乘来生成乘积输出,其中所述第二偏移指示所述第二数据序列相对于0的不对称量;以及
将所述乘积输出、所述非对称乘法和累加输出以及在运行前计算的预先计算值相加来生成最终输出。
14.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,进一步包括:
从第一偏移、所述第二偏移以及所述第二数据序列的累加中计算所述预先计算值,其中所述第一偏移指示包括所述第一数据序列的输入特征图相对于0的不对称量。
15.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,所述预先计算值进一步包括偏置值,所述偏置值对于由所述神经网络使用的不同滤波器具有不同值或对于由所述神经网络使用的所有滤波器具有相同值。
16.如权利要求13所述的在神经网络中用于对非对称量化数据执行乘法和累加运算的方法,其特征在于,所述第二偏移指示由所述神经网络使用的一个或多个滤波器的权重相对于0的所述不对称量。
17.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,所述第一数据序列是输入特征图的多个输入激活以及所述第二数据序列是滤波器的多个权重。
18.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,进一步包括:
对输入特征图的多个输入激活以及滤波器权重并行执行所述乘法和累加运算;以及
在所述乘法和累加运算的同时,累加每个所述输入激活。
19.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,进一步包括:
在每一数据周期执行对所述第一数据序列以及所述第二数据序列的所述乘法和累加运算来生成所述非对称乘法和累加输出以及执行对所述第一数据序列的累加来生成所述累加输出;以及
每当生成所述累加输出以及所述非对称乘法和累加输出时,对所述累加输出执行一次乘法生成所述乘积输出以及对所述乘积输出、所述非对称乘法和累加输出以及所述预先计算值执行一次加法来生成所述最终输出。
20.如权利要求13所述的用于对神经网络中非对称量化数据执行乘法和累加运算的方法,其特征在于,所述第一数据序列是Winograd转换的输入激活以及所述第二数据序列是Winograd转换的滤波器权重,所述乘法和累加运算包括在对应的深度切片中的所述第一数据序列以及所述第二数据序列的逐元素乘法,以及所有深度切片中的、在相同(X,Y)坐标位置的所述逐元素乘法的结果的累加。
CN201910097897.7A 2018-02-05 2019-01-31 对神经网络中非对称量化数据执行mac运算的装置和方法 Active CN110119809B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862626191P 2018-02-05 2018-02-05
US62/626,191 2018-02-05
US16/250,874 2019-01-17
US16/250,874 US10977001B2 (en) 2018-02-05 2019-01-17 Asymmetric quantization of multiple-and-accumulate operations in deep learning processing

Publications (2)

Publication Number Publication Date
CN110119809A true CN110119809A (zh) 2019-08-13
CN110119809B CN110119809B (zh) 2021-08-10

Family

ID=67476036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910097897.7A Active CN110119809B (zh) 2018-02-05 2019-01-31 对神经网络中非对称量化数据执行mac运算的装置和方法

Country Status (3)

Country Link
US (1) US10977001B2 (zh)
CN (1) CN110119809B (zh)
TW (1) TWI748159B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113536216A (zh) * 2020-04-22 2021-10-22 脸谱公司 用分布流水线可分离卷积运算将卷积映射到相连处理元件
WO2022148071A1 (zh) * 2021-01-07 2022-07-14 苏州浪潮智能科技有限公司 一种图像特征提取方法、装置、设备及存储介质

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111126558B (zh) * 2018-10-31 2024-04-02 嘉楠明芯(北京)科技有限公司 一种卷积神经网络计算加速方法及装置、设备、介质
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
KR20210037569A (ko) * 2019-09-27 2021-04-06 삼성전자주식회사 컨볼루션 신경망 가속기 아키텍처를 위한 전력 효율적인 하이브리드 트래버설 장치 및 방법
US11327713B2 (en) 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11455368B2 (en) * 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US12015428B2 (en) 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11328038B2 (en) * 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
CN113780538A (zh) * 2020-06-09 2021-12-10 黄朝宗 使用环张量的深度神经网络加速方法及其系统
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070058695A1 (en) * 2005-09-15 2007-03-15 Cheng Mingqiang Parallel correlator implementation using hybrid correlation in spread-spectrum communication
CN101553995A (zh) * 2006-09-29 2009-10-07 联发科技股份有限公司 联合检测器的定点实现
CN102053817A (zh) * 2009-10-30 2011-05-11 Arm有限公司 用于执行乘法累加运算的设备和方法
US20110213848A1 (en) * 2008-10-27 2011-09-01 Grant James Gilmour System and method for monitoring a plurality of network devices
US20140122764A1 (en) * 2001-03-22 2014-05-01 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6952710B2 (en) 2000-06-09 2005-10-04 Walter Eugene Pelton Apparatus, methods and computer program products for performing high speed division calculations
US9818414B2 (en) 2015-06-04 2017-11-14 Intel Corporation Dialogue system with audio watermark
US10746849B2 (en) * 2016-04-08 2020-08-18 General Radar Corp. Beam-forming reconfigurable correlator (pulse compression receiver) based on multi-gigabit serial transceivers (SERDES)
CN106844524B (zh) * 2016-12-29 2019-08-09 北京工业大学 一种基于深度学习和Radon变换的医学图像检索方法
US10754649B2 (en) * 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122764A1 (en) * 2001-03-22 2014-05-01 Altera Corporation Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US20070058695A1 (en) * 2005-09-15 2007-03-15 Cheng Mingqiang Parallel correlator implementation using hybrid correlation in spread-spectrum communication
CN101553995A (zh) * 2006-09-29 2009-10-07 联发科技股份有限公司 联合检测器的定点实现
US20110213848A1 (en) * 2008-10-27 2011-09-01 Grant James Gilmour System and method for monitoring a plurality of network devices
CN102053817A (zh) * 2009-10-30 2011-05-11 Arm有限公司 用于执行乘法累加运算的设备和方法
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113536216A (zh) * 2020-04-22 2021-10-22 脸谱公司 用分布流水线可分离卷积运算将卷积映射到相连处理元件
WO2022148071A1 (zh) * 2021-01-07 2022-07-14 苏州浪潮智能科技有限公司 一种图像特征提取方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US10977001B2 (en) 2021-04-13
CN110119809B (zh) 2021-08-10
US20190243610A1 (en) 2019-08-08
TW201935329A (zh) 2019-09-01
TWI748159B (zh) 2021-12-01

Similar Documents

Publication Publication Date Title
CN110119809A (zh) 深度学习处理中乘法和累加运算的非对称量化
WO2021004366A1 (zh) 基于结构化剪枝和低比特量化的神经网络加速器及方法
CN111062472B (zh) 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法
CN112200300B (zh) 卷积神经网络运算方法及装置
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
CN110263925A (zh) 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构
TW201942808A (zh) 深度學習加速器及加快深度學習操作的方法
CN111695671B (zh) 训练神经网络的方法及装置、电子设备
CN112052958A (zh) 模型训练的方法、装置、设备及计算机可读存储介质
CN109726441B (zh) 体和面混合gpu并行的计算电磁学dgtd方法
CN107835992A (zh) Simd相乘和水平归约运算
CN113222102B (zh) 用于神经网络模型量化的优化方法
CN110147252A (zh) 一种卷积神经网络的并行计算方法及装置
WO2022226721A1 (zh) 一种矩阵乘法器及矩阵乘法器的控制方法
KR20190129240A (ko) 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법
Xu et al. Scaling deep learning on multiple in-memory processors
Véstias et al. Lite-CNN: A high-performance architecture to execute CNNs in low density FPGAs
Li et al. Winograd algorithm for addernet
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
CN110414672B (zh) 卷积运算方法、装置及系统
CN111859270A (zh) 一种神经网络的卷积方法和装置
CN112132255A (zh) 人工智能神经网络引擎中模型推断的批量归一化层融合和量化方法
CN110245706B (zh) 一种针对嵌入式应用的轻量化目标检测方法
Huang et al. Efficient stride 2 winograd convolution method using unified transformation matrices on fpga
CN115935888A (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