CN114442994A - 低功率、低内存乘法和累加(mac)单元 - Google Patents

低功率、低内存乘法和累加(mac)单元 Download PDF

Info

Publication number
CN114442994A
CN114442994A CN202111126072.7A CN202111126072A CN114442994A CN 114442994 A CN114442994 A CN 114442994A CN 202111126072 A CN202111126072 A CN 202111126072A CN 114442994 A CN114442994 A CN 114442994A
Authority
CN
China
Prior art keywords
bits
index
quantization
mac
groups
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
CN202111126072.7A
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN114442994A publication Critical patent/CN114442994A/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/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/4876Multiplying
    • 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
    • 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/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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请涉及与低功率、低内存乘法和累加(MAC)单元相关的技术。在示例中,MAC单元执行MAC运算,MAC运算表示数的乘法。基于量化和量化值的聚类来至少压缩一个数的位表示,由此使用索引位而非实际的位表示。将索引位加载到索引缓冲区中,并且将另一个数的位表示加载到输入缓冲区中。索引位被用于查找,以基于该位表示来确定是否将相应位表示和移位运算应用到输入缓冲区,然后进行累加运算。

Description

低功率、低内存乘法和累加(MAC)单元
技术领域
本申请涉及与低功率、低内存乘法和累加(MAC)单元相关的技术。
背景技术
在处理器的硬件级别,可以将变量的值量化,并且可以由位序列表示量化。进一步地,可以基于位表示来使用乘法和累加(MAC)运算。
在深度神经网络(DNN)应用(例如,图像处理、视频识别)中,可以使用量化来表示由DNN使用的值。通常,DNN的训练和推理中计算量最大的运算是MAC运算。在计算中,尤其是在数字信号处理器(DSP)级别,MAC运算可以计算两个数的乘积并将该乘积添加到累加器中。执行该运算的硬件单元被称为MAC单元。MAC运算修改累加器a:a←a+(b*c)。当在MAC运算中使用浮点数时,可能执行两次舍入(常见于许多DSP中)或一次舍入。DNN可以使用数百万到数十亿的浮点权重,并且因此浮点MAC运算消耗大量电力。当DNN部署到具有有限的内存占用和功率预算的边界装置或物联网(IoT)装置(诸如手机、固态驱动器(SSD)或相机)时,这将成为关键问题。
发明内容
描述了技术和系统,技术和系统涉及实施MAC运算的低功率、低内存MAC单元。MAC运算可以用于但不限于DNN训练和/或DNN推理。
在一个示例中,一种系统实施了一种方法。该方法包括确定第一数将与第二数相乘,并且执行MAC运算以将第一数与第二数相乘。执行MAC运算包括:确定与第一数相关联的量化级别的索引,其中该索引由“m”个位表示,其中量化级别由“l”个位表示,并且其中“l”大于“m”。执行MAC运算还包括:通过在查找表中至少使用索引来确定“r”组“k”位(即,“r”个组,每个组具有“k”个位),其中“r*k”等于“l”,并且其中“l”个位包括“r”组“k”位。执行MAC运算还包括:在应用到输入缓冲区的移位运算和累加运算中使用“r”组“k”位,输入缓冲区存储第二数的位表示。
描述该说明性示例并非为了限制或限定本公开,而是提供示例以帮助理解。在具体实施方式中讨论了附加的实施例和示例,并且提供了进一步的描述。
附图说明
可以通过参照下面的附图来实现对各个实施例的性质和优点的理解。
图1示出根据本公开的特定实施例的实施人工智能(AI)推理引擎的处理器的示例。
图2示出根据本公开的特定实施例的在训练时可以用作AI推理引擎的AI模型的示例。
图3示出根据本公开的特定实施例的用于执行基于压缩的MAC运算的流程的示例。
图4示出根据本公开的特定实施例的量化值的示例。
图5示出根据本公开的特定实施例的目标权重分布的示例。
图6示出根据本公开的特定实施例的基于目标权重分布的量化值的聚类的示例。
图7示出根据本公开的特定实施例的MAC单元的示例。
图8示出根据本公开的特定实施例的由MAC单元执行MAC运算的示例性流程。
图9示出根据本公开的特定实施例的由MAC单元执行MAC运算的另一示例性流程。
图10示出根据本公开的特定实施例的压缩量化级别的另一示例性流程。
图11示出根据本公开的特定实施例的基于压缩的MAC运算的计算系统的示例。
具体实施方式
描述了与低功率、低内存MAC单元相关的技术。在示例中,装置确定应当执行两个数的乘法。在硬件级别,由MAC单元基于这两个数的位表示来执行MAC运算。可以将数中的至少第一个量化以生成与第一数的量化级别相对应的第一位表示。第一位表示与量化级别的索引相关联,其中该索引具有相对较少的位数量。换言之,索引表示第一位表示的压缩。可以使用灵活的二次方(FPoT)非均匀量化来进行量化,以允许量化级别的目标分布。将索引存储为第一数的相应量化,而非存储第一位表示。在MAC运算期间,使用第一寄存器,由此该第一寄存器的大小与索引的位数量相对应。第二寄存器被用于第二数的第二位表示。通过基于索引确定第一位表示来执行解压。将第一位表示的一部分输入到第一寄存器以执行移位运算,之后对第二寄存器执行累加运算。针对第一位表示的每个剩余部分来重复移位运算和累加运算。下文中,累加运算的结果至少部分地表示两个数的乘法。当使用灵活的PoT非均匀量化时,可以将量化级别的目标分布实现成基本覆盖目标动态范围。另外,因为使用索引而不是使用完整的位表示,所以可以节省内存存储空间。进一步地,因为MAC运算使用具有较少位数量(例如,与索引相对应)的寄存器,所以MAC单元计算效率可以更高。因此,总而言之,MAC单元不仅可以具有低功率(归因于计算效率)、低内存(归因于内存存储效率),而且还可以基本覆盖目标动态范围。
为了说明,考虑在用于图像处理的装置上实施的DNN推理引擎的示例。该引擎使用非线性变换,并且将变量与权重相乘,非线性变换中的每一个与DNN层的节点相对应。根据DNN的结构,权重可以以数百万甚至数十亿计。权重以16位浮点表示来量化。进而,将16位表示压缩为3位索引,该3位索引表示来自八个量化级别的权重量化级别。生成表,并将八个量化级别中的每一个的3位索引与相应16位浮点表示相关联。因此,存储数百万(或数十亿)个3位索引和表,而非存储数百万(或数十亿)个权重的16位浮点表示。为了将变量与权重相乘,MAC单元的输入缓冲区存储变量的位表示,并且MAC单元的权重缓冲区存储三个位的索引。权重缓冲区中的三个位用于查找表,以确定相应16位浮点表示。基于16位浮点表示的部分,将移位运算和累加运算应用到输入缓冲区,其结果至少部分表示变量与权重相乘。
为了解释清楚,结合DNN来描述本公开的实施例。然而,实施例不限于此,并且实施例类似地适用于任意其它类型的人工智能(AI)模型或可以至少部分地通过使用MAC单元在硬件中实施的任意的数的乘法。
图1示出根据本公开的特定实施例的实施AI推理引擎120的处理器110的示例。AI推理引擎可以是已经被训练成执行特定任务的AI模型。例如,AI模型是针对图像处理任务、视频任务、语音处理任务或任意其它任务训练的DNN。在这种情况下,AI推理引擎120是DNN推理引擎。处理器110的应用130可以针对任务通过对AI推理引擎120的调用来将数据输入到AI推理引擎,并且可以接收AI推理引擎120的指示执行任务的结果的输出数据。通过AI推理引擎120来执行任务可能涉及基本上大量的变换,变换中的每一个可以包括一个或多个数的乘法。例如,在DNN推理引擎的情况下,变换包括DNN的不同层的节点之间的非线性变换,非线性变换中的每一个将变量与两个节点之间的连接或边的权重相乘。可以通过使用MAC运算140来执行乘法中的一些或全部。例如,AI推理引擎120在硬件级别(例如,DSP级别)包括一个或多个MAC单元以执行MAC运算。
在示例中,处理器110被实施为装置的片上系统(SoC)。该装置可以是移动装置,诸如手机或可穿戴装置、IoT装置、边界装置或任意其它适用于托管AI推理引擎120的装置。
AI推理引擎120可以在不同的装置上进行离线训练,在这种情况下,这两个装置共同表示一个系统。附加地或可选地,AI推理引擎120可以在相同装置上进行训练,或者进行离线训练并在该装置上进行进一步训练。一旦经过训练,AI模型可以由处理器110上的硬件配置来表示。例如,在DNN的情况下,硬件配置可以表示节点之间边的权重。应用130可以表示在软件和/或固件中实施的程序代码并且可以依靠AI推理引擎120的推理来处理各种数据(例如,图像、视频、音频)。
图2示出根据本公开的特定实施例的在训练时可以用作诸如AI推理引擎120的AI推理引擎的AI模型的示例。在图2的说明性示例中,AI模型200是诸如DNN的神经网络200,但也可能是其它类型的AI模型。将表示诸如应用130的应用的输入数据的特征图202输入到神经网络200。进而,神经网络200输出执行任务(例如,图像分类、对象检测、概率指示)的结果204。虽然示出了与单个任务相对应的单个结果,但是根据神经网络的结构该输出可以包括多个结果。进一步地,虽然特征图202被示出为输入,但是可以将输入数据直接输入到神经网络200的输入层,其中该输入层可以生成特征图202。
如图所示,神经网络200包括多个层。将来自特征图202的特征连接到神经网络200的输入层210中的输入节点。结果204从输出层230的输出节点生成。神经网络200的一个或多个隐藏层220存在于输入层210与输出层230之间。对神经网络200进行预训练,以通过不同层210、220和230来处理来自特征图202的特征,以便输出结果204。
在一些实施例中,神经网络200是多层神经网络,该多层神经网络表示诸如人工智能DNN的互连节点网络,其中关于节点的知识(例如,关于由节点表示的具体特征的信息)在层之间共享,并且也保留每个层的特定知识。每个节点表示一条信息。可以通过节点到节点的互连来在节点之间交换知识。到神经网络200的输入激活一组节点。进而,该组节点激活其它节点,从而传播关于该输入的知识。该激活过程在其它节点上重复进行,直到选择和激活输出层中的节点。
如图所示,神经网络200包括层的层级,层的层级表示以前馈方式互连的节点的层级。输入层210存在于最低层级,并且包括本文中被称为输入节点的一组节点。当将特征图202输入到神经网络200时,输入层210的输入节点中的每一个连接到特征图的每个特征。连接中的每一个都具有权重。这些权重为从神经网络200的训练中得到的一组参数。输入节点通过对这些特征应用激活函数来变换特征。将从该变换中得到的信息传递到层级中更高级别的节点。
输出层230存在于最高层级级别,并且包括一个或多个输出节点。每个输出节点提供具体结果204。隐藏层220存在于输入层210与输出层230之间。隐藏层220包括“N”个隐藏层,其中“N”为大于或等于1的整数。进而,隐藏层中的每一个还包括本文中被称为隐藏节点的一组节点。示例性隐藏层包括上采样、卷积、全连接层和数据变换层。
在隐藏层220的最低级别,该层的隐藏节点与输入节点互连。在隐藏层220的最高级别,该级别的隐藏节点与输出节点互连。输入节点不直接与输出节点互连。如果存在多个隐藏层,则输入节点与最低隐藏层的隐藏节点互连。进而,这些隐藏节点与下一隐藏层的隐藏节点互连,依此类推。
互连表示所获知的关于两个互连节点的一条信息。互连具有可以调整(例如,基于训练数据集)的数权重240,使神经网络200适应输入并能够学习。
通常,隐藏层220允许在输出层230的输出节点之中共享关于输入层210的输入节点的知识。为此,通过隐藏层220对输入节点应用变换f,从而将输入X变换为输出Y。通常,变换包括由节点表示的变量乘以该节点与下一层级级别的节点的连接的权重。变换还可以是非线性的。例如,在第一层级,x∈X是输入。该层级的第一节点连接到下一层级级别的第二节点,其中该连接具有权重w1。将x在第一节点处进行变换,其中y1=w1×x。在下一层级级别,在第二节点处使用非线性变换,其中y2=f(y1+b1),并且b1是偏置项。进而,将第二节点连接到下一层级级别的第三节点。将这两层之间的变换设置为y3=w2×y2,其中w2是两个节点之间的权重。
在示例中,输入信号x通常是32位或64位浮点格式(FLP-32或FLP-64)。边权重矩阵W1和W2以及偏置项b1和b2也是FLP-32或FLP-64格式。w1×x和w2×y2的浮点乘法消耗了大部分功率。f(.)是诸如ReLu函数的激活函数。如图5所示,W1和W2中的权重通常遵循高度非均匀概率分布。
在训练期间,神经网络200还使用损失函数l(或也被称为成本函数c)来寻找最优解。最优解表示没有解的损失小于最优解的损失的情况。在示例中,损失函数包括均方误差函数,其将全部示例对(x,y)的输出f(x)与目标值y之间的平均平方误差最小化。使用梯度下降来将损失函数最小化的反向传播算法被用于对神经网络200进行训练。
这样,隐藏层220保留关于输入节点的知识。基于隐藏节点与输入节点的互连,在输出节点之间共享一组知识。
图3示出根据本公开的特定实施例的用于执行基于压缩的MAC运算的流程的示例。该流程可以由包括一个或多个处理器(诸如图1的处理器110)的系统来执行。该流程还结合AI推理引擎的权重(诸如图2的神经网络200的权重)来进行说明。然而,该流程不限于此,并且类似地适用于针对待相乘的数的位表示的MAC运算。如下所述,该流程的操作可以由系统执行。用于执行操作的指令中的一些或全部可以被实施为硬件电路和/或被存储为系统的非暂时性计算机可读介质上的计算机可读指令。在实施时,该指令表示包括可由系统的处理器运行的电路或代码的模块。这种指令的使用将系统配置成执行本文所述的具体操作。与相关处理器组合的每个电路或代码表示用于执行相应操作的装置。虽然操作以特定顺序被示出,但是应当理解的是,不需要特定顺序,并且一个或多个操作可以被省略、跳过、并行执行和/或重新排序。
如图所示,流程开始于操作302,其中系统对AI推理引擎的权重进行量化。权重是乘法中使用的数的示例。可能存在不同的量化方案。在第一示例中,使用均匀量化并且将该均匀量化表示为
Figure BDA0003278740530000081
Figure BDA0003278740530000082
其中α为缩放因子,b为位分辨率(例如,目标位数量)。在第二示例中,使用PoT量化并且将该PoT量化表示为
Figure BDA0003278740530000083
其中α为缩放因子,b为位分辨率。在第三示例中,使用自适应二次方(APoT)量化并且将该自适应二次方量化表示为
Figure BDA0003278740530000084
Figure BDA0003278740530000085
其中
Figure BDA0003278740530000086
其中γ为缩放因子,并且其中k和n为整数。在第四示例中,使用FPoT量化并且将该FPoT量化表示为
Figure BDA0003278740530000087
其中
Figure BDA0003278740530000088
β为缩放因子,k和r为整数,k×r为位分辨率。这些量化示例中的任意一个的输出是每个权重的量化值,其中该量化值可以由诸如浮点表示或定点表示的位表示来表示。相对于平均量化,当在硬件中实施PoT量化时,因为可以通过在寄存器中移位来实施,所以可以提供更好的功率和内存性能。相对于PoT,APoT可以提供更高的量化值的分辨率。相对于APoT,如下一附图进一步描述的,因为FPoT允许在目标动态范围内更好地分布量化值并因此就根据目标权重分布来将量化值聚类成簇而言允许更大的灵活性,所以可以进一步提高功率和内存性能。
在操作304,系统将量化后的权重压缩。使用索引,而非使用量化值(浮点或定点)的位表示,其中该索引具有较少的位数量并且在表(例如,压缩表或码本)中与量化级别的位表示相关联。在图10中进一步描述了该压缩过程的示例。简而言之,将量化值聚类到“Q”个组中,其中“Q”为整数并且其中每个组表示量化级别并与该量化级别的位表示相关联。聚类可以考虑AI模型的性能(例如,可以进行细微调整使得性能不会受到显著影响)。当使用FPoT量化时,聚类还可以考虑目标权重分布(例如,簇可以被定义成实现该分布)。用于索引的位数是“Q”的函数(例如,位数量=2Q)。因此,存储对量化值进行分组的量化级别的索引,而非存储量化值中的每一个的位表示,其中该索引具有比位表示更少的位数量并且在表中与其相关联。
在操作306,系统基于压缩后的权重来执行MAC运算。参照AI推理引擎,可以执行MAC运算以将变量与作为变换函数的一部分的权重相乘。使用权重的索引,从而该索引的位被加载到权重缓冲区中。查找这些位,以确定量化级别的相应位表示。将变量的位加载到输入缓冲区中,并且基于位表示进行移位和累加。图9中进一步描述MAC运算的示例。
图4示出根据本公开的特定实施例的量化值400的示例。此处,FPoT量化被用于生成量化值。横轴表示浮点输入。纵轴表示每个FPoT量化的浮点输出。在图4中示出16位分辨率,其中K=4并且r=4。曲线中的每个点表示量化值。如图所示,量化值400在整个动态范围内具有相当好的分布。相比而言,如果使用APoT或PoT量化,APoT或PoT量化的分布在末端更稀疏并且在中心更密集。因此,如在图5和图6中进一步描述的,FPoT量化允许改进的量化值的聚类,以实现目标分布。
图5示出根据本公开的特定实施例的目标权重分布的示例。权重与诸如图2的神经网络模型200的AI模型相对应。在左侧,示出了裁剪之前的权重的第一权重分布510。在右侧,示出了裁剪之后的权重的第二权重分布520。横轴表示权重的值。纵轴表示权重的计数。权重中的每一个都可以被量化为一个量化值。因此,第一权重分布510和第二权重分布520可以类似地表示在裁剪之前和之后的量化值的分布。如图5的示例所示,第一权重分布510和第二权重分布520是高度非均匀概率分布。当使用FPoT量化时,可以执行量化级别的聚类,以生成具有被设置为与第一权重分布510(在裁剪之前)或第二权重分布520(在裁剪之后)相同或接近的目标分布的簇。
图6示出根据本公开的特定实施例的基于目标权重分布的量化值的聚类600的示例。此处,量化值与图4的那些相对应。聚类600包括八个组(例如,Q=8),组中的每一个利用零至七之间的索引来进行索引(例如,Qi,其中i={0,1,2,…,7})。除了八之外的数量也是可能的,并且出于说明的目的在本文中提供该数量。每个组Qi表示量化级别。每个组Qi的大小(即,组Qi中包括的量化值的数量)被设置成实现目标权重分布(或者,类似地,目标权重量化值分布)。因此,组Qi之间的大小可以不同,使得每个组Qi中的量化值总计数可以遵循目标权重分布(例如,如图5所示,在裁剪之前或之后遵循非均匀概率分布)。在示例中,如图10中进一步描述的,k-means聚类迭代地生成组Qi,并且这些组的数量可以改变以满足目标性能。
另外,每个簇可以由统计点(如图6所示,组Q1中具有空白圆圈)来表示。统计点可能有不同定义,包括例如中心或平均值。统计点与具有位表示的量化值相对应。因此,组Qi中聚类的所有量化值由组Qi的统计点的单个位表示来表示。将每个组的索引“i”和统计点的位表示(和/或类似地,统计点的量化值)存储在表中,从而将索引“i”与位表示(和/或量化值)相关联。在MAC运算期间,可以在表的查找中使用索引的位,然后确定相应的组Qi和位表示。
图7示出根据本公开的特定实施例的MAC单元700的示例。在示例中,MAC单元700包括索引缓冲区702、输入缓冲区704、表706、累加器708和缩放因子710。当与AI推理引擎结合使用时,索引缓冲区702在本文中也可以被称为“权重缓冲区”。
在示例中,索引缓冲区702被用于加载待与第二数(例如,输入数)相乘的第一数的位。该位可以与第一数的压缩表示相对应并在本文中被称为索引位。例如,并且重新参照AI推理引擎,第一数是权重,并且索引位是量化级别的索引(例如,量化组Qi的索引“i”)。索引缓冲区702还可以存储表示第一数的符号的位(在图7中示出为“S”,其中“S”可以被设置为表示正数的“1”以及表示负数的“0”,反之亦然)。
输入缓冲区704被用于加载第二数的位。第二数可以是浮点表示或定点表示。该位在本文中被称为输入位。通常,输入缓冲区704大于索引缓冲区702。输入缓冲区704还可以存储表示第二数的符号的位(在图7中示出为“S”,其中“S”可以被设置为表示正数的“1”以及表示负数的“0”,反之亦然)。
表706可以是将索引的位与量化级别的位表示相关联的压缩表或码本。例如,表706中的每个索引是量化组Qi的索引“i”,其中量化组Qi是量化级别。表706将索引“i”与量化组Qi的统计点(和/或该统计点的实际量化值)的位表示相关联。
累加器708可以包括用以保存中间结果的累加器缓冲区。中间结果可以是输入缓冲区704中的输入位基于索引缓冲区702中的索引位的移位。中间结果还可以考虑第一数和第二数的符号。
缩放因子710可以是将累加器708的输出缩放的因子。该因子可以取决于量化的类型。例如,针对均匀或PoT量化,缩放因子710是α。针对APoT量化,缩放因子710是γ。针对FPoT量化,缩放因子710是β。
在操作中,将索引位和符号位加载到索引缓冲区702中。将输入位和符号位加载到输入缓冲区704中。索引位被用于查找表706并确定相应的位表示。基于该位表示,执行输入位的一组移位(例如,向左移位),每次移位之后由累加器708进行累加运算。由累加器708使用来自索引缓冲区702和输入缓冲区704的符号位来执行XOR运算。下文中,累加器708的输出由缩放因子710来缩放。缩放后的输出与第一数和第二数相乘的位表示相对应。
图3示出基于量化值的位表示的压缩来执行操作的流程的示例。该流程可以由包括一个或多个处理器(诸如图1的处理器110)的系统来执行。还结合AI推理引擎的权重(诸如图2的神经网络200的权重)来说明该流程。然而,该流程不限于此,并且类似地适用于针对待相乘的数的位表示的MAC运算。如下所述,可以由系统执行该流程的操作。用于执行操作的指令中的一些或全部可以被实施为硬件电路和/或被存储为系统的非暂时性计算机可读介质上的计算机可读指令。在实施时,该指令表示包括可由系统的处理器运行的电路或代码的模块。这种指令的使用将系统配置成执行本文所述的具体操作。与相关处理器组合的每个电路或代码表示用于执行相应操作的装置。虽然操作以特定顺序被示出,但是应当理解的是,不需要特定顺序,并且一个或多个操作可以被省略、跳过、并行执行和/或重新排序。
图8示出根据本公开的特定实施例的由MAC单元执行MAC运算的示例性流程。如图所示,该流程可以开始于操作802,其中系统确定第一数将与第二数相乘。例如,系统包括AI推理引擎。在该示例中,第一数是由AI推理引擎实施的AI模型的权重。第二数是AI模型的变换函数的变量,其中变换函数包括变量与权重相乘。
在操作804,系统执行MAC运算,以将第一数与第二数相乘。MAC运算可以通过使用位表示来执行,并且可以包括一组移位运算,在每个移位运算之后进行累加运算。在示例中,至少第一数的位表示是压缩表示。使用索引而非使用位表示来作为索引缓冲区的输入。该索引与表示一组量化值的q个量化级别(例如,“组Qi”)相关联。然后在表的查找中使用索引位来确定量化级别的位表示,其中根据位表示进行移位运算。
在示例中,第一数的量化是FPoT量化,该量化得到第一数的量化值和相关联的位表示。在该示例中,如图8所示,执行MAC运算804可以包括多个子操作810至830。
在第一子操作810,系统确定与第一数相关联的量化级别的n索引,其中该索引由“m”个位表示,其中量化级别由“l”个位表示,并且其中“l”大于“m”。例如,“m”个位被用于表示对AI模型的权重的量化值进行聚类的组Qi。虽然可以是定点格式,但是“l”也可以是32或64,并且可以与FLP-32或FLP-64格式相对应。
在第二子操作820,系统通过在表的查找中至少使用索引来确定“r”组“k”位,其中“r*k”等于“l”,并且其中“l”个位包括“r”组“k”位。“r”和“k”可以是如图3中描述的FPoT量化的参数。第一数的“l”个位表示可以被划分为“r”个组,“r”个组中的每一个长达“k”个位。
在第三子操作830,系统在应用到输入缓冲区的移位运算和累加运算中使用“r”组“k”位,输入缓冲区存储第二数的位表示。位表示可以为浮点表示或定点表示,并且该位表示可以不被压缩(虽然可以将该位表示进行压缩,在这种况下,可以将另一表用来确定该位表示并将其加载到MAC单元的输入缓冲区中)。每次移位运算都将输入位向左移位一个组“r”的“k”个位(例如,如果“r”等于四并且“k”等于三,则将进行四次移位运算,每次将输入位向左移位三个)。移位运算之后可以是累加运算和XOR运算,以更新结果位的符号。这些位可以通过FPoT量化的缩放因子β进行缩放,从而得到乘法的输出位表示。
图9示出根据本公开的特定实施例的由MAC单元执行MAC运算的另一示例流程。该流程可以作为图8的操作804的子操作来执行。此处,尽管该流程可以类似地应用于其它类型的数和/或数乘法,但是该流程是结合AI推理引擎的权重来具体描述的。虽然该流程可以类似地应用于其它类型的量化,但是该流程还结合FPoT量化来进行说明,其中,一旦发生权重索引的解压,则移位运算的次数和每次移位运算的移位量可以取决于具体的量化类型(例如,针对均匀量化,移位为1;针对PoT量化,移位为“b”;针对APoT,移位为“k”)。为了解释清楚,FPoT量化被示出为“k”和“r”中的每一个都等于4。进一步地,使用了ceil(log2(Q))=3或八个完全非均匀量化级别(例如,“m”等于3,使得索引除了其符号位之外还由三个位表示)。这八个值中的每一个都可以由集合
Figure BDA0003278740530000141
中的四个值的总和来表示。
如图所示,该流程可以开始于操作902,其中系统将权重加载到权重缓冲区并将输入值加载到输入缓冲区。加载权重可以包括除了加载符号位之外还加载权重的3位索引。输入值是待与权重相乘的变量的值。除了存储符号位之外,输入缓冲区还可以存储输入值的位表示的六个位。作为示例,对输入值使用高精度定点格式,但也可以是其它格式。
在操作904,系统使用权重值来查找“k*r”个位。“k*r”与量化级别的“l”个位相对应。查找可以使用权重的索引位,其中在每次进行操作902时将这些索引位加载到索引缓冲区中。例如,3位索引被用于查找“k*r”个位。该查找识别(s1,s2,...sr)集合(例如,四个集合)“si”,其中每个集合具有来自表的“k”个位(例如,四个位)。
在操作906,针对i=1:r(例如,针对1至4),系统将输入缓冲区向左移位si个位并将被移位的输入缓冲区累加到累加器缓冲区中。例如,执行四个移位运算。在第一运算之后,将输入缓冲区向左移动s1个位。在第二运算之后,将输入缓冲区向左移动s2个位。在第三运算之后,将输入缓冲区向左移动s3个位。并且在第四运算之后,将输入缓冲区向左移动s4个位。在第一移位运算、第二移位运算和第三移位运算中的每一个之后进行累加运算。
在操作908,系统使用来自权重缓冲区和输入缓冲区的符号位的XOR来作为累加器的符号位。例如,对符号位执行XOR运算,并且将结果符号设置为累加位的符号。
在操作910,系统将缩放因子应用于累加器的输出。例如,将输出与FPoT量化的β相乘。这种乘法可以以全精度定点或浮点格式或者也以FPoT格式完成,而后者需要从另一允许值大于1的PoT总和集合中选择β缩放因子。
图10示出根据本公开的特定实施例的用于压缩量化级别的另一示例流程。可以在图8和图9的流程之前执行该流程,以生成量化级别和相关压缩。该流程可以在除了执行图8和图9流程的装置之外的装置上执行。一旦执行该流程,结果可以被用于实施AI推理引擎,图8和图9的流程可以应用于该AI推理引擎。虽然该流程可以类似地应用于其它类型的量化,但是此处结合FPoT量化来说明该流程,其中一旦生成量化值,就可以将这些值聚类并且可以基于聚类来定义压缩。尽管如此,并且如结合图4至图6所描述的,FPoT可以提供聚类的附加的灵活性,以满足目标权重分布。
根据FPoT量化,针对可以由浮点数表示的全部值,存在可以引起简单的乘法运算的一些值。例如,如果浮点数x(被乘数)与1/8(乘数)相乘,则指数(包括符号)可以简单地减去三。如果定点数x(被乘数)与1/8(乘数)相乘,则被乘数的定点部分(mantissa)可以移位三位(向左补零)。保留该属性的全部值形成集合“S”。FPoT后的构思是确保全部量化后的权重都属于“S”,以便可以轻松完成乘法。
结合将浮点DNN变换为FPoT格式来描述图10的流程。当使用FPoT量化时,将DNN中的权重量化为特定量化值,其可以在以下等式中描述:
Figure BDA0003278740530000151
其中
Figure BDA0003278740530000152
Figure BDA0003278740530000153
其中β是缩放因子,并且其中k和r是整数,并且k×r为位分辨率。这个等式基本表示每个量化后的权重的值属于集合“S”,集合“S”是“C”的子集,“C”包含“r”个数的总和的全部候选量化值,每个候选量化值都属于PoT分式集合。β是全精度缩放因子。
如图所示,流程可以开始于操作1002,其中系统基于PoT量化来生成候选量化值的集合“C”。例如,集合“C”为
Figure BDA0003278740530000161
其中
Figure BDA0003278740530000162
在操作1004,系统找到权重的非均匀量化方案,以使预测精度损失可接受:w’=g(w)。在示例中,k-means聚类算法被用于找到“Q”组权重,其中“Q”为非均匀量化的量化级别的数量,并且每个聚类的中心(或其一些其它统计点)为量化级别。根据该操作,将候选量化值聚类在“Q”个簇中,其中“Q”个簇中的每一个包括候选量化值的子集并且由基于该子集的统计点来表示。如图5至图6所示,可以基于量化值的目标分布来进行聚类。
在操作1006,针对w’中的每个权重,系统将其替换为集合“C”中最接近的数。例如,针对“Q”个簇的第一簇,系统利用集合“C”中的值来替换统计点。该值可以是最接近的数。可以对“Q”个簇的每个剩余簇重复和执行该替换。
在操作1008,系统使用来自w’的权重来确定AI推理引擎的性能。例如,将真实数据(例如,已知数据,对于该已知数据,AI推理输出是已知的)输入到AI推理引擎,以测量性能。性能可以是已知输出与由AI推理引擎产生的实际输出的函数。
在操作1010,系统确定该性能是否可接受。例如,可以将该性能与性能阈值进行比较。如果大于性能阈值,则该性能可接受,并且在操作1010之后进行操作1020。否则,该性能不可接受,并且在操作1010之后进行操作1030。性能阈值可以取决于使用AI推理引擎的应用。
在操作1020,该性能可接受,并且系统从{0,1,…,Q-1}的集合中对“Q”个量化级别标记标签。每个标签都是索引。标签形成集合“S”。生成表“T”,以将量化级别索引(0,1,…,Q-1)与其相对应的“r*k”位表示相关联,而非使用“r*k”个位来表示每个权重。每个权重都可以由ceil(log2(Q))=位数量来表示(例如,索引位的数量“m”为ceil(log2(Q)))。
在操作1030,该性能不可接受,并且系统改变“k”、“r”和/或“Q”中的任意一个。例如,这些参数中的任意一个或每一个都可以增加一或一些其它整数增量。如果改变“k”或“r”中的任意一个,则流程循环回到操作1002,以重复操作1002至1010。如果改变“Q”,则流程循环回到操作1004,以重复操作1004至1010。
在示例中,操作1008至1020(包括通过操作1030的任意循环)表示生成表“T”的操作。该表“T”包括对应于第一簇的第一索引,并且将第一索引与该第一簇的统计点的值的“l”位表示(或等效地,“r*k”位表示)相关联。该表包括索引与剩余簇的剩余统计点的“l”位表示之间的类似关联。
在操作1022,系统再次确定AI推理引擎的性能是否可接受。此处,通过使用表中的量化级别位表示来将AI模型的权重初始化。基于初始化后的权重来对AI模型进行重新训练。例如,系统使用从操作1020获得的权重的浮点表示来将浮点AI模型初始化,并且使用浮点权重来对AI模型进行重新训练。然后确定AI模型的性能,并且和与操作1010中的性能阈值相同或不同的性能阈值进行比较。如果该性能可接受,则在操作1022之后进行操作1040。否则,在操作1022之后进行操作1050。
在操作1040,该性能可接受,并且输出表“T”。该表可以随后被用于位表示的压缩和解压缩(如果有,则根据操作1030进行调整),该位表示使用操作1002的利用参数“k”和“r”设置的FPoT量化。
在操作1050,该性能不可接受,与操作1022类似,将系统重新初始化并重新训练AI模型,并且流程循环返回到操作1022。
图11示出根据本公开的特定实施例的诸如通过包括图1的处理器110的基于压缩的MAC运算的计算系统的示例。图11仅是对本公开的实施例的说明,并且不限制如权利要求书中记载的本公开的范围。在一个实施例中,系统为计算机系统1100,计算机系统1100通常包括监测器1110、计算机1120、用户输出装置1130、用户输入装置1140、通信接口1150等。图1的错误校正系统100实施了计算机系统1100的组件中的一些或全部。
如图11所示,计算机1120可以包括处理器1160,处理器1160经由总线子系统与多个外围装置通信。这些外围装置可以包括用户输出装置1130、用户输入装置1140、通信接口1150以及诸如随机存取存储器(RAM)1170和磁盘驱动器1180的存储子系统。
用户输入装置1140包括用于将信息输入到计算机系统1120的全部可能类型的装置和机构。这些可以包括键盘,小键盘,集成到显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置以及其它类型的输入装置。在各个实施例中,用户输入装置1140通常被实现为计算机鼠标、轨迹球、触控板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置1140通常允许用户经由诸如点击按钮等命令来选择出现在监测器1110上的对象、图标、文本等。
用户输出装置1130包括用于从计算机系统1120输出信息的全部可能类型的装置和机构。这些可以包括显示器(例如,监测器1110)、诸如音频输出装置等的非视觉显示器。
通信接口1150提供到其它通信网络和装置的接口。通信接口1150可以用作用于从其它系统接收数据以及向其它系统传输数据的接口。通信接口1150的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、综合服务数字网络(ISDN))、(异步)数字用户线(DSL)单元、火线接口、USB接口等。例如,通信接口1150可以连接到计算机网络、火线总线等。在其它实施例中,通信接口1150可以物理集成到计算机1120的主板上,并且可以为诸如软DSL等的软件程序。
在各个实施例中,计算机系统1100还可以包括能够通过诸如HTTP、TCP/IP、RTP/RTSP协议等网络进行通信的软件。在本公开的可选实施例中,还可以使用其它通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机1120包括作为处理器1160的来自Intel的一个或多个XeonTM微处理器。进一步地,在一个实施例中,计算机1120包括基于UNIX的操作系统。
RAM 1170和磁盘驱动器1180是被配置成存储诸如本公开的实施例的包括可运行计算机代码、人类可读代码等的数据的有形介质的示例。其它类型的有形介质包括:软盘;可移动硬盘;诸如CD-ROM、DVD和条形码的光存储介质;诸如闪速存储器、非暂时性只读存储器(ROMS)和电池供电的易失性存储器的半导体存储器;网络存储装置等。RAM 1170和磁盘驱动器1180可以被配置成存储提供本公开的功能的基本编程和数据构造。
提供本公开的功能的软件代码模块和指令可以被存储在RAM 1170和磁盘驱动器1180中。这些软件模块可以由处理器1160运行。RAM 1170和磁盘驱动器1180还可以提供用于存储根据本公开中使用的数据的存储库。
RAM 1170和磁盘驱动器1180可以包括多个存储器,包括用于在程序运行期间存储指令和数据的主RAM以及存储固定的非暂时性指令的ROM。RAM 1170和磁盘驱动器1180可以包括提供针对程序和数据文件的持久(非易失性)存储的文件存储子系统。RAM 1170和磁盘驱动器1180还可以包括可移动存储系统,诸如可移动闪速存储器。
总线子系统提供用于使计算机1120的各个组件和子系统根据预期彼此通信的机构。尽管总线子系统被示意性地示出为单个总线,但是总线子系统的可选实施例可以利用多个总线。
图11是能够实现本公开的计算机系统的表示。对于本领域的普通技术人员而言将显而易见的是,许多其它硬件和软件配置适用于本公开。例如,计算机可以是台式、便携式、机架式或平板电脑配置。附加地,计算机可以是一系列联网的计算机。进一步地,预期使用诸如以下的其它微处理器:奔腾(PentiumTM)或安腾(ItaniumTM)微处理器、超威(AdvancedMicro Devices,Inc.)的皓龙(OpteronTM)或速龙(AthlonXPTM)微处理器等。进一步地,预期使用诸如以下的其它类型的操作系统:微软公司(Microsoft Corporation)的
Figure BDA0003278740530000201
Figure BDA0003278740530000202
等;太阳微系统公司(Sun Microsystems)的Solaris;LINUX;UNIX等。在其它实施例中,上述技术可以在芯片或辅助处理板上实施。
本公开的各个实施例可以以软件或硬件或两者组合中的逻辑的形式来实施。该逻辑可以作为指令集合而被存储在计算机可读或机器可读的非暂时性存储介质中,该指令集合适用于引导计算机系统的处理器来执行本公开的实施例中公开的一组步骤。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适用于引导信息处理装置来执行在本公开的实施例中公开的一组步骤。基于本文中提供的公开和教导,本领域普通技术人员将理解实施本公开的其它方式和/或方法。
本文中描述的数据结构和代码可以部分或全部被存储在计算机可读存储介质和/或硬件模块和/或硬件装置上。计算机可读存储介质包括但不限于:易失性存储器;非易失性存储器;诸如磁盘驱动器、磁带、CD和DVD的磁和光存储装置;或者现在已知或以后开发的能够存储代码和/或数据的其它介质。本文中所述的硬件模块或设备包括但不限于:专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器以及/或者现在已知或以后开发的其它硬件模块或设备。
本文描述的方法和过程可以部分或全部地被实现为计算机可读存储介质或装置中存储的代码和/或数据,以使在计算机系统读取和运行代码和/或数据时,计算机系统执行相关联的方法和过程。这些方法和过程也可以部分或全部地被实现在硬件模块或设备中,以使在激活硬件模块或设备时,硬件模块或设备执行相关联的方法和过程。可以使用代码、数据和硬件模块或设备的组合来实现本文公开的方法和过程。
虽然已经出于清楚理解的目的比较详细地描述了前述实施例,但是本公开并不限于所提供的细节。存在许多可选方式来实施本公开。所公开的实施例是说明性的和非限制性的。

Claims (20)

1.一种由系统实施的方法,所述方法用于执行乘法和累加运算即MAC运算,所述方法包括:
确定第一数将与第二数相乘;并且
执行所述MAC运算,以将所述第一数与所述第二数相乘,其中执行所述MAC运算包括:
确定与所述第一数相关联的量化级别的索引,其中所述索引由“m”个位来表示,其中所述量化级别由“l”个位来表示,并且其中“l”大于“m”,
通过在表的查找中至少使用所述索引来确定“r”组“k”位,其中“r*k”等于“l”并且其中“l”个位包括所述“r”组“k”位,并且
在应用到输入缓冲区的移位运算和累加运算中使用所述“r”组“k”位,所述输入缓冲区存储所述第二数的位表示。
2.根据权利要求1所述的方法,其中所述系统包括人工智能推理引擎即AI推理引擎,其中所述第一数包括AI模型的权重,其中所述第二数包括所述AI模型的变换函数的变量,并且其中所述变换函数包括将所述变量与所述权重相乘。
3.根据权利要求1所述的方法,其中使用所述“r”组“k”位包括:
将所述索引的“m”个位输入到索引缓冲区,
通过在所述表的查找中使用来自所述索引缓冲区的“m”个位,确定来自所述“r”组“k”位的第一组,其中所述第一组包括“l”个位中的“k”个位,并且其中“k”小于“l”,
将所述输入缓冲区移位所述第一组的“k”个位,并且
在累加器缓冲区中累加被移位后的输入缓冲区。
4.根据权利要求3所述的方法,其中使用所述“r”组“k”位进一步包括针对所述“r”个组中的每个剩余的组重复进行所述移位运算和所述累加运算。
5.根据权利要求1所述的方法,进一步包括:
(a)基于二次方量化即PoT量化来生成候选量化值的集合“C”;
(b)将所述候选量化值聚类在“Q”个簇中,其中所述“Q”个簇中的每一个包括所述候选量化值的子集并且由基于所述子集的统计点来表示;
(c)针对所述“Q”个簇中的第一簇,利用来自所述集合“C”的值来替换所述统计点;并且
(d)生成所述表,其中所述表包括与所述第一簇相对应的第一索引并且所述表将所述第一索引与所述值的“l”位表示相关联。
6.根据权利要求5所述的方法,其中所述PoT量化包括被表示为
Figure FDA0003278740520000021
的PoT非均匀量化,其中
Figure FDA0003278740520000022
并且其中β为缩放因子。
7.根据权利要求5所述的方法,其中基于量化值的目标分布来进行所述聚类。
8.根据权利要求5所述的方法,其中利用来自所述集合“C”的最接近的数来替换所述统计点。
9.根据权利要求5所述的方法,其中所述系统包括人工智能推理引擎即AI推理引擎,其中所述方法进一步包括:
通过使用表示所述“Q”个簇的“Q”个统计点来确定所述AI推理引擎的性能,其中所述“Q”个统计点中的每一个包括所述AI模型的权重,并且其中基于所述性能来生成所述表。
10.根据权利要求11所述的方法,进一步包括:
基于所述性能,改变以下中的至少一个:“r”的值、“k”的值或“Q”的值。
11.根据权利要求10所述的方法,进一步包括:
在改变所述“r”的值或所述“k”的值时,重复操作(a)至操作(c)。
12.根据权利要求10所述的方法,进一步包括:
在改变所述“Q”的值时,重复操作(b)至操作(c)。
13.根据权利要求5所述的方法,其中所述系统包括AI推理引擎,并且其中所述方法进一步包括:
通过使用来自所述表的量化级别位表示来将AI模型的权重初始化;并且
基于初始化后的权重来对所述AI模型进行重新训练。
14.一种系统,包括:
一个或多个处理器,其中一个或多个处理器中的至少一个:
确定第一数将与第二数相乘;并且
执行乘法和累加运算即MAC运算,以将所述第一数与所述第二数相乘,其中执行所述MAC运算包括:
确定与所述第一数相关联的量化级别的索引,其中所述索引由“m”个位来表示,其中所述量化级别由“l”个位来表示,并且其中“l”大于“m”,
通过在表的查找中至少使用所述索引来确定“r”组“k”位,其中“r*k”等于“l”并且其中“l”个位包括所述“r”组“k”位,并且
在应用到输入缓冲区的移位运算和累加运算中使用所述“r”组“k”位,所述输入缓冲区存储所述第二数的位表示。
15.根据权利要求14所述的系统,其中所述一个或多个处理器中的至少一个:
基于PoT量化来生成候选量化值的集合“C”;
将所述候选量化值聚类在“Q”个簇中,其中所述“Q”个簇中的每一个包括所述候选量化值的子集并且由基于所述子集的统计点来表示;
针对所述“Q”个簇中的第一簇,利用来自所述集合“C”的值来替换所述统计点;并且
生成所述表,其中所述表包括与所述第一簇相对应的第一索引并且将所述第一索引与所述值的“l”位表示相关联。
16.根据权利要求15所述的系统,其中所述PoT量化包括被表示为
Figure FDA0003278740520000041
的PoT非均匀量化,其中
Figure FDA0003278740520000042
并且其中β为缩放因子。
17.一种装置,包括:
一个或多个处理器:
确定第一数将与第二数相乘;并且
执行乘法和累加运算即MAC运算,以将所述第一数与所述第二数相乘,其中执行所述MAC运算包括:
确定与所述第一数相关联的量化级别的索引,其中所述索引由“m”个位来表示,其中所述量化级别由“l”个位来表示,并且其中“l”大于“m”,
通过在表的查找中至少使用所述索引来确定“r”组“k”位,其中“r*k”等于“l”并且其中“l”个位包括所述“r”组“k”位,并且
在应用到输入缓冲区的移位运算和累加运算中使用所述“r”组“k”位,所述输入缓冲区存储所述第二数的位表示。
18.根据权利要求17所述的装置,进一步包括:人工智能推理引擎即AI推理引擎,其中所述第一数包括AI模型的权重,其中所述第二数包括所述AI模型的变换函数的变量,并且其中所述变换函数包括将所述变量与所述权重相乘。
19.根据权利要求17所述的装置,其中使用所述“r”组“k”位包括:
基于所述表的查找,确定来自所述“r”组“k”位的第一组,其中所述第一组包括“l”个位中的“k”个位并且其中“k”小于“l”,
将所述输入缓冲区移位所述第一组的“k”个位,并且
在累加器缓冲区中累加被移位后的输入缓冲区。
20.根据权利要求19所述的装置,其中使用所述“r”组“k”位进一步包括对所述“r”个组中的每个剩余的组重复进行所述移位运算和所述累加运算。
CN202111126072.7A 2020-11-06 2021-09-26 低功率、低内存乘法和累加(mac)单元 Pending CN114442994A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/091,970 US11550545B2 (en) 2020-11-06 2020-11-06 Low-power, low-memory multiply and accumulate (MAC) unit
US17/091,970 2020-11-06

Publications (1)

Publication Number Publication Date
CN114442994A true CN114442994A (zh) 2022-05-06

Family

ID=81362649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111126072.7A Pending CN114442994A (zh) 2020-11-06 2021-09-26 低功率、低内存乘法和累加(mac)单元

Country Status (2)

Country Link
US (1) US11550545B2 (zh)
CN (1) CN114442994A (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835724A (en) * 1985-09-27 1989-05-30 Cogent Systems, Inc. Apparatus and method of quantizing a set of weights for a weighted sun signal processing system
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
KR20200053886A (ko) 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
US11488016B2 (en) 2019-01-23 2022-11-01 Google Llc Look-up table based neural networks
US10872295B1 (en) * 2019-09-19 2020-12-22 Hong Kong Applied Science and Technology Institute Company, Limited Residual quantization of bit-shift weights in an artificial neural network
US20210397414A1 (en) * 2021-06-25 2021-12-23 Intel Corporation Area and energy efficient multi-precision multiply-accumulate unit-based processor

Also Published As

Publication number Publication date
US20220147315A1 (en) 2022-05-12
US11550545B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
CN110222821B (zh) 基于权重分布的卷积神经网络低位宽量化方法
US20190164043A1 (en) Low-power hardware acceleration method and system for convolution neural network computation
CN110852416B (zh) 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统
CN113424202A (zh) 针对神经网络训练调整激活压缩
Kim et al. Low-power implementation of Mitchell's approximate logarithmic multiplication for convolutional neural networks
CN115841137A (zh) 一种用于对待量化数据进行定点化处理的方法及计算装置
US10872295B1 (en) Residual quantization of bit-shift weights in an artificial neural network
CN111401550A (zh) 神经网络模型量化方法、装置及电子设备
CN110852434B (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
CN105260776A (zh) 神经网络处理器和卷积神经网络处理器
CN110036384B (zh) 信息处理设备和信息处理方法
CN113273082A (zh) 具有异常块浮点的神经网络激活压缩
CN113348474A (zh) 具有非均匀尾数的神经网络激活压缩
CN112785597A (zh) 识别图像的方法和系统
Langroudi et al. Cheetah: Mixed low-precision hardware & software co-design framework for dnns on the edge
Langroudi et al. Positnn framework: Tapered precision deep learning inference for the edge
CN114341892A (zh) 具有用于高效参数更新的降低精度参数分量的机器学习硬件
WO2022168604A1 (ja) ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム
CN112119407A (zh) 由补偿指令使能的低精度深度神经网络
Zhang et al. Low-precision stochastic gradient langevin dynamics
Kulkarni et al. A survey on quantization methods for optimization of deep neural networks
Kummer et al. Adaptive Precision Training (AdaPT): A dynamic quantized training approach for DNNs
CN112686384A (zh) 一种自适应比特位宽的神经网络量化方法及其装置
CN114442994A (zh) 低功率、低内存乘法和累加(mac)单元
CN111492369A (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