CN112668691A - 具有数据处理的方法和装置 - Google Patents

具有数据处理的方法和装置 Download PDF

Info

Publication number
CN112668691A
CN112668691A CN202011106670.3A CN202011106670A CN112668691A CN 112668691 A CN112668691 A CN 112668691A CN 202011106670 A CN202011106670 A CN 202011106670A CN 112668691 A CN112668691 A CN 112668691A
Authority
CN
China
Prior art keywords
data
lookup table
determining
processor
dividend
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.)
Pending
Application number
CN202011106670.3A
Other languages
English (en)
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020200054050A external-priority patent/KR20210045287A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN112668691A publication Critical patent/CN112668691A/zh
Pending legal-status Critical Current

Links

Images

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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • G06F7/4983Multiplying; Dividing
    • G06F7/4988Multiplying; Dividing by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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
    • 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
    • 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/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5354Using table lookup, e.g. for digit selection in division by digit recurrence

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)

Abstract

一种处理器实现的数据处理方法包括:对包括除法运算在内的激活函数的输入数据进行归一化;通过从存储器读取根据经归一化的输入数据进行寻址的第一查找表的值,确定与除法运算的被除数相对应的被除数数据;通过对被除数数据进行累加,确定与除法运算的除数相对应的除数数据;以及确定与除法运算的输出相对应的激活函数的输出数据,其中,除法运算的输出是通过从存储器读取根据被除数数据和除数数据进行寻址的第二查找表的值而获得的。

Description

具有数据处理的方法和装置
相关申请的交叉引用
本申请要求于2019年10月16日向美国专利商标局提交的美国临时专利申请No.62/915,846的优先权,并且要求于2020年5月6日向韩国知识产权局提交的韩国专利申请No.10-2020-0054050的优先权,这两个申请的全部公开通过引用合并于此以用于所有目的。
技术领域
以下描述涉及具有数据处理的方法和装置。
背景技术
神经网络可以是一种参考计算架构实现的计算***。各种电子***被用于通过使用数据处理装置分析数据并提取有效信息。
数据处理装置可以执行大量的数据计算。
发明内容
提供本发明内容以用简化形式介绍对将在下面的具体实施方式中进一步描述的概念的选择。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
在一个总体方面,一种处理器实现的数据处理方法包括:对包括除法运算在内的激活函数的输入数据进行归一化;通过从存储器读取根据经归一化的输入数据进行寻址的第一查找表的值,确定与所述除法运算的被除数相对应的被除数数据;通过对所述被除数数据进行累加,确定与所述除法运算的除数相对应的除数数据;以及确定与所述除法运算的输出相对应的所述激活函数的输出数据,其中所述除法运算的输出是通过从所述存储器读取根据所述被除数数据和所述除数数据进行寻址的第二查找表的值而获得的。
所述归一化可以包括:对所述输入数据进行归一化,使得经归一化的输入数据的最大值是0。
确定所述输出数据可以包括:基于所述被除数数据的值,确定对所述第二查找表的列进行寻址的列索引;基于所述除数数据的值,确定对所述第二查找表的行进行寻址的行索引;以及从所述存储器读取根据所述列索引和所述行索引进行寻址的所述第二查找表的值。
确定所述除数数据可以包括:使用累加器对所述被除数数据进行累加,并且确定所述行索引可以包括:从由所述累加器的最高有效位指示的值确定所述行索引。
确定所述行索引可以包括:基于所述第二查找表的总行数的以2为底的对数的值,确定所述最高有效位的数量。
确定所述最高有效位的数量可以包括:将所述对数的值的具体数加1。
确定所述输出数据可以包括:通过选择所述存储器的根据所述行索引进行寻址的字线,读取所述第二查找表的值。
所述方法可以包括:确定对数据进行处理的精度;以及从预先生成的多个查找表中选择与所述精度相对应的所述第一查找表和所述第二查找表。
选择所述第一查找表和所述第二查找表可以包括:选择所述第一查找表和所述第二查找表,使得所述第一查找表和所述第二查找表对应于不同精度。
所述激活函数可以包括Softmax函数。
一种可以存储指令的非暂时性计算机可读存储介质,当所述指令由处理器执行时,将所述处理器配置为执行所述方法。
在另一总体方面,一种数据处理装置包括:存储器;以及处理器,被配置为:对包括除法运算在内的激活函数的输入数据进行归一化;通过从所述存储器读取根据经归一化的输入数据进行寻址的第一查找表的值,确定与所述除法运算的被除数相对应的被除数数据;通过对所述被除数数据进行累加,确定与所述除法运算的除数相对应的除数数据;以及确定与所述除法运算的输出相对应的所述激活函数的输出数据,其中所述除法运算的输出是通过从所述存储器读取根据所述被除数数据和所述除数数据进行寻址的第二查找表的值而获得的。
对于所述归一化,所述处理器可以被配置为:对所述输入数据进行归一化,使得经归一化的输入数据的最大值是0。
对于确定所述输出数据,所述处理器可以被配置为:基于所述被除数数据的值,确定对所述第二查找表的列进行寻址的列索引;基于所述除数数据的值,确定对所述第二查找表的行进行寻址的行索引;以及从所述存储器读取根据所述列索引和所述行索引进行寻址的所述第二查找表的值。
所述装置可以包括:累加器,被配置为对所述被除数数据进行累加,其中,对于确定所述行索引,所述处理器可以被配置为:从由所述累加器的最高有效位指示的值确定所述行索引。
对于确定所述行索引,所述处理器可以被配置为:基于所述第二查找表的总行数的以2为底的对数的值,确定所述最高有效位的数量。
所述存储器可以包括:存储有所述第二查找表的动态随机存取存储器(DRAM),并且对于确定所述输出数据,所述处理器可以被配置为:通过选择所述DRAM的根据所述行索引进行寻址的字线,读取所述第二查找表的值。
所述处理器可以被配置为:确定对数据进行处理的精度;以及从预先生成的多个查找表中选择与所述精度相对应的所述第一查找表和所述第二查找表。
对于选择所述第一查找表和所述第二查找表,所述处理器可以被配置为:选择所述第一查找表和所述第二查找表,使得所述第一查找表和所述第二查找表对应于不同精度。
所述激活函数可以包括Softmax函数。
在另一总体方面,一种处理器实现的数据处理方法包括:通过基于激活函数的输入数据从存储器读取第一查找表的值,确定与所述激活函数的被除数相对应的被除数数据;通过对所述被除数数据进行累加,确定与所述激活函数的除数相对应的除数数据;以及通过基于所述被除数数据和所述除数数据从所述存储器读取第二查找表的值,确定与所述激活函数的输出相对应的输出数据。
所述方法可以包括:对所述输入数据进行归一化,其中,确定所述被除数数据可以包括:从所述存储器读取根据经归一化的输入数据进行寻址的所述第一查找表的值。
可以将所述处理器配置为基于所确定的输出数据执行自动语音识别,并且所述激活函数可以与注意力函数相对应。
在另一总体方面,一种处理器实现的数据处理方法包括:对包括被除数和除数在内的激活函数的输入数据进行归一化;通过从一个或多个存储器的第一查找表读取与经归一化的输入数据的值相对应的列索引的值,确定被除数数据;通过对所述被除数数据进行累加,确定除数数据;以及通过从所述一个或多个存储器的第二查找表读取与所述经归一化的输入数据的值相对应的列索引的值和与所述除数数据的值相对应的行索引的值,确定所述激活函数的输出数据。
所述被除数数据可以在0到1的范围内。
所述第一查找表和所述第二查找表可以是基于可以配置处理器实现所述激活函数的精度,从多个已生成的查找表中确定的。
所述精度可以是浮点10、浮点32、整数8、整数16和无符号整数8中的任一种。
基于以下具体实施方式、附图和权利要求,其他特征和方面将是明显的。
附图说明
图1示出根据一个或多个实施例的神经网络的架构。
图2示出根据一个或多个实施例的端到端自动语音识别(ASR)模型的一部分。
图3示出根据一个或多个实施例的数据处理装置。
图4示出根据一个或多个实施例的处理数据的方法。
图5A和图5B示出根据一个或多个实施例的数据处理装置用于实现Softmax函数的方法。
图6示出根据一个或多个实施例的查找表的精度。
图7示出根据一个或多个实施例的查找表。
图8示出根据一个或多个实施例的确定行索引的方法。
图9A和图9B示出根据一个或多个实施例的数据处理装置的架构。
图10示出根据一个或多个实施例的数据处理装置的运算准确度。
图11示出根据实施例的数据处理装置的运算准确度。
图12示出根据一个或多个实施例的由数据处理装置用于使用动态随机存取存储器(DRAM)读取查找表的值的方法。
图13示出根据一个或多个实施例的由数据处理装置用于计算层归一化函数的一部分的方法。
图14示出根据一个或多个实施例的由数据处理装置用于计算非线性函数的方法。
图15示出根据一个或多个实施例的由数据处理装置用于执行乘法运算的方法。
图16示出根据一个或多个实施例的由数据处理装置用于执行乘法运算的方法。
图17示出根据一个或多个实施例的由数据处理装置用于执行乘法运算的方法。
图18A和图18B示出根据一个或多个实施例的由数据处理装置用于执行乘法累加(MAC)运算的方法。
图19示出根据一个或多个实施例的由数据处理装置用于处理任意函数的方法。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图标记将被理解为表示相同的元素、特征和结构。附图可能不按比例绘制,并且为了清楚、说明和方便,可能夸大了附图中元素的相对大小、比例和描绘。
具体实施方式
提供以下具体实施方式以帮助读者获得对本文描述的方法、装置和/或***的全面理解。然而,在理解了本申请的公开内容之后,本文描述的方法、装置和/或***的各种改变、修改和等同形式将是明显的。例如,本文描述的操作的顺序仅是示例,并且不限于本文阐述的顺序,而是可以改变,这在理解了本申请的公开之后将是明显的,除了必须以特定的顺序发生的操作以外。而且,在理解了本申请的公开之后,可以省略对本领域中已知的特征的描述,以提高清晰度和简洁性。
现在将详细参考实施例,在附图中示出实施例的示例,其中,在全部附图中用类似的附图标记表示类似的元素。在这个方面,一个或多个实施例可以具有不同形式,并且不应当被解释为受限于本文所阐述的描述。因此,在下文通过参考附图仅描述实施例,以说明多个方面。如本文中所使用的,术语“和/或”包括相关列出项中的一项或多项的任何和所有组合。当诸如“......中的至少一个”之类的表述位于元素列表之后时,其修饰整个元素列表,而不修饰列表中的单独元素。
本公开中所使用的术语是考虑到关于本公开的功能、基于当前广泛使用的通用术语而选择的,但是在理解了本公开之后,术语可以根据本领域普通技术人员的意图、先例或本领域的新技术而变化。而且,申请人可以任意选择一些术语,并且在这种情况下,将在本公开的具体实施方式中描述所选择的术语的含义。因此,本文中所使用的术语不应该仅基于术语的名称来解释,而是应该基于术语的含义以及贯穿本公开的描述来进行解释。
本文所使用的术语仅用于描述各种示例,而不用于限制本公开。除非上下文另外明确指出,否则冠词“一”、“一个”和“该”也旨在包括复数形式。术语“包括”、“包含”和“具有”指定存在所述特征、数字、操作、成员、元素和/或其组合,但不排除存在或增加一个或多个其他特征、数字、操作、成员、元素和/或其组合。在实施例中使用的诸如“单元”等的术语,指示用于处理至少一个功能或操作的单元,并且其中该单元是硬件或硬件和软件的组合。
现在将在下文中参考附图更全面地描述本公开。然而,本公开可以以许多不同形式体现,且不应被解释为受限于本文中所阐述的实施例。
图1示出根据一个或多个实施例的神经网络1的架构。
参考图1,神经网络1可以被实现为深度神经网络(DNN)或n层神经网络。DNN或n层神经网络可以对应于卷积神经网络(CNN)、递归神经网络(RNN)、深度信念网络、受限的玻耳兹曼机等。例如,神经网络1可以被实现为CNN,但不限于此。图1示出了与神经网络1的示例相对应的CNN中的一些卷积层,但是CNN还可以包括除了所示出的卷积层之外的池化层和全连接层。
神经网络1可以被实现为具有多个层的计算架构,所述多个层包括输入图像层、特征图生成层和输出数据层。在神经网络1中,当执行输入图像与被称为权重内核的滤波器的卷积运算时,可以对输出特征图(或激活图或经卷积的特征)进行输出。可以在生成输出特征图的过程中使用激活函数。所生成的输出特征图可以是用于下一卷积层的下一输入特征图,并且可以对该下一输入特征图执行与该下一卷积层的内核的卷积运算,并且可以输出新的输出特征图,作为这样的卷积运算的结果。作为利用各个内核重复地执行这样的卷积运算的结果,最终可以输出通过神经网络1识别输入图像的特征的结果。
例如,当向图1的神经网络1输入大小为24×24像素的图像时,通过输入图像与第一内核的第一卷积运算可以输出大小为20×20像素的四个通道特征图。之后,相应输出特征图的大小可以通过对所输出的20×20特征图与各个内核所执行的各个卷积运算而逐渐减小,利用与最后内核的最后所示的卷积运算生成所示出的大小为1×1像素大小的最终特征。神经网络1可以通过在各个层中相应地执行卷积运算和下采样(或池化)操作,从输入图像过滤并输出可以表示整个图像的强健的特征,并且可以从所输出的最终特征得到关于输入图像的识别结果。基于以上内容,应当理解,本文讨论的示例实施例包括具有在神经网络1的操作中的层、级、边等中的一个或各种组合形式的多个、或所有这样的层、级、边等的实施例。
图2示出根据一个或多个实施例的端到端自动语音识别(ASR)模型的一部分。
ASR可以是将人类语音转换成计算机能够使用人工智能(AI)进行解释的数据的一种技术。ASR模型可以基于神经网络来实现。例如,ASR模型可以基于DNN、递归神经网络(RNN)等实现。另外,ASR模型可以基于诸如隐马尔可夫模型(HMM)之类的各种算法来实现。
端到端ASR模型可以是用于将从语音获得的输入序列直接映射成词语序列的一种ASR模型。
端到端ASR模型可以基于注意力机制来实现。注意力机制可以使用输入序列与输出序列之间的依赖性将输入序列映射到输出序列。注意力机制可以使用包括例如缩放点积注意力函数在内的方法来实现。
在端到端ASR模型中,缩放点积注意力函数可以由运算模块或处理元件(例如,一个或多个处理器)进行处理。缩放点积注意力函数可以是用于将查询Q、键K和值V的集合映射到输出的函数,并且例如可以被表示为以下等式1,且在图2中示出。
等式1:
Figure BDA0002726219110000081
在等式1中,Q表示查询矩阵,K表示键矩阵,V表示值矩阵,dk表示查询和键(例如,维度为dk的查询和键)的维度。
可以从查询和键的点积获得(例如,确定)查询和键之间的关联性。通过以
Figure BDA0002726219110000082
对查询和键的点积进行缩放,可以防止Softmax函数的输出值的略微改变。通过将Softmax函数的输出值乘以V,值与查询的关联性越高,可以获得的Attention(Q,K,V)越大。
图3是示出根据一个或多个实施例的数据处理装置300的配置图。
参考图3,数据处理装置300可以包括存储器310和处理器320(例如,一个或多个处理器)。在图3的数据处理装置300中,示出了与本实施例有关的组件,并且在理解了本公开之后将清楚的是,除了图3所示的组件之外,数据处理装置300中还可以包括其他组件。
数据处理装置300可以是实现参考图1在上文描述的神经网络的装置。另外,数据处理装置300可以是实现参考图2在上文描述的ASR模型的所述一部分的装置。例如,数据处理装置300可以被实现为各种类型的设备或利用其实现,诸如个人计算机(PC)、服务器设备、移动设备、嵌入式设备等。作为具体示例,数据处理装置300可以是或包括智能手机、平板设备、增强现实(AR)设备、物联网(IoT)设备、自主驾驶车辆、机器人设备、医疗设备等,其使用神经网络来执行语音识别、图像识别和图像分类,但不限于此。另外,数据处理装置300可以对应于安装在上述设备上的专用硬件加速器,并且可以是诸如神经处理单元(NPU)、张量处理单元(TPU)、神经引擎等的硬件加速器,它们是用于驱动神经网络的专用模块。
存储器310可以存储在数据处理装置300中处理的各种数据。例如,存储器310可以存储已由数据处理装置300处理的数据和要由数据处理装置300处理的数据。例如,存储器310可以通过存储由数据处理装置300处理的数据而用作累加器。此外,存储器310可以存储要由数据处理装置300驱动的应用、驱动程序等。例如,存储器310可以是负责缓存功能以对操作进行处理的片上存储器。
例如,存储器310可以包括随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、硬盘驱动器(HDD)、固态驱动器(SSD)和/或闪存。
处理器320可以控制用于驱动数据处理装置300中的神经网络的总体功能。例如,处理器320可以执行存储器310中存储的程序,以总体地控制数据处理装置300。处理器320可以被实现为设置在数据处理装置300中的中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)等,但是不限于此。
处理器320可以从存储器310读取/向存储器310写入数据(例如,语音数据、图像数据、特征图数据、内核数据等),并且使用所读取/写入的数据来处理神经网络的操作。另外,处理器320可以从存储器310读取/向存储器310写入语音数据,并且使用所读取/写入的数据来处理ASR的操作。
处理器320可以包括用于对操作进行处理的处理元件。例如,处理元件可以包括用于运算的逻辑电路。例如,处理元件可以包括被实现为乘法器和加法器的组合的运算器。备选地,处理元件可以包括被实现为乘法器、加法器和累加器的组合的运算器。此外,乘法器可以被实现为多个子乘法器的组合,并且加法器也可以被实现为多个子加法器的组合。
处理器320还可以包括用于分配操作数的分配器。例如,分配器可以从存储在存储器310中的数据向存储器310分配要由处理元件执行的运算所使用的操作数。然后,分配器可以分配回到处理元件,以对分配到存储器310的操作数进行计算。
在下文中,将参考图4至图19描述与数据处理装置300对数据进行处理的方法有关的实施例。可以将针对图3所示的数据处理装置300所描述的内容应用于下文描述的实施例。
图4是示出根据一个或多个实施例的处理数据的方法的流程图。
图4中的对数据进行处理的方法示出了数据处理装置300可以实现激活函数的方法。在一个或多个实施例中,激活函数可以包括除法运算。
在操作410中,处理器320可以对包括除法运算在内的激活函数的输入数据进行归一化。
输入数据可以是被用作激活函数的输入的数据。处理器320可以通过执行用于将输入数据归一化到特定规则的预处理过程,对输入数据进行归一化。例如,处理器320可以对输入数据进行归一化,使得输入数据的最大值和/或最小值被包括在预设范围内。作为另一示例,处理器320可以对输入数据进行归一化,使得输入数据的最大值和/或最小值是预设值。
在操作420中,处理器320可以通过从存储器310读取根据经归一化的输入数据进行寻址的第一查找表的值,获得(例如,确定)与除法运算的被除数相对应的被除数数据。
处理器320可以通过读取根据经归一化的输入数据进行寻址的第一查找表的值,获得被除数数据。被除数数据可以是与除法运算的被除数相对应的数据。被除数数据可以不具有与除法运算的被除数相同的值。
在操作430中,处理器320可以通过对被除数数据进行累加,获得与除法运算的除数相对应的除数数据。
处理器320可以通过使用处理元件中所包括的累加器或加法器对被除数数据进行累加,获得除数数据。备选地,处理器320可以通过使用存储器310中所包括的累加器对被除数数据进行累加,获得除数数据。
处理器320可以通过对被除数数据进行累加而不是直接计算除法运算的除数,来获得除数数据。除数数据可以是与除法运算的除数相对应的数据。除数数据可以不具有与除法运算的除数相同的值。
在操作440中,处理器320可以从除法运算的输出获得激活函数的输出数据,其中除法运算的输出是通过从存储器310读取根据被除数数据和除数数据进行寻址的第二查找表的值而获得的。
代替使用除法器,处理器320可以通过读取根据被除数数据和除数数据进行寻址的第二查找表的值,获得除法运算的输出。处理器320可以从除法运算的输出获得输出数据。输出数据可以是激活函数的输出。
在另一实施例中,可以省略对输入数据进行归一化的操作410。代替输入数据的归一化,可以对第一和第二查找表的值进行微调,从而可以在低误差范围内获得激活函数的除法运算的输出。
图5A和图5B是示出根据一个或多个实施例的数据处理装置用于实现Softmax函数的方法的图。
Softmax函数可以是激活函数,其可以用于实现神经网络和/或ASR。在示例中,Softmax函数可以与以上所描述的等式1的Softmax函数相对应。例如,Softmax函数可以被表示为以下等式2。
等式2:
Figure BDA0002726219110000111
参考图5A和图5B,处理器320可以对输入数据x进行归一化。在一个或多个实施例中,处理器320可以对输入数据x进行归一化,使得经归一化的输入数据
Figure BDA0002726219110000113
的最大值是0。在一个或多个实施例中,例如,处理器320可以基于以下等式3对输入数据x进行归一化。
等式3:
Figure BDA0002726219110000112
在等式3中,
Figure BDA0002726219110000121
表示经归一化的输入数据,x表示输入数据,max(x)表示输入数据的最大值。
当经归一化的输入数据
Figure BDA00027262191100001216
的最大值是0时,对经归一化的输入数据
Figure BDA0002726219110000122
执行指数运算的结果值被包括在图5B的曲线图中的阴影区域中。也就是说,被除数数据
Figure BDA0002726219110000123
被包括在0到1的范围中。
对输入数据x的指数运算的结果值被包括在0到∞的范围中,而对经归一化的输入数据
Figure BDA00027262191100001217
执行指数运算的结果值被包括在0到1的范围中,因此,针对输入数据x的Softmax函数的被除数被包括在0到∞的范围中,而被除数数据
Figure BDA0002726219110000124
被包括在0到1的范围中。因此,由于被除数数据
Figure BDA0002726219110000125
分布在0到1的范围中,所以第一查找表的值可以被稳定在有限的范围中。例如,尽管典型的数据处理装置可以实现具有在0到∞的范围内的值的查找表,但是一个或多个实施例的数据处理装置可以实现具有分布在0到1的范围中的经归一化的输入数据
Figure BDA00027262191100001220
的被除数数据
Figure BDA0002726219110000126
的值的第一查找表,使得用于存储由一个或多个实施例的数据处理装置实现的第一查找表的存储空间(例如,存储器310)的大小与用于存储由典型的数据处理装置实现的第一查找表的存储空间的大小相比被有利地减小。
处理器320可以通过读取根据经归一化的输入数据
Figure BDA00027262191100001218
进行寻址的第一查找表(第一LUT)的值,获得(例如,确定)与Softmax函数的被除数相对应的被除数数据
Figure BDA0002726219110000127
例如,Softmax函数的被除数可以与以上等式2中的
Figure BDA00027262191100001219
相对应。
例如,当输入数据x是包括n个元素x1、x2、…、xn的向量时,处理器320可以通过n次从存储器310读取根据经归一化的输入数据
Figure BDA00027262191100001221
进行寻址的第一查找表的值,获得包括n个元素
Figure BDA0002726219110000128
的被除数数据
Figure BDA0002726219110000129
处理器320可以通过对被除数数据
Figure BDA00027262191100001210
进行累加,获得与Softmax函数的除数相对应的除数数据。例如,Softmax函数的除数可以与以上等式2中的
Figure BDA00027262191100001211
相对应。
例如,当输入数据x是包括n个元素x1、x2、…、xn的向量并且获得了包括n个元素
Figure BDA00027262191100001212
的被除数数据
Figure BDA00027262191100001213
时,处理器320可以通过对被除数数据
Figure BDA00027262191100001214
的n个元素
Figure BDA00027262191100001215
进行累加,获得除数数据。
处理器320可以通过从存储器310读取根据被除数数据
Figure BDA0002726219110000131
和除数数据进行寻址的第二查找表(第二LUT)的值,获得Softmax函数的输出数据σ。也就是说,处理器320可以通过从存储器310读取根据被除数数据
Figure BDA0002726219110000132
和除数数据进行寻址的第二查找表(第二LUT)的值、而不是直接执行Softmax函数的除法运算,来获得除法运算的输出。例如,Softmax函数的输出可以与以上等式2中的σ(xi)相对应。也就是说,例如,输出数据σ可以与以上等式2中的σ(xi)相对应。
例如,当输入数据x是包括n个元素x1、x2、…、xn的向量并且获得了包括n个元素
Figure BDA0002726219110000133
的被除数数据
Figure BDA0002726219110000134
时,处理器320可以通过n次从存储器310读取根据被除数数据
Figure BDA0002726219110000135
和除数数据进行寻址的第二查找表的值,获得包括n个元素σ(x1),σ(x2),...,σ(xn)的输出数据σ。
当对输入数据x进行归一化,使得最大值是0时,被除数数据
Figure BDA0002726219110000136
可以被包括在0到1的范围中,而与输入数据x的范围无关。因此,通过对被除数数据
Figure BDA0002726219110000137
进行累加所获得的除数数据的值的范围取决于输入数据x的长度。
在根据一个或多个实施例的数据处理方法中,处理器320可以通过读取第一查找表的值的n周期操作和读取第二查找表的值的n周期操作,来获得激活函数的输出。可以在与读取第一查找表的值相同的周期中执行被除数数据的累加,因此处理器320可以通过2n周期操作来计算激活函数。
为了实现神经网络和/或ASR,可以处理包括除法运算在内的激活函数。为了处理激活函数,典型的数据处理装置可以使用专用运算器来实现除法运算。例如,当Softmax函数包括除法运算时,典型的数据处理装置可以使用除法器来实现除法运算。典型的数据处理装置的用于激活函数的专用运算器可能具有不可重新配置性,并且除法器可能导致运算中的延迟。
相反,一个或多个实施例的数据处理装置300可以使用查找表(例如,第一查找表和第二查找表中的任意一个或两者)对包括除法运算在内的激活函数进行处理。因此,一个或多个实施例的数据处理装置300可以不使用用于对激活函数进行处理的专用运算器,并且可以被配置为是可重新配置的。此外,因为数据处理装置300可以不使用除法器来实现除法操作,所以不会存在由这样的除法器导致的延迟,从而改进了计算机和数据处理、神经网络处理及ASR的技术领域的功能。
图6示出根据一个或多个实施例的查找表的精度。
处理器320(和/或神经处理器或神经处理单元(NPU))对激活函数进行计算、运算或实现的精度可以变化。例如,处理器320可以利用浮点(FP)32、整数(INT)16、INT8或无符号整数(UINT)8的精度来计算激活函数。
可以将预先生成的具有各种精度的多个查找表600存储在存储器310中。多个查找表600可以包括用作第一查找表的1维查找表1D_LUT_…和用作第二查找表的2维查找表2D_LUT_…。
例如,存储器310可以存储具有与NPU的FP32的精度相对应的FP10的精度的多个查找表610、具有与NPU的INT16的精度相对应的INT16的精度的多个查找表620、具有与NPU的INT8的精度相对应的INT8的精度的多个查找表630、以及具有与NPU的UINT8的精度相对应的UINT8的精度的多个查找表640。处理器320可以包括NPU。
可以将具有相同精度的各种查找表存储在存储器310中。例如,可以将具有相同精度以及不同长度(列/行)和大小(比特/字节)的查找表存储在存储器310中。例如,可以将精度为FP10的31列的1维查找表1D_LUT_1x31、61列的1维查找表1D_LUT_1x61等存储在存储器310中。例如,可以将精度为FP10的275字节的2维查找表2D_LUT_11x20、550字节的2维查找表2D_LUT_11x40等存储在存储器310中。
处理器320可以根据要执行运算的精度从多个查找表600中选择第一查找表和第二查找表。此外,处理器320可以选择具有相同精度或不同精度的第一查找表和第二查找表。例如,处理器320可以将精度为INT8的1维查找表1D_LUT_1x101_int8选择为第一查找表,并且将精度为INT8的2维查找表2D_LUT_11x60_int8选择为第二查找表。例如,处理器320可以将精度为FP10的1维查找表1D_LUT_1x61选择为第一查找表,并且将精度为INT8的2维查找表2D_LUT_11x60_int8选择为第二查找表。
可以将多个查找表600存储在DRAM中,并且可以将根据精度所选择的第一和第二查找表移动到并存储在SRAM中。当要被用于计算激活函数的第一查找表和第二查找表存储在SRAM中时,处理器320可以高速地从存储器310读取第一查找表和第二查找表的值。
图7示出根据一个或多个实施例的查找表。
在一个或多个实施例中,可以如图7所示地生成精度为UINT8的1维查找表1D_LUT_1x101_uint8。1维查找表1D_LUT_1x101_uint8可以具有101列。
1维查找表1D_LUT_1x101_uint8的值可以是与对经归一化的输入数据执行指数运算的结果相对应的值。当输入数据被归一化为使得最大值为0时,对经归一化的输入数据执行指数运算的结果被包括在0到1的范围中。因此,可以生成1维查找表1D_LUT_1x101_uint8以表示精度为UINT8的0到1的范围。
处理器320可以通过基于经归一化的输入数据的值获得对1维查找表1D_LUT_1x101_uint8的列进行寻址的列索引,并且参考列索引读取1维查找表1D_LUT_1x101_uint8的值,来获得(例如,确定)被除数数据。
在一个或多个实施例中,可以如图7所示地生成精度为UINT8的2维查找表2D_LUT_11x60_uint8。2维查找表2D_LUT_11x60_uint8可以具有11行和60列。
处理器320可以基于经归一化的输入数据的值获得对2维查找表2D_LUT_11x60_uint8的列进行寻址的列索引,并且基于除数数据的值获得对2维查找表2D_LUT_11x60_uint8的行进行寻址的行索引。处理器320可以通过参考列索引和行索引读取2维查找表2D_LUT_11x60_uint8的值,来获得激活函数的输出数据。
图8示出根据一个或多个实施例的确定行索引的方法。
处理器320可以基于除数数据的值来获得对第二查找表的行进行寻址的行索引。例如,处理器320可以通过使用累加器800对被除数数据进行累加来获得除数数据,并且处理器320可以从累加器800的某些位(例如,已累加的被除数数据的某些位)获得行索引。
处理器320可以从累加器800的特定数量或已确定数量的最高有效位810获得行索引。处理器320可以基于第二查找表中的行数来确定所述特定数量。
处理器320可以基于第二查找表的行数的以2为底的对数的值来确定所述特定数量。例如,处理器320可以基于第二查找表的行数的以2为底的对数的索引值来确定所述特定数量。处理器320可以通过将第二查找表的行数的以2为底的对数的索引值加1来确定所述特定数量。
例如,当第二查找表的行数是30时,因为log230的值大约是4.91,所以处理器320可以将通过使索引4加1而获得的值5确定为所述特定数量,并且可以从累加器800的5个最高有效位获得行索引。例如,当第二查找表的行数是60时,因为log260的值大约是5.91,所以处理器320可以将通过使索引5加1而获得的值6确定为所述特定数量,并且可以从累加器800的6个最高有效位获得行索引。
图9A和图9B是示出根据一个或多个实施例的数据处理装置(例如,数据处理装置300)的架构的图。
参考图9A和图9B,数据处理装置300的处理元件(PE)911和912可以包括被实现为乘法器和加法器的组合的运算器。备选地或附加地,处理元件911和912可以包括被实现为乘法器、加法器和累加器的组合的运算器。处理器320可以包括处理元件911和912。
可以将专用的可重新配置的存储器921和922分配给处理元件911和912。例如,专用存储器921可以一对一地分配给处理元件911,或者专用存储器922可以多对一地分配给处理元件912。存储器310可以包括专用存储器921和922。
当处理元件911和912包括累加器时,处理元件911和912可以通过对被除数数据进行累加来获得除数数据。备选地,专用存储器921和922可以通过对被除数数据进行累加来获得除数数据。
第一查找表和第二查找表可以被存储在专用存储器921和922中。处理器320可以从专用存储器921和922读取第一查找表的值和第二查找表的值。
专用存储器921和922可以具有足以存储第一查找表和第二查找表的大小。例如,一对一地分配给处理元件911的专用存储器921可以是256字节。例如,多对一地分配给处理元件912的专用存储器922可以是32K字节。
分配给处理元件911和912的专用存储器921和922可以是SRAM,使得处理器320可以高速地读取第一和第二查找表。
处理器320可以使用处理元件911和912执行神经网络的激活与权重之间的运算,并且可以使用专用存储器921和922执行激活函数的除法运算。例如,处理器320可以使用处理元件911和912执行激活与权重之间的卷积运算,并且可以通过从专用存储器921和922读取第一查找表和第二查找表来执行激活函数的除法运算。
另外,处理器320可以使用处理元件911和912执行用于实现端到端ASR的缩放点积注意力函数的点积运算,并且可以使用专用存储器921和922执行Softmax函数的运算。
图10示出根据一个或多个实施例的数据处理装置的运算准确度。
进行了实验以基于缩放点积注意力函数测量关于端到端ASR模型的语音识别的准确度。实验是针对LibriSpeech数据集的1000个短样本和商业数据集的大约2000个样本进行的。短样本是具有10或更小的每句词速率(WPSR)的样本。
在实验中,在根据精度为FP64的传统方法(使用用于实现Softmax函数的除法运算的专用运算器和/或不使用如上所述的根据一个或多个实施例的第一查找表和第二查找表)计算Softmax函数的典型参考模型1010与所提出的根据图5所示的方法计算Softmax函数的一个或多个实施例的模型之间比较了语音识别的准确度。基于词错误率(WER)和句子错误率(SER)计算了语音识别的准确度。
所提出的一个或多个实施例的模型被配置为使用精度为FP10的不同长度(行/列)的第一查找表和第二查找表来计算Softmax函数。例如,所提出的第一模型1020被配置为使用具有31列的第一查找表和具有40行和11列的第二查找表,所提出的第二模型1030被配置为使用具有61列的第一查找表和具有60行和11列的第二查找表,并且所提出的第三模型1040被配置为使用具有101列的第一查找表和具有60行和11列的第二查找表。
作为实验的结果,所提出的一个或多个实施例的模型的WER相比于典型参考模型1010仅增加了大约0.05%至0.5%。另外,所提出的模型的SER相比于典型参考模型1010仅增加了大约0.1%至2%。例如,在所提出的使用大小为600字节或更小的第一和第二查找表的第一模型1020的情况下,WER相比于典型参考模型1010仅增加了大约0.2%至0.5%。因此,当使用所提出的一个或多个实施例的模型时,可以使用比典型参考模型1010更少的硬件资源顺利地执行准确的语音识别,从而改进了计算机和数据处理、神经网络处理及ASR的技术领域的功能。
图11示出根据一个或多个实施例的数据处理装置的运算准确度。
进行了实验以测量所提出的使用相同精度的第一和第二查找表的一个或多个实施例的模型和所提出的使用不同精度的第一和第二查找表的一个或多个实施例的模型的语音识别的准确度。图11基于参考图10在上文描述的典型参考模型1010示出了对所提出的模型的准确度进行测量的实验结果。
所提出的一个或多个实施例的模型包括:情况full_int16,其将精度为INT16的1维查找表1D_LUT_1x101_int16选择为第一查找表且将精度为INT16的2维查找表2D_LUT_11x60_int16选择为第二查找表;情况full_uint8,其将精度为UINT8的1维查找表1D_LUT_1x101_uint8选择为第一查找表且将精度为UINT8的2维查找表2D_LUT_11x60_uint8选择为第二查找表;以及情况full_int8,其将精度为INT8的1维查找表1D_LUT_1x101_int8选择为第一查找表且将精度为INT8的2维查找表2D_LUT_11x60_int8选择为第二查找表。
另外,所提出的一个或多个实施例的模型包括:情况mix_16_8,其将精度为INT16的1维查找表1D_LUT_1x101_int16等选择为第一查找表且将精度为INT8的2维查找表2D_LUT_11x60_int8等选择为第二查找表。
作为实验的结果,可以确认,所提出的一个或多个实施例的模型的WER相比于典型参考模型1010仅具有0至1%的差异。因此,当使用所提出的一个或多个实施例的模型时,可以以与典型参考模型1010类似的准确度执行语音识别,同时使用比典型参考模型1010更少的硬件资源,从而改进了计算机和数据处理、神经网络处理及ASR的技术领域的功能。
图12示出根据一个或多个实施例的数据处理装置使用DRAM读取查找表的值的方法。
处理器320可以从存储器310读取2维查找表。在一个或多个实施例中,处理器320可以使用存储在SRAM中的2维查找表,但是在另一实施例中,处理器320可以使用存储在DRAM中的2维查找表。
处理器320可以通过选择DRAM的根据2维查找表的行索引进行寻址的字线和DRAM的根据2维查找表的列索引进行寻址的位线,来读取2维查找表的值。
因为只需要对DRAM的字线进行一次选择以从2维查找表读取值,所以即使使用DRAM而不是SRAM,也可以以相对高的速度获得2维查找表的值。
图13示出根据一个或多个实施例的数据处理装置计算层归一化函数的一部分的方法。
例如,层归一化函数的一部分可以被表示为以下等式4。
等式4:
Figure BDA0002726219110000191
在等式4中,y表示层归一化函数的与输出数据相对应的部分,x表示输入数据,n表示x的元素的数量。
处理器320可以通过从存储器310读取根据输入数据x进行寻址的第一查找表(第一LUT)的值,获得输入数据x的元素的平方x1 2、x2 2、…、xn 2。处理器320可以通过对输入数据x的元素的平方x1 2、x2 2、…、xn 2进行累加,获得输入数据x的元素的平方x1 2、x2 2、…、xn 2的和。输入数据x的元素的平方x1 2、x2 2、…、xn 2的和可以与等式4中∑xi 2的相对应。处理器320可以通过从存储器310读取根据输入数据x的元素的平方x1 2、x2 2、…、xn 2的和以及输入数据x的元素的数量n进行寻址的第二查找表(第二LUT)的值,来获得与层归一化函数的该部分相对应的输出数据。
图14示出根据一个或多个实施例的数据处理装置计算非线性函数的方法。
处理器320可以通过从存储器310读取根据输入数据进行寻址的查找表的值,计算关于输入数据的非线性函数。也就是说,处理器320可以通过读取查找表的值来计算关于输入数据的非线性函数,而不是直接计算关于输入数据的非线性函数。
在一个或多个实施例中,处理器320可以通过读取根据输入数据x1、x2、…、xn进行寻址的查找表LUT的值,来获得关于输入数据x1、x2、…、xn的双曲正切的值。此外,处理器320可以获得数据y1、y2、…、yn,它们是通过对双曲正切的获得值进行缩放来对双曲正切的值进行反量化而获得的。
图15示出根据一个或多个实施例的数据处理装置执行乘法运算的方法。
处理器320可以通过从存储器310读取2维查找表的值来执行乘法运算。
在一个或多个实施例中,2维查找表可以包括可用4个比特表示的数之间的乘积。2维查找表可以是16行和16列的查找表。因此,一个或多个实施例的处理器320可以通过读取2维查找表的值来获得数之间的乘积,而不是(例如,使用专用乘法器)直接计算数之间的乘法。
图16示出根据一个或多个实施例的数据处理装置执行乘法运算的方法。
在乘法运算中,即使乘数之间的顺序改变,因为乘积不改变,所以处理器320可以通过读取图16所示的2维查找表的值而不是图15所示的2维查找表来执行乘法运算。通过使用图16的2维查找表,可以节省存储器310的存储空间。
图17示出根据一个或多个实施例的数据处理装置执行乘法运算的方法。
处理器320可以通过从存储器310读取2维查找表的值,执行以不同比特表示的数之间的乘法运算。在一个或多个实施例中,处理器320可以通过读取2维查找表的值,获得可用4比特表示的数与可用8比特表示的数之间的乘法结果。
图18A和图18B示出根据一个或多个实施例的数据处理装置执行乘法累加(MAC)运算的方法。
处理器320可以执行MAC运算。在一个或多个实施例中,处理器320可以通过从存储器310读取2维查找表1810的值来执行乘法运算,并且通过使用累加器1820执行加法运算来执行MAC运算。在另一实施例中,处理器320可以通过读取3维查找表1830的值来执行MAC运算。
图19示出根据一个或多个实施例的数据处理装置处理任意函数的方法。
处理器320可以通过从存储器310读取查找表来处理任意函数。任意函数可以是线性函数或非线性函数。任意函数可以包括线性运算或非线性运算。
在一个或多个实施例中,处理器320可以通过从存储器310读取2维查找表1910的值,获得关于输入数据a和b的任意函数f的输出数据f(a,b)。处理器320可以通过使用诸如1维、2维和3维之类的各种维度的查找表来获得函数的输出数据f(a,b),而不是直接对函数进行计算。
数据处理装置、存储器、处理器、累加器、处理元件、NPU、数据处理装置300、存储器310、处理器320、累加器800、处理元件911、处理元件912、存储器921、存储器922、累加器1820以及针对图1至图19在本文所描述的其他装置、设备、单元、模块和组件由硬件组件实现或代表硬件组件。适当时可用于执行本申请中所描述的操作的硬件组件的示例包括控制器、传感器、发生器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中所描述的操作的任何其他电子组件。在其他示例中,执行本申请中描述的操作的一个或多个硬件组件由计算硬件(例如,由一个或多个处理器或计算机)实现。处理器或计算机可以由一个或多个处理元件(例如,逻辑门阵列、控制器和算术逻辑单元)、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以所定义的方式响应并执行指令以实现期望结果的任何其他设备或设备的组合实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件,例如操作***(OS)和在OS上运行的一个或多个软件应用,以执行本申请中所描述的操作。硬件组件还可以响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为了简单,在本申请中描述的示例的描述中可能使用了单数术语“处理器”或“计算机”,但是在其他示例中,可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件或两个或更多个硬件组件可以由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器、或处理器和控制器来实现,而一个或多个其他硬件组件可以由一个或多个其他处理器、或另一处理器和另一控制器来实现。一个或多个处理器、或处理器和控制器可以实现单个硬件组件、或两个或更多个硬件组件。硬件组件可以具有不同的处理配置中的任意一种或多种,其示例包括单处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
在图1至图19中示出的执行本申请中描述的操作的方法由计算硬件(例如,由如上所述实现的执行指令或软件以执行由方法执行的本申请中所描述的操作的一个或多个处理器或计算机)执行。例如,单个操作或两个或更多个操作可以由单个处理器、或两个或更多个处理器、或处理器和控制器来执行。一个或多个操作可以由一个或多个处理器、或处理器和控制器执行,并且一个或多个其他操作可以由一个或多个其他处理器、或另一处理器和另一控制器执行。一个或多个处理器、或处理器和控制器可以执行单个操作、或两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行上述方法的指令或软件可以被编写为计算机程序、代码段、指令或其任意组合,用于单独或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机来执行如上所述的由硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码,例如,由编译器产生的机器代码。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可以基于附图中所示的框图和流程图以及本文所使用的对应描述,使用任何编程语言来编写指令或软件,所述框图和流程图以及对应描述公开了用于执行如上所述的由硬件组件和方法执行的操作的算法。
可以在一个或多个非暂时性计算机可读存储介质之中或之上记录、存储或固定用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件、以及任何相关联的数据、数据文件和数据结构。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH,BD-RE、蓝光或光盘储存器、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡式存储器(例如,多媒体微型卡)或卡(例如,安全数字(SD)或极限数字(XD))、磁带、软盘、磁光数据存储设备、光学数据存储设备、硬盘、固态磁盘、以及被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并且向一个或多个处理器或计算机提供所述指令或软件以及任何相关联的数据、数据文件和数据结构以使得所述一个或多个处理器或计算机可以执行所述指令的任何其他设备。在一个示例中,所述指令或软件以及任何相关联的数据、数据文件和数据结构分布在网络连接的计算机***上,使得所述指令或软件以及任何相关联的数据、数据文件和数据结构由一个或多个处理器或计算机以分布式方式存储、访问和执行。
虽然本公开包括特定示例,但是在理解了本申请的公开之后将清楚的是,可以在这些示例中进行形式和细节上的各种改变,而不背离权利要求及其等同物的精神和范围。本文描述的示例仅应被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可应用于其他示例中的类似特征或方面。如果以不同的顺序执行所描述的技术、和/或如果以不同的方式组合所描述的***、架构、设备或电路中的组件、和/或被其他组件或其等同物替代或补充,则可以实现合适的结果。

Claims (27)

1.一种处理器实现的数据处理方法,所述方法包括:
对包括除法运算在内的激活函数的输入数据进行归一化;
通过从存储器读取根据经归一化的输入数据进行寻址的第一查找表的值,确定与所述除法运算的被除数相对应的被除数数据;
通过对所述被除数数据进行累加,确定与所述除法运算的除数相对应的除数数据;以及
确定与所述除法运算的输出相对应的所述激活函数的输出数据,其中所述除法运算的输出是通过从所述存储器读取根据所述被除数数据和所述除数数据进行寻址的第二查找表的值而获得的。
2.根据权利要求1所述的方法,其中,所述归一化包括:对所述输入数据进行归一化,使得经归一化的输入数据的最大值是0。
3.根据权利要求1所述的方法,其中,确定所述输出数据包括:
基于所述被除数数据的值,确定对所述第二查找表的列进行寻址的列索引;
基于所述除数数据的值,确定对所述第二查找表的行进行寻址的行索引;以及
从所述存储器读取根据所述列索引和所述行索引进行寻址的所述第二查找表的值。
4.根据权利要求3所述的方法,其中,确定所述除数数据包括:
使用累加器对所述被除数数据进行累加,并且
确定所述行索引包括:
从由所述累加器的最高有效位指示的值确定所述行索引。
5.根据权利要求4所述的方法,其中,确定所述行索引包括:基于所述第二查找表的总行数的以2为底的对数的值,确定所述最高有效位的数量。
6.根据权利要求5所述的方法,其中,确定所述最高有效位的数量包括:将所述对数的值的具体数加1。
7.根据权利要求3所述的方法,其中,确定所述输出数据包括:通过选择所述存储器的根据所述行索引进行寻址的字线,读取所述第二查找表的值。
8.根据权利要求1所述的方法,还包括:
确定对数据进行处理的精度;以及
从预先生成的多个查找表中选择与所述精度相对应的所述第一查找表和所述第二查找表。
9.根据权利要求8所述的方法,其中,选择所述第一查找表和所述第二查找表包括:
选择所述第一查找表和所述第二查找表,使得所述第一查找表和所述第二查找表对应于不同精度。
10.根据权利要求1所述的方法,其中,所述激活函数包括Softmax函数。
11.一种存储指令的非暂时性计算机可读存储介质,当所述指令由处理器执行时,将所述处理器配置为执行权利要求1所述的方法。
12.一种数据处理装置,所述装置包括:
存储器;以及
处理器,被配置为:
对包括除法运算在内的激活函数的输入数据进行归一化;
通过从所述存储器读取根据经归一化的输入数据进行寻址的第一查找表的值,确定与所述除法运算的被除数相对应的被除数数据;
通过对所述被除数数据进行累加,确定与所述除法运算的除数相对应的除数数据;以及
确定与所述除法运算的输出相对应的所述激活函数的输出数据,其中所述除法运算的输出是通过从所述存储器读取根据所述被除数数据和所述除数数据进行寻址的第二查找表的值而获得的。
13.根据权利要求12所述的装置,其中,对于所述归一化,所述处理器被配置为:对所述输入数据进行归一化,使得经归一化的输入数据的最大值是0。
14.根据权利要求12所述的装置,其中,对于确定所述输出数据,所述处理器被配置为:
基于所述被除数数据的值,确定对所述第二查找表的列进行寻址的列索引;
基于所述除数数据的值,确定对所述第二查找表的行进行寻址的行索引;以及
从所述存储器读取根据所述列索引和所述行索引进行寻址的所述第二查找表的值。
15.根据权利要求14所述的装置,还包括:
累加器,被配置为对所述被除数数据进行累加,
其中,对于确定所述行索引,所述处理器被配置为:从由所述累加器的最高有效位指示的值确定所述行索引。
16.根据权利要求15所述的装置,其中,对于确定所述行索引,所述处理器被配置为:基于所述第二查找表的总行数的以2为底的对数的值,确定所述最高有效位的数量。
17.根据权利要求14所述的装置,其中:
所述存储器包括:存储有所述第二查找表的动态随机存取存储器DRAM,并且
对于确定所述输出数据,所述处理器被配置为:通过选择所述DRAM的根据所述行索引进行寻址的字线,读取所述第二查找表的值。
18.根据权利要求12所述的装置,其中,所述处理器被配置为:
确定对数据进行处理的精度;以及
从预先生成的多个查找表中选择与所述精度相对应的所述第一查找表和所述第二查找表。
19.根据权利要求18所述的装置,其中,对于选择所述第一查找表和所述第二查找表,所述处理器被配置为:选择所述第一查找表和所述第二查找表,使得所述第一查找表和所述第二查找表对应于不同精度。
20.根据权利要求12所述的装置,其中,所述激活函数包括Softmax函数。
21.一种处理器实现的数据处理方法,所述方法包括:
通过基于激活函数的输入数据从存储器读取第一查找表的值,确定与所述激活函数的被除数相对应的被除数数据;
通过对所述被除数数据进行累加,确定与所述激活函数的除数相对应的除数数据;以及
通过基于所述被除数数据和所述除数数据从所述存储器读取第二查找表的值,确定与所述激活函数的输出相对应的输出数据。
22.根据权利要求21所述的方法,还包括:
对所述输入数据进行归一化,
其中,确定所述被除数数据包括:从所述存储器读取根据经归一化的输入数据进行寻址的所述第一查找表的值。
23.根据权利要求21所述的方法,其中,
将所述处理器配置为基于所确定的输出数据执行自动语音识别,并且
所述激活函数与注意力函数相对应。
24.一种处理器实现的数据处理方法,所述方法包括:
对包括被除数和除数在内的激活函数的输入数据进行归一化;
通过从一个或多个存储器的第一查找表读取与经归一化的输入数据的值相对应的列索引的值,确定被除数数据;
通过对所述被除数数据进行累加,确定除数数据;以及
通过从所述一个或多个存储器的第二查找表读取与所述经归一化的输入数据的值相对应的列索引的值和与所述除数数据的值相对应的行索引的值,确定所述激活函数的输出数据。
25.根据权利要求24所述的方法,其中,所述被除数数据在0到1的范围内。
26.根据权利要求24所述的方法,其中,所述第一查找表和所述第二查找表是基于配置处理器实现所述激活函数的精度,从多个已生成的查找表中确定的。
27.根据权利要求26所述的方法,其中,所述精度是浮点10、浮点32、整数8、整数16和无符号整数8中的任一种。
CN202011106670.3A 2019-10-16 2020-10-15 具有数据处理的方法和装置 Pending CN112668691A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962915846P 2019-10-16 2019-10-16
US62/915,846 2019-10-16
KR10-2020-0054050 2020-05-06
KR1020200054050A KR20210045287A (ko) 2019-10-16 2020-05-06 데이터를 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
CN112668691A true CN112668691A (zh) 2021-04-16

Family

ID=73020039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011106670.3A Pending CN112668691A (zh) 2019-10-16 2020-10-15 具有数据处理的方法和装置

Country Status (3)

Country Link
US (1) US12039288B2 (zh)
EP (1) EP3809285B1 (zh)
CN (1) CN112668691A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210133546A1 (en) * 2019-10-31 2021-05-06 SK Hynix Inc. Arithmetic devices for neural network
US11455144B1 (en) * 2019-11-21 2022-09-27 Xilinx, Inc. Softmax calculation and architecture using a modified coordinate rotation digital computer (CORDIC) approach
CN115511047B (zh) * 2022-06-09 2024-03-08 上海燧原科技股份有限公司 Softmax模型的量化方法、装置、设备及介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304971B2 (en) * 2013-06-27 2016-04-05 International Business Machines Corporation Lookup table sharing for memory-based computing
US20160313976A1 (en) * 2015-04-21 2016-10-27 Qualcomm Incorporated High performance division and root computation unit
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10346350B2 (en) 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor
US10423389B2 (en) * 2016-05-13 2019-09-24 Oracle International Corporation Methods for constructing lookup tables for division and square-root implementations
US10032067B2 (en) 2016-05-28 2018-07-24 Samsung Electronics Co., Ltd. System and method for a unified architecture multi-task deep learning machine for object recognition
CN108073929B (zh) 2016-11-15 2023-11-24 北京三星通信技术研究有限公司 基于动态视觉传感器的物体检测方法及设备
US10380741B2 (en) 2016-12-07 2019-08-13 Samsung Electronics Co., Ltd System and method for a deep learning machine for object detection
US10691886B2 (en) 2017-03-09 2020-06-23 Samsung Electronics Co., Ltd. Electronic apparatus for compressing language model, electronic apparatus for providing recommendation word and operation methods thereof
US11195093B2 (en) 2017-05-18 2021-12-07 Samsung Electronics Co., Ltd Apparatus and method for student-teacher transfer learning network using knowledge bridge
US10949766B2 (en) * 2017-10-15 2021-03-16 Gsi Technology Inc. Precise exponent and exact softmax computation
KR102676221B1 (ko) 2017-10-23 2024-06-19 삼성전자주식회사 음성 인식 방법 및 장치
US11030997B2 (en) 2017-11-22 2021-06-08 Baidu Usa Llc Slim embedding layers for recurrent neural language models
US10929746B2 (en) 2017-11-27 2021-02-23 Samsung Electronics Co., Ltd. Low-power hardware acceleration method and system for convolution neural network computation
US10725742B2 (en) * 2018-06-05 2020-07-28 Texas Instruments Incorporated Transcendental function evaluation
KR20200004002A (ko) * 2018-07-03 2020-01-13 삼성전자주식회사 메모리 장치 및 그것의 동작 방법
KR20200064264A (ko) 2018-11-28 2020-06-08 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
US10949498B1 (en) * 2019-03-13 2021-03-16 Xlnx, Inc. Softmax circuit
CN112307014A (zh) * 2019-07-31 2021-02-02 北京百度网讯科技有限公司 用于减少参数表存储空间的方法、装置、设备和计算机可读存储介质

Also Published As

Publication number Publication date
EP3809285B1 (en) 2023-05-10
US20210117155A1 (en) 2021-04-22
EP3809285A1 (en) 2021-04-21
US12039288B2 (en) 2024-07-16

Similar Documents

Publication Publication Date Title
US20210004663A1 (en) Neural network device and method of quantizing parameters of neural network
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
KR102278661B1 (ko) 대안적인 루프 제한
CN112668691A (zh) 具有数据处理的方法和装置
US11630997B2 (en) Method and apparatus with bit-serial data processing of a neural network
US11636306B2 (en) Implementing traditional computer vision algorithms as neural networks
US20200151573A1 (en) Dynamic precision scaling at epoch granularity in neural networks
US20200193277A1 (en) Non-volatile memory device including arithmetic circuitry for neural network processing and neural network system including the same
KR20190066473A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
EP3839832A1 (en) Method and apparatus with neural network convolution operation
US11651201B2 (en) Memory device including arithmetic circuit and neural network system including the same
CN112598120A (zh) 数据处理的方法和设备
US11886985B2 (en) Method and apparatus with data processing
CN113469354B (zh) 受存储器限制的神经网络训练
EP3528181A1 (en) Processing method of neural network and apparatus using the processing method
CN113065632A (zh) 验证用于图像识别的神经网络的训练的方法和设备
US11636569B1 (en) Matrix transpose hardware acceleration
CN113407747A (zh) 硬件加速器执行的方法、硬件加速器和神经网络装置
US12014505B2 (en) Method and apparatus with convolution neural network processing using shared operand
KR20200072308A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
KR20210045287A (ko) 데이터를 처리하는 방법 및 장치
US12026617B2 (en) Neural network method and apparatus
US20230385025A1 (en) Method and apparatus with repeated multiplication
CN115861862A (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